欢迎光临散文网 会员登陆 & 注册

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 字节。文件的二进制码如下:

总结

通过汇编程序,生成了一个可以启动的二进制文件。

附录


0156-生成启动文件的评论 (共 条)

分享到微博请遵守国家法律