本文详细介绍定时器时间数据转换子程序分析
进日,我在看一时钟TSR程序,分析其中一个把BIOS数据区中的定时器数据转换成HH:MM:SS时间格式的数据(ASCII)的程序片段时,既学到一点东西,又发现了一写自己弄不明白的问题。现在我把自己学到的好东西写出来与大家分享,同时向各路高手请教请教。
程序片段如下:(汇编语言程序)
... (省略)
HMS db 8 dup(':')
...
time proc
lea di,position ;(1) --行号
mov ax,0 ;(2)
mov ds,ax ;(3)
mov al,ds:[46eh] ;(4)
call clk1 ;(5)
mov ax,ds:[46ch] ;(6)
mov dx,0 ;(7)
mov bx,444h ;(8)
call clk0 ;(9)
mov ax,dx ;(10)
mov cx,3ch ;(11)
mul cx ;(12)
clk0:
add di,3 ;(13)
div bx ;(14)
clk1:
aam ;(15)
add ax,3030h ;(16)
xchg ah,al ;(17)
mov cs:[di],ax ;(18)
ret ;(19)
time endp程序片段实现的原理是把BIOS的INT 1CH时钟控制中断在BIOS数据区建立的0040:006CH(低字) 和0040:006EH(高字)单元32位时间数字计数器中的数值用一种比较简明的方式转换成HH:MM:SS时间格式(为ASCII字符),再用另一显示子程序把转换好的字符传显示在屏幕上。
责编:豆豆技术应用
正在加载评论...