0156-生成启动文件
2023-08-12 09:07 作者:jiangbo4444 | 我要投稿
环境
Time 2022-11-06
WSL-Ubuntu 22.04
NASM 2.15.05
前言
说明
参考:《x86汇编语言:从实模式到保护模式》李忠
参考:https://wiki.osdev.org/Boot_Sequence
如果计算机使用的 BIOS 启动,那么在开机自检后,会去查找启动盘。 如果做一个启动盘,就可以让 CPU 执行汇编指令了。
目标
生成一个可以被引导的文件。
主引导记录
来源:https://wiki.osdev.org/Boot_Sequence
从这里看出,主引导记录可以启动,至少需要 512 字节,在 510 处是 0x55,在 511 处是 0xAA。 并且会被 BIOS 加载到物理地址为 0x7c00 的地方。(段和偏移之后学)
汇编程序
times 伪指令是重复指令多少次,上面的意思是重复 508 次 db 指令。 db 伪指令使用后面的数据填充一个字节。 上次看过了 move al,4 为两个字节,加上 508 个字节,再加最后的两个字节,共 512 字节。 并且也满足了在 510 处是 0x55,在 511 处是 0xAA(偏移量从 0 开始)。
编译和查看
可以看到 main 二进制文件,确实是 512 字节。文件的二进制码如下:
总结
通过汇编程序,生成了一个可以启动的二进制文件。