
书: https://pan.baidu.com/s/1LWWovU7IScpiddLrDhjl1w?pwd=pc5n
笔记如下:
- 寄存器基础:
- 通用寄存器(AX, BX, CX, DX)及分段(AH/AL)
- 指针寄存器(SP, BP)与变址寄存器(SI, DI)
- 段寄存器(CS, DS, SS, ES)的作用
- 内存寻址模式:
- 立即寻址
MOV AX, 1234H
- 直接寻址
MOV AX, [2000H]
- 寄存器间接寻址
MOV AX, [BX]
- 基址变址寻址
MOV AX, [BX+SI+10H]
- 数据传送指令:
MOV
限制(不能内存到内存直接传输)XCHG
交换数据LEA
取有效地址
- 算术运算指令:
ADD/SUB
影响标志位(CF, ZF, SF)MUL/DIV
隐含使用AX/DX:AXINC/DEC
不改变CF标志
- 逻辑与移位指令:
AND/OR/XOR/NOT
位操作SHL/SHR
逻辑移位SAR
算术右移(保留符号位)
- 程序控制指令:
- 无条件跳转
JMP label
- 条件跳转
JE/JZ
(相等),JB
(低于) - 循环控制
LOOP/LOOPZ
- 过程调用机制:
CALL/RET
配合堆栈操作- 参数传递约定(寄存器/堆栈)
- 保护现场(PUSH/POP寄存器)
- 中断处理:
- 软中断
INT 21H
系统调用 - 中断向量表(IVT)结构
- 自定义中断服务程序(ISR)
- 宏汇编技术:
- 宏定义
MACRO/ENDM
- 条件汇编
IF/ELSE/ENDIF
- 重复块
REPT/IRP
- 文件操作(DOS功能调用):
- 打开文件
MOV AH,3DH
- 读写文件
MOV AH,3FH/40H
- 关闭文件
MOV AH,3EH
- 打开文件
- 字符串操作指令:
- 方向标志
CLD/STD
- 重复前缀
REP MOVSB
LODSB/STOSB
单字节处理
- 方向标志
- 堆栈帧结构:
- 入口参数访问
[BP+4]
- 局部变量分配
SUB SP,10
- 堆栈平衡原则
- 入口参数访问
- 保护模式基础:
- 描述符表(GDT/LDT)
- 选择子与段权限级
- 平坦内存模型
- 浮点运算:
- FPU寄存器栈(ST0-ST7)
FADD/FMUL
浮点指令- 数据转换
FILD/FISTP
- MMX/SSE指令集:
- 64位打包数据处理
PADDB
并行加法- 数据对齐要求
- BIOS功能调用:
- 显示服务
INT 10H
- 键盘输入
INT 16H
- 时钟服务
INT 1AH
- 显示服务
- 调试技巧:
- Debug工具使用(U, D, T, G)
- 断点设置
INT 3
- 寄存器状态检查
- 模块化编程:
- 多文件链接(PUBLIC/EXTERN)
- 库文件生成与使用
- 段定义对齐
- 性能优化:
- 指令流水线冲突避免
- 寄存器复用策略
- 循环展开技术
- 现代扩展:
- 内联汇编(C/C++嵌入)
- 逆向工程中的应用
- 漏洞分析中的汇编审计