本帖最后由 遒羽 于 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????
谢谢!!
|