|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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里调试发现取不出数来,看了下别人的方法,有的人方法很好,我这方法虽然有点笨,但逻辑应该也没搞错啊,为什么会取不出数来呢? |
|