汇编语言
汇编语言
配置安装
|
|
|
|
gdb
|
|
常用gdb调试
|
|
X86体系结构
寄存器
分类 | 英文全称 | 16 位 | 32 位 | 64 位 |
---|---|---|---|---|
通用寄存器 | Accumulator | ax | eax | rax |
通用寄存器 | Base | bx | ebx | rbx |
通用寄存器 | Counter | cx | ecx | rcx |
通用寄存器 | Data | dx | edx | rdx |
指针寄存器:栈指针,指向当前栈顶 | Stack Pointer | sp | esp | rsp |
指针寄存器:基址指针,通常用于访问栈帧中的局部变量 | Base Pointer | bp | ebp | rbp |
变地址寄存器:源变址寄存器 | Source Index | si | esi | rsi |
变地址寄存器:目的变址寄存器 | Destination Index | di | edi | rdi |
控制寄存器:指令指针,指向下一条要执行的指令 | Instruction Pointer | ip | eip | rip |
控制寄存器:标志寄存器,存储 CPU 的状态标志 | Flag | flag | eflag | rflag |
段寄存器 | Code Segment | cs | cs | cs |
段寄存器 | Data Segment | ds | ds | ds |
段寄存器 | Stack Segment | ss | ss | ss |
段寄存器 | Extra Segment | es | es | es |
基本汇编语法
Basic Instruction
|
|
Directive Instruction
定义常量
|
|
定义内存
|
|
寻址模式
立即寻址
|
|
寄存器寻址
|
|
直接寻址
|
|
寄存器间接寻址
|
|
基址加变址寻址
|
|
控制流
比较指令
Bit | Label | Description |
---|---|---|
0 | CF | Carry Flag(进位标志):运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1 |
2 | PF | Parity Flag(奇偶标志):运算结果的所有位中1的个数是偶数置1 |
4 | AF | Auxiliary Carry flag(辅助进位标志位):第3位向第4位发生了进位,那么AF标志位置1 |
6 | ZF | Zero Flag:结果为0,置1 |
7 | SF | Sign Flag:结果为负数(最高位为1),置1 |
8 | TF | Trap Flag:陷阱标志位 ,用于调试,置 1 时单步执行。 |
9 | IF | Interrupt enable Flag:是否响应中断 |
10 | DF | Direction Flag(方向标志位)控制字符串操作的方向(0:递增,1:递减) |
11 | OF | Overflow Flag(溢出标志位) |
12-13 | IOPL | I/O privilege level:控制 I/O 指令的执行权限 |
14 | NT | Nested task |
16 | RF | Resume Flag 用于调试,控制是否忽略断点 |
17 | VM | Virtual-8086 mode:置 1 时进入虚拟 8086 模式 |
18 | AC | Alignment check / Access Control:置 1 时启用对齐检查 |
19 | VIF | Virtual Interrupt Flag:虚拟模式下的中断标志 |
20 | VIP | Virtual Interrupt Pending:虚拟模式下的中断挂起状态。 |
21 | ID | ID Flag :支持 CPUID 指令的标志 |
|
|
对于无符号数字计算,存在以下场景: ZF(Zero Flag), CF(Carry Flag)