;该实验中使用了call-ret结构来调用十进制转换函数convert和屏幕显示函数show。同时使用了cmp来比较判断是否输入'/'还是':'。
;在屏幕的中间位置显示时间
assume cs:code
code segment
start:
;get year,month,day data
mov di,0
mov dl,9
mov cx,6
s:
mov al,dl
out 70h,al
in al,71h
call convert ;convert to tens digits
call show ;show the data in screen
loop s
mov ax,4c00h
int 21h
convert:
push cx
mov cx,0
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
pop cx
ret
show:
mov bx,0b800h
mov es,bx
mov byte ptr es:[160*12 + 40*2 + di],ah
mov byte ptr es:[160*12 + 40*2 + di + 2],al
cmp dl,7
ja next01
cmp dl,7
je next02
cmp dl,7
jb next03
next01:
mov byte ptr es:[160*12 + 40*2 + di + 4],'/'
add di,6
dec dl
ret
next02:
mov byte ptr es:[160*12 + 40*2 + di + 4],' '
add di,6
mov dl,4
ret
next03:
cmp dl,0
je next02
mov byte ptr es:[160*12 + 40*2 + di + 4],':'
add di,6
sub dl,2
ret
code ends
end start