以”年/月/日 时:分:秒“的形式,显示当前的日期和时间
核心就是利用好in/out 的机制,通过访问不同的端口,获得年月日分秒,然后通过bcd码转化,将其通过ascii码的形式保存到显存区中。代码如下
assume cs:code,ds:data
data segment
db 9,8,7,4,2,0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov bx,0b800h
mov es,bx
mov di,160*12+40*2
mov cx,3
s:dec cx
mov dx,cx
mov al,[si]
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b;ah为十位数,al为个位数
add ah,30h
add al,30h
mov cx,dx
mov byte ptr es:[di],ah
mov byte ptr es:2[di],al
jcxz s1
mov byte ptr es:4[di],'/'
add di,6
inc si
jmp s
s1:add di,4
inc si
mov byte ptr es:[di],20h
add di,2
mov cx,3
s2:dec cx
mov dx,cx
mov al,[si]
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b;ah为十位数,al为个位数
add al,30h
add ah,30h
mov cx,dx
mov byte ptr es:[di],ah
mov byte ptr es:2[di],al
jcxz ok
mov byte ptr es:4[di],':'
add di,6
inc si
jmp s2
ok:mov ax,4c00h
int 21h
code ends
end start
执行结果: