循环指令,由CX里的值来决定是否跳转到标号位置,如果[CX]!=0,则表示还有循环次数,则会跳转到标号位置,否则,不会跳转到标号位置
LOOP的实现方式是偏移量,而不是目的地址
cpu执行loop指令的时候会分下面3个步骤(注意顺序):
1.cx=cx-1
2.如果cx不等于0
3.ip=ip+偏移量(8086下:-128到+127)
下面的代码会打印出3
#include <stdio.h>
#include <iostream>
int main() {
int a = 0;
_asm {
mov ecx,3;
mov eax, 0
abc:inc eax
loop abc
mov a,eax
}
std::cout << a << std::endl;
}