4.4 程序的机器级代码
最后更新于
最后更新于
ADD d,s #(d)+(s)→(d)
SUB d,s #(d)-(s)→(d)
MUL d,s #无符号数乘法
IMUL d,s #有符号数乘法
DIV s #无符号数除法,被除数隐式存放在EDX:EAX中(位扩展到64位)
IDIV s #有符号数除法,(接上)商存入EAX,余数存入EDX
NEG d #取负数
INC d #自增++
DEC d #自减--AND d,s #与
OR d,s #或
NOT d #非
XOR d,s #异或
SHL d,s #左移
SHR d,s #右移JUMP <addr> #无条件转移指令
CMP a,b #比较a和b两个数
#在比较之后,可以使用以下指令
JE <addr> #a==b 则跳转
JE <addr> #a!=b 则跳转
JE <addr> #a>b 则跳转
JE <addr> #a>=b 则跳转
JE <addr> #a<b 则跳转
JE <addr> #a<=b 则跳转
LOOP <tag> ##自动ecx--,ecx!=0,则跳转到tagint a = 7;
int b=6;
if (a>b){
c=a;
} else {
c=b;
}mov eax,7
mov abx,6
cmp eax,ebx
jg NEXT
mov ecx,ebx
jmp END
NEXT:
mov ecx,eax
END:int result = 0;
for (int i=1; i<=100; i++){
result+=1;
}#循环初始化
mov eax,0
mov edx,1
#检测是否直接跳出循环
cmp edx,100
jg L2
#循环主体
L1:
add eax,edx
inc edx
#是否继续循环
cmp edx,100
jle L1
#跳出循环
L2:mov eax,0
mov edx,1
mov ecx,100 #循环100次
Looptop:
add eax,edx
inc edx
loop Looptop