OD指令说明

本文详细介绍了OD指令的使用,包括其在编辑器中的功能、操作步骤和常见应用场景,帮助读者掌握这一实用工具。
摘要由CSDN通过智能技术生成
OD汇编指令
NOP 无操作
PUSH 将数据压如堆栈中
POP 出栈(与PUSH相反)
PUSHAD 所有通用寄存器的内容按一定顺序压入到堆栈中,相当于’PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI, PUSH EDI’
POPAD 该指令与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中,等价于“POP EDI,POP ESI,POP ESP,POP ESP,POP EBX,POP EDX,POP ECX,POP EAX”
MOV 该指令将第二个操作数赋值给第一个操作数
MOV EAX, EBX          释:EBX值赋值给EAX
MOVSX
(带符号扩展的传送指令)
第二个操作数可能是一个寄存器也可能是一个内存单元,第一个操作数的位数比第二个操作数多,第二个操作数的符号位填充第一个操作数剩余部分
MOVZX
(带0扩展的传送指令)
类似于MOVSX,但是这种情况下剩余的部分不根据操作数的正负来进行填充,剩余的部分总是被填充为0
LEA
(取地址指令)
类似于MOV指令, 但是第一个操作数是一个通用寄存器,并且第二个操作数是一个内存单元。当计算的时候要依赖于之前的结果的话,那么这个指令就非常有用
XCHG 交换 寄存器/内存单元 和 寄存器
OD数学指令
INC 执行增加,如果是INC指令的话,就加1
DEC 执行减少,如果是DEC指令的话,就减1
ADD ADD指令有两个操作数,相加后的结果存放到第一个操作数中,ADD EAX,1等价于INC EAX
ADC
(带进位的加法)
两个操作数的和加上进位标志的值,结果存放到第一个操作数中
SUB 这个指令与ADD刚好相反,它将第一个操作数减去第二个操作数的值存放到第一个操作数中
SBB 该指令跟ADC正好相反,它计算两个操作数的差值,并且还要减去进位标志,结果存放到第一个操作数中
MUL
(无符号数的乘法)
有两种乘法:
第一种只有一个操作数,另一个操作数是EAX,结果存放到EDX:EAX中,比如:MUL ECX
第二种有两个操作数,两个操作数相乘,结果存放于EDX:EAX中,比如:MUL DWORD PTR DS:[405000]
IMUL
(有符号数的乘法)
IMUL指令用法类似于MUL,例如:IMUL ECX 该指令将有有符号数ECX乘以EAX,结果存放到EDX:EAX中
注:
1.除了上面一条指令外,IMUL还允许使用多个操作数,这是与MUL不同的地方
2.尽管在默认情况下是使用EAX和EDX寄存器,但是我们还可以指定其他的数据源以及目标多达三个操作数;例:
0FAF55E8             IMUL EDX, DWORD PTR [EBP-18]        EDX x [EBP-18] -> EDX
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_好多鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值