汇编语言中,怎么实现等待功能?

比如等待5秒后,程序继续执行。... 比如等待5秒后,程序继续执行。 展开
 我来答
路人甲_725
推荐于2018-03-29
知道答主
回答量:19
采纳率:100%
帮助的人:0
展开全部
不知道你是说的单片机里的还是微机原理的,两种情况指令不同。
微机原理的就用LOOP指令就可以了。
我给一个单片机的子程序吧,直接调用就行了,修改#后面的数就能修改延时时间了,不够的话可以再加一层D3:。。。。。
DELAY:MOV R0,#65H
D2: MOV R1,#65H
D1: DJNZ R1,D1
DJNZ R0,D2
RET
追问
我问的是微机里面的。

为什么用LOOP指令可以呢?反复的循环就可以让时间等待,可是怎么确保时间的精确性,比如只想等待5秒钟。或5毫秒。
追答
loop指令就是循环做一件事,就像要求你从宿舍到教室,但必须绕操场跑10圈才能进教室,跑10圈得时间就是你延时的时间。比如:
MOV CX,16EAH
DELAY:LOOP DELAY
.......这两条指令就实现了延时,LOOP指令是根据CX的值循环执行,执行一次,CX自动减1,只要CX不为0,就继续执行,知道CX=0,就跳出循环往下继续执行。延时时间和CUP的时钟频率有关。LOOP指令占5个时钟周期,可根据时钟频率计算。像对于8086CPU来说,它的频率是5MHz,时钟周期200ns。(根据时钟周期计算CX的值)
不过LOOP一般只是用来示意性的延时,很少用来准确延时。如果要精确延时的话,最好用中断。
AJISky
2011-03-18 · TA获得超过1122个赞
知道小有建树答主
回答量:457
采纳率:100%
帮助的人:247万
展开全部
延迟程序吧,如果是程序等待五秒并且无需操作自动运行,只需要你写个延迟程序
比如
delay proc
mov cx,0ffffh
loop $
ret
delay endp
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangshuai169
2011-03-18 · TA获得超过157个赞
知道答主
回答量:325
采纳率:0%
帮助的人:247万
展开全部
就是延时5秒啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式