遒羽 发表于 2013-3-4 19:51:07

请教访问CMOS RAM显示当前日期时间的一个代码

本帖最后由 遒羽 于 2013-3-4 20:00 编辑

;以“年/月/日 时:分:秒”的格式,显示当前的日期,时间assume cs:code
code segment
start:      mov ax,0
                mov al,9;先访问年
                mov si,0
                mov cx,6      ;6种数据循环6次
      s:      push cx
                push ax
                out 70h,al
                in al,71h
                mov ah,al
                mov cl,4
                shr ah,al
                and al,00001111b
                add ah,30h
                add al,30h
                mov bx,0b800h
                mov es,bx
                mov byte ptr es:,ah
                mov byte ptr es:,al
                pop ax
                dec ax                ;指向前一数据单元
                jmp s1               
      s0:      pop cx
                add si,6
                loop s
                mov ax,4c00h
                int 21h
      s1: cmp ax,10   ;
                ja,s0
                cmp ax,0
                je s0
                cmp ax,6
                ja s2                ;ax>6,跳到年月日那边显示‘/’
                je s3                ;ax=6,跳到日结尾显示空格
                je s4                ;ax<6,跳到时分秒那边显示‘:’
      s2: mov byte ptr es:,'/'
                jmp s0
      s3: sub ax,2
                jmp s0
      s4: sub ax,1
                mov byte ptr es:,';'
                jmp s0
code ends
end start请教 :代码中03    mov ax,0是不是用来指示当前屏幕显示的位置??      
         代码中22   dec ax ;指向前一数据单元          怎么 解释??ax一开始存放0,自减一次有什么意义呢??
          代码中33    s1循环中为什么用cmp ax,10????


谢谢!!


半生缘 发表于 2013-3-4 19:51:08

代码11: shr ah,al 应该是 shr ah,cl 吧 左移四位
mov ax,0 mov al,9
我习惯 mov ax,9 ok
好像 写mov ax,0这个没用吧

上一个指向9
现在减一 当然指向前一个 单元8了

就我认为 好像真没啥用 ax 会大于10吗?
话说 如果 只写mov al,9 还真没准 大于10;

s3 少写 打印空格的内容了吧 看来是我错了 什么都不打就是空格:L
还有你上边19;20 行不需要 si吗???
1.ax 开始存 9 年
2.减一次 1 是8 月>6 跳 s2
3.再减一次 是7 日>6 跳 s2
4.再减一次 是6 等于6跳到 s3 又减了个 2 是4 时
5.再减一次 是3 小于6跳到 s4 又减了个 1 是2 分 s4这里应该是 jl吧小于吗不是
6.再减一次 是1 小于6跳到 s4 又减了个 1 是0 分
7.再减一次 小于零 跳 s0 cx =0 退出 loop s
结束

遒羽 发表于 2013-3-26 20:26:47

半生缘 发表于 2013-3-4 19:51 static/image/common/back.gif
代码11: shr ah,al 应该是 shr ah,cl 吧 左移四位
mov ax,0 mov al,9
我习惯 mov ax,9 ok


多谢你的精彩回答!!
页: [1]
查看完整版本: 请教访问CMOS RAM显示当前日期时间的一个代码