汇编指令集合

最近在师傅的领导下着手学习逆向课程,接触了许多汇编语句,开个帖记录一下。

pushad:将8个寄存器的值存入内存

popad:将原寄存器中的值从内存中取出后复原

adc:带进位加法(加上C寄存器)

sbb:带进位减法(加上C寄存器)

xchg:交换寄存器的值

movs:移动数据 内存-内存

byte:movsb - movs byte ptr ds:[edi],byte ptr ds:[esi]
word:movsw - movs word ptr ds:[edi],word ptr ds:[esi]
dword:movsw - movs dword ptr ds:[edi],dword ptr ds:[esi]

STOS:将Al/AX/EAX的值存储到[EDI]指定的内存单元

stosb:stos byte ptr es:[edi]
stosw:stos word ptr es:[edi]
stosd:stos dword ptr es:[edi]

rep:按计数寄存器(ECX)中指定的次数重复执行字符串指令

jmp:修改eip的值,其他寄存器都不变

call:修改eip,栈顶esp-4

retn:相当于pop eip指令,出栈,回到esp+4处,栈顶+4

cmp:比较两个数,若相等,z寄存器为1

若第一个数小于第二个数,s寄存器为1,否则为0

test:确定寄存器是否为0,相当于与运算,观察z位是否为0

xor eax,eax:将eax寄存器的值清零

rep stos 实例:

mov ecx,0x13    //0x13存入ecx
mov eax,0xCCCCCCCC    //0xCCCCCCCC存入eax

rep stos dword ptr es:[edi]    //重复执行ecx的值为次数(rep),将eax的值存入edi(stos)

此实例主要用于填充缓冲区,作用一是清除缓冲区之前的垃圾数据,作用二是为了防止缓冲区溢出(eax存入的0xCCCCCCCC为int3)

imul指令:有符号乘,影响 OF、CF 标志位

如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX

如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX

如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值