用汇编语言编写一个延时1S的子程序

用汇编语言编写一个延时1S的子程序,第1张

程序通过编译,运行正确

Code Segment

Assume CS:Code,DS:Code

-----------------------------------------

Subroutine 延时指定的时钟嘀嗒数

入口:

Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)

Delay1S Proc Near

push dx

push cx

xor ax,ax

int 1ah

mov Times,dx

mov Times[2],cx

Read_Time: xor ax,ax

int 1ah

sub dx,Times

sbb cx,Times[2]

cmp dx,Didas

jb Read_Time

pop cx

pop dx

ret

Times dw 0,0

Delay1S EndP

-----------------------------------------

Didas equ 18

Start:call Delay1S

Exit_Proc: mov ah,4ch 结束程序

int 21h

CodeENDS

ENDStart 编译到此结束

延时1s计算方法是将所有指令执行时间相加得出的。比如:

dly1s:

mov

r2,#10

1

dly1:

mov

r3,#200

1*10

dly2:

mov

r4,#248

1*200*10

djnz

r4,$

2*248*200*10

djnz

r3,dly2

2*200*10

djnz

r2,dly1

2*10

ret

2

total=1+10+2000+992000+4000+20+2=998033

如果使用12m晶振,那么延时时间为0.998秒。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7697060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存