【任务】
编程序,访问CMOS RAM,在屏幕最左上角,动态显示当前分、秒。
【参考程序】
assume cs:code
code segment
start:mov al,2 ;分
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 bx,0b800h
mov es,bx
mov byte ptr es:[0],ah
mov byte ptr es:[1],01001111b
mov byte ptr es:[2],al
mov byte ptr es:[3],01001111b
mov byte ptr es:[4],':'
mov byte ptr es:[5],01001111b
mov al,0 ;秒
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 bx,0b800h
mov es,bx
mov byte ptr es:[6],ah
mov byte ptr es:[7],01001111b
mov byte ptr es:[8],al
mov byte ptr es:[9],01001111b
jmp start
mov ax,4c00h
int 21h
code ends
end start
【说明】
上述程序在功能、性能方面存在诸多不足,你可以以此为起点进行改造,做出更实用的程序。例如:
- 功能上的扩充:显示年月日,显示成汉字!
- 性能上,不要独立占CPU,想退出时能退出。
- 机制上,允许中断处理转做其他处理,用中断显示,而不是直接写显存……