|
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.再减一次 是 ...
|