目录 上一页 下一页 附录A

第11章 更高级的技术 -303-

按下[PrtSc]键,此时屏幕上所有的文字都被保存在一个名为TEXT.SCR的文本文件中,使用TYPE命令或EDIT程序可以观察到抓到的内容。
  (3)08H中断
  前面讨论定时器时对08H中断做过介绍,这个中断是定时电路的通道0控制,每一秒中产生18.2次,每两次之间的时间间隔为55Ms。它的服务程序控制着BIOS数据区中的一个双字变量,每执行一次就将这个变量加1。同时它还控制着软盘驱动器的马达,软驱工作完毕后总要隔2秒钟左右才会停转,这2秒的延时就是由08H中断控制的。
  重新编制08H中断服务程序可以很方便地完成精确定时,最重要的是用这种方法定时不需要CPU循环等待。如果把CPU比作一个正在忙于工作的人,那么这个"人"实际上是一边做本职工作一边每隔55Ms看一下"表"。当到达预定时间后他会转去做另一件事,然后再回来继续工作。请大家仔细分析下面这个程序的运行情况:
TIMER.ASM
code


main

counter
attrib
old08
new08:



















segment
assume
org
proc
jmp
db
db
dd

push
push
push
push

pushf
call

mov
inc
cmp
jnz

mov
mov
mov

mov


cs:code,ds:code
100h
near
install
?
0
?

ax
cx
es
di


dword ptr cs:[old08]

al,cs:[counter]
al
al,18
exit

ax,0b800h
es,ax
di,0

al,cs:[attrib]





;跳转至驻留程序的安装部分
;定义一个计数器
;字符属性字节
;原08H中断向量

;保存寄存器




;标志寄存器入栈
;调用原08H中断服务程序

;取得计数值
;计数值加1
;计到1秒钟了吗?
;未到1秒钟,转EXIT退出服务程序

;ES:DI向显示缓冲区



;取得属性字节

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 附录A