
书: 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++嵌入)
- 逆向工程中的应用
- 漏洞分析中的汇编审计