如我们所知,loop X
指令在X
之前已经过ECX = 0
。
我的问题 - 循环指令首先执行的操作:递减ECX,或检查ECX == 0.
意思是,以下内容是核心
第一
ECX = ECX - 1;
if ECX > 0
go to X
第二
if ECX > 0 {
ECX = ECX - 1;
fo to x; }
感谢。
答案 0 :(得分:3)
第一个。来自英特尔的手册2A:
每次执行LOOP指令时,计数寄存器递减,然后 检查0.如果计数为0,则循环终止并执行程序 继续LOOP指令后的指令。如果计数不为零, 对目的地(目标)操作数执行近似跳转,这可能是 循环开始时的指令。