汇编语言
汇编语言
配置安装
| |
| |
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)