| OF | DF | IF | TF | SF | ZF | AF | PF | CF |
|---|---|---|---|---|---|---|---|---|
| 溢出 | 方向 | 中断标志位 | 陷阱标志位 | 符号 | 零 | 辅助进位 | 奇偶 | 进位 |
| 有符号加减法 | CLD STD | 负数1 | 运算结果 | 字操作 | 结果中最高位 | |||
汇编语言
MOV指令->相当于C语言赋值 目的操作数,源操作数
eg:MOV eax,3
XCHG指令
交换两个寄存器或地址的值
XCHG 目的操作数,源操作数
注意:内存和内存之间交换不允许
LEA指令
装入有效的地址,将内存单元的地址送到指定的寄存器
逻辑运算指令
1.AND指令
逻辑按位与运算
将目的操作数中的每个数据位与源操作数中的对应数进行逻辑与操作
对应位都为一则为1,其他为0
2.OR指令
或运算
对应位都为0则为0,其他为1
3.xor指令
相同为0,不同为1
特殊的用法
and eax,0->置零
and 保留
or 置位
XOR eax,eax 清零
算数运算
ADD EAX,EBX
ADC=目的操作数+源操作数+cf位的值
SBB带错位的减法
SUB->减法
INC加一指令(运行速度更快)
DEC减一指令
堆栈操作
后进先出的数据结构
内存->从高地址向低地址分配
1.临时传递数据
2.高级语言传递参数
push
[图片未同步]
[图片未同步]
[图片未同步]
[图片未同步]
pop
入栈 esp-4
转移指令
jmp
无条件转移指令
Jcc指令(有条件)
test指令
逻辑与运算
CMP两个操作数比较
目的操作数和源操作数的减法操作
循环
loop: loop 标号 指令的循环次数存放在cx寄存器中,其基本原理为:
-
(cx) = (cx) -1;
-
(1)如果 (cx) != 0,则 (IP) = (IP) + 8位位移,控制CPU回到标号处执行指令。
(2)如果 (cx) = 0,什么都不做,程序继续往下顺序执行指令。
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/d704791892/article/details/141197963
循环控制
ecx-1
call指令
调用过程中把下一条指令压入栈底,遇到ret弹出
寻址方式
1.数据在指令中直接给出
2.数据在寄存器中给出
3.数据在内存中给出
1.立即数寻址
mov eax,006f1dba
2.寄存器寻址
mov esi,eax
3,内存中给出
3.1直接寻址
mov[012FFEB0],112345678
3.2寄存器间接
mov edx,[eax]
3.3其他
[寄存器+立即数]
[寄存器+寄存器+数据宽度]
相关条目
- Destination 逆向题解
- 花指令