鱼C论坛

 找回密码
 立即注册
查看: 2624|回复: 2

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

[复制链接]
发表于 2013-3-4 19:51:07 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 遒羽 于 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:[160*12+40*2],ah
                mov byte ptr es:[160*12+40*2+2],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:[160*12+40*2+4][si],'/'
                jmp s0
        s3: sub ax,2
                jmp s0
        s4: sub ax,1
                mov byte ptr es:[160*12+40*2+4][si],';'
                jmp s0
code ends
end start
请教 :代码中03    mov ax,0是不是用来指示当前屏幕显示的位置??      
           代码中22     dec ax ;指向前一数据单元          怎么 解释??ax一开始存放0,自减一次有什么意义呢??
            代码中33    s1循环中为什么用cmp ax,10????


谢谢!!


最佳答案

查看完整内容

代码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.再减一次 是 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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
结束

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-26 20:26:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 22:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表