实验14 访问CMOS RAM
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。
assume cs:code
data segment
data ends
code segment
s1:
start: mov al,9h
mov ah,0
mov cx,6
mov bx,0b800h
mov es,bx
mov si,160*12+30*2
s: push ax
push cx
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
mov byte ptr es:[si],ah
mov byte ptr es:[si+2],al
pop cx
cmp cx,5
jnb gang
cmp cx,4
je kong
cmp cx,1
ja mao
pop ax ;这里显示完最后一个字符,就会跳到这里,要把ax出栈,再跳到ok,否则无限循环时栈中会不断增加内容,在此程序中会把代码段覆盖,导致程序卡死
jmp ok
gang: mov al,2fh
mov byte ptr es:[si+4],al
pop ax
sub al,1
jmp ok ;显示斜杠
kong: mov al,20h
mov byte ptr es:[si+4],al
pop ax
sub al,3
jmp ok ;显示空格
mao: mov al,3ah
mov byte ptr es:[si+4],al
pop ax
sub al,2
jmp ok ;显示冒号
ok: add si,6
loop s
loop s1 ;无限循环
mov ax,4c00h
int 21h
code ends
end start
实验截图:(一直变化)