鱼C论坛

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

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

[复制链接]
发表于 2013-3-4 19:51:07 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 遒羽 于 2013-3-4 20:00 编辑
  1. ;以“年/月/日 时:分:秒”的格式,显示当前的日期,时间
复制代码
  1. assume cs:code
  2. code segment
  3. start:        mov ax,0
  4.                 mov al,9;先访问年
  5.                 mov si,0
  6.                 mov cx,6        ;6种数据循环6次
  7.         s:      push cx
  8.                 push ax
  9.                 out 70h,al
  10.                 in al,71h
  11.                 mov ah,al
  12.                 mov cl,4
  13.                 shr ah,al
  14.                 and al,00001111b
  15.                 add ah,30h
  16.                 add al,30h
  17.                 mov bx,0b800h
  18.                 mov es,bx
  19.                 mov byte ptr es:[160*12+40*2],ah
  20.                 mov byte ptr es:[160*12+40*2+2],al
  21.                 pop ax
  22.                 dec ax                ;指向前一数据单元
  23.                 jmp s1               
  24.         s0:        pop cx
  25.                 add si,6
  26.                 loop s
  27.                 mov ax,4c00h
  28.                 int 21h
  29.         s1: cmp ax,10   ;
  30.                 ja,s0
  31.                 cmp ax,0
  32.                 je s0
  33.                 cmp ax,6
  34.                 ja s2                ;ax>6,跳到年月日那边显示‘/’
  35.                 je s3                ;ax=6,跳到日结尾显示空格
  36.                 je s4                ;ax<6,跳到时分秒那边显示‘:’
  37.         s2: mov byte ptr es:[160*12+40*2+4][si],'/'
  38.                 jmp s0
  39.         s3: sub ax,2
  40.                 jmp s0
  41.         s4: sub ax,1
  42.                 mov byte ptr es:[160*12+40*2+4][si],';'
  43.                 jmp s0
  44. code ends
  45. 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.再减一次 是 ...
小甲鱼最新课程 -> https://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
结束

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-26 20:26:47 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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