马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 疯狂战圣 于 2014-1-2 08:59 编辑
今天在做实验十四,开头就碰上了问题,数没取出来,反复检查也没找出问题所在,代码如下:assume cs:code
data segment
dw 0,0,0,0,0,0 ;定义一个数据段用来暂存取得的时间日期数据
data ends
code segment
start: mov ax,data
mov ds,ax ;DS指向定义数据段
mov ax,0 ;清下零
mov bx,0 ;初始化,用来存放端口的内存偏移地址
mov si,0 ;初始化,用来存放数据段的偏移地址
mov dx,2 ;初始化,用来存放端口的一二次不同的偏移量
mov cx,2 ;分二次循环,一次时间,一次日期
s1: push cx ;保存CX
mov cx,3 ;三次循环。取分,秒,时,和年,月,日
s: mov al,bl ;AL=BL(内存偏移)
out 70h,al ;把AL写入70H端口
in al,71h ;向71H端口读取一个数据放入AL
mov al,[si] ;把AL数据放入数据段
add bx,dx ;端口的内存偏移地址加上端口的内存偏移量
add si,2 ;据数段偏移地址加2
loop s
mov bx,7 ;初始化,第二次循环的端口的内存偏移地址
mov si,6 ;初始化,第二次循环数据段的偏移地址
mov dx,1 ;改变第二次循环的偏移量
pop cx ;恢复CX值
loop s1
mov ax,4c00h
int 21h
code ends
end start
目前只做了取数部分,DEBUG里调试发现取不出数来,看了下别人的方法,有的人方法很好,我这方法虽然有点笨,但逻辑应该也没搞错啊,为什么会取不出数来呢? |