-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 |