1.通用寄存器:
eax 32位
函数返回值
ax 低16位
ah 高8位
al 低8位
ebx 32位
ecx 32位
循环次数
this指针(C++)
edx 32位
ebp 32位 栈底寄存器
esp 32位 栈顶寄存器
esi source
edi destination
eip 程序计数器 无法操作
//使用同一个寄存器实现1+1
xor eax, eax //初始化(异或操作清0)
mov al, 1
mov ah, 1
add ah, al
//使用不同的寄存器实现1 + 2 + 3 + 4
xor eax, eax
mov eax, 1
mov ebx, 2
mov ecx, 3
mov edx, 4
add eax, ebx
add eax, ecx
add eax, edx
//产生溢出
xor eax, eax
mov al, 0xff
add al, 0x1
//这个时候al寄存器的值会被舍掉,也不会产生进位
xor eax, eax
mov al, 0xff
add ax, 0x1
//这个时候会产生进位
1.修改标志寄存器
2.如果只用al寄存器,al会被舍掉
3.如果用ax会产生进位
状态标志寄存器
2.常用汇编指令:
转自:汇编常见指令_汇编指令_poggioxay的博客-优快云博客
3.jcc指令
int a = 10;
if(a == 10)
{
printf("hello\n");
}
//汇编
mov eax, 10
cmp eax, 10
je [0x1000] //跳转到你想执行的指令地址
int a = 0;
for(int i = 0; i < 100; i++)
{
a++;
}
//汇编
mov eax, 0
mov ebx, 0
.loop
add eax, 1
add ebx, 1
cmp ebx, 99
jle .loop