目录 上一页 下一页 下一章

-58- PC机汇编语言实战精解














delay:






main
code

mov
out
mov
out
mov
out
in
or
out
mov
int
add
mov
int
cmp
jne
in
and
out
int
endp
ends
end
al,10110110b
43h,al
ax,4a9h
42h,al
al,ah
42h,al
al,PORT_B
al,3
PORT_B,al
ah,0
1ah
dx,91
bx,dx
1ah
dx,bx
delay
al,PORT_B
al,0fch
PORT_B,al
20h


main
;初始化定时器

;设置N值为04A9H



;打开定时器及与门

;以下为定时部分
;选择1AH中断的0号功能
;调用1AH中断取得当前时钟计数
;在当前时钟计数上加91
;保存定时终了时的计数值
;两次调用1AH中断取得时钟计数值
;到达定时终了时的计数值了吗?
;没有到达,则返回DELAY处继续
;定时终止,关闭定时器及与门


;结束程序


  ADD指令和我们前面讨论的SUB指令是相对的,这两条指令在应用时要注意这样一点--相加的两个数据位宽要一致。象这样的用法都是不对的:

ERROR!!!
ADD AH,0FC00H ADD AH,BX

  程序使用了一个新的中断--INT 1AH的0号功能取得时钟计数值。1AH中断的用法如下所示:
功能号:0
用 途:读取时钟计数值
参 数:AH=0
调 用:INT 1AH
返 回:CX = 计数值高16位
    DX = 计数值低16位
    AL = 0 表示未过24小时
    AL <> 0 表示已过24小时
  这个中断还有一个设定计时值的功能,这里不再给出。
  由于5秒钟对应计数值是91,因此这个程序先用1AH中断取得当前计数值,并在低16位上加

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章