3.使用 ndisasm 反汇编 boot.bin
使用 ndisasm 反汇编 boot.bin
ndisasm 是 NASM 自带的反汇编工具,非常适合 16 位实模式代码,输出接近 Intel 语法,更易于与源码对照。
一、反汇编命令
1 | ndisasm -b 16 boot.bin |
- -b 16:指定 16 位模式
- boot.bin:目标二进制文件(纯启动扇区)
二、反汇编结果示例
以打印 "Hi" 的 bootloader 为例:
1 | 00000000 B40E mov ah,0Eh |
三、关键解析
- 偏移地址
- 输出左侧是二进制文件偏移,0x0000 开始
- BIOS 加载到 0x7C00 内存,所以实际运行地址 = 偏移 + 0x7C00
- 指令对应源码
mov ah,0Eh→ 源码mov $0x0e,%ahmov al,'H'→ 源码mov $'H',%al
- 启动标志 0xAA55
- 文件末尾两字节
55 AA是 BIOS 标识 - 反汇编显示为
push bp和stos byte [es:di] - 这部分不是可执行指令,仅供 BIOS 校验
- 文件末尾两字节
四、优势
- 输出格式为 Intel 语法,易于与源码对照
- 对 16 位实模式非常友好
- 可直接验证 bootloader 指令是否正确
- 填充、跳转及启动标志等都能直观查看
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
