我想请教一下有关汇编语言延时子程序的问题?下面的子程序有点看不懂,请大家帮忙解释一下,谢谢!

DELY1:PUSHAX;延时子程序PUSHCXMOVCX,30HDLY1:CALLDELY2LOOPDLY1POPCXPOPAXRETDELY2:PUSHCXMOVCX... DELY1: PUSH AX     ;延时子程序
PUSH CX
MOV CX,30H
DLY1: CALL DELY2
LOOP DLY1
POP CX
POP AX
RET
DELY2: PUSH CX
MOV CX,8000H
LOOP $
POP CX
RET
展开
 我来答
匿名用户
推荐于2018-03-29
展开全部
这个代码其实还是很清楚明了的。
DELY1: PUSH AX ;延时子程序,这里PUSH AX 其实可以不要的,因为AX没有做任何改动
PUSH CX ; 因为使用了CX来计数,所以先保存CX进堆栈
MOV CX,30H ; 循环30H也就是48次
DLY1: CALL DELY2 ; 在次调用一个延时子程序
LOOP DLY1 ; 循环,48次,不到次数则继续循环
POP CX ; 恢复被保护的原来CX的值
POP AX ; 恢复被保护的原来AX的值
RET ; 过程返回
DELY2: PUSH CX ; 内部调用的过程,也需要把CX当前的值保护进堆栈
MOV CX,8000H ; 循环8000H也就是32768次
LOOP $ ; $ 表示当前地址,也就是自己的地址,32768次循环不到则原地踏步
POP CX ; 恢复被保护的CX的值
RET ; 过程返回
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式