loop 指令循环次数问题

rampant 2009-04-08 09:56:47
如下的指令:
MOV CX,02H
A1: ADD AX,01H
LOOP A1

最后 AX 为多少了? 具体执行时候是咋样的? 麻烦重点在LOOP 指令执行上面给解答下。
...全文
1807 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayangcvj 2009-04-08
  • 打赏
  • 举报
回复
这个问题你可以这样理解
LOOP是先执行后判断
即执行完后CX-1然后判断CX是否为零 若CX为零,则停止跳转循环,继续执行下面的程序。
例如两个例子:(你可以理解一下)
(1): MOV CX,0
MOV AL,0
A1: ADD AL,01H
LOOP A1
输出AL=0而不等01H
(2): MOV CX,01H
MOV AL,0
A1: ADD AL,01H
LOOP A1
输出AL=1只循环一次
所以你可以这样理解,循环几次,就给CX辅几次的十进制值,这样利用LOOP循环绝对不会出错
rampant 2009-04-08
  • 打赏
  • 举报
回复
谢谢四楼的。
BAYNPU 2009-04-08
  • 打赏
  • 举报
回复
你再仔细看看上面贴子是怎么讲的.
rampant 2009-04-08
  • 打赏
  • 举报
回复
我理解是这样的,汇编按顺序执行,当执行到LOOP 时,AX已经加1,而此时遇到LOOP ,判断CX是否为0,否则跳到 A1,并且CX减1,再次执行 ADD AX,01H ,在这时 AX 已经加2了,又再次遇到LOOP ,并且此时的 CX 并非为0,所以再跳到A1 ,CX减1,在执行ADD,那么这样下来。就相当于AX加3呀
不知道这样对吗?
BAYNPU 2009-04-08
  • 打赏
  • 举报
回复
最后 AX 为多少了?等于=2
LOOP指令首先将计数值CX减1,然后判断计数值是否为0.CX不为0,则继续执行循环内的指令;CX等于0,表示循环结束,于是程序退出循环,顺序执行后面的指令.
rookie001 2009-04-08
  • 打赏
  • 举报
回复
loop A1 cx不等于零即跳转到A1
前面你设置cx=2,即要循环两次
所以AX在原来的基础上加二

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧