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 |
OD指令说明
最新推荐文章于 2024-08-14 10:11:05 发布
本文详细介绍了OD指令的使用,包括其在编辑器中的功能、操作步骤和常见应用场景,帮助读者掌握这一实用工具。
摘要由CSDN通过智能技术生成