0156-生成啟動文件
2023-08-12 09:07 作者:jiangbo4444 | 我要投稿
環(huán)境
Time 2022-11-06
WSL-Ubuntu 22.04
NASM 2.15.05
前言
說明
參考:《x86匯編語言:從實模式到保護(hù)模式》李忠?
參考:https://wiki.osdev.org/Boot_Sequence
如果計算機使用的 BIOS 啟動,那么在開機自檢后,會去查找啟動盤。 如果做一個啟動盤,就可以讓 CPU 執(zhí)行匯編指令了。
目標(biāo)
生成一個可以被引導(dǎo)的文件。
主引導(dǎo)記錄
來源:https://wiki.osdev.org/Boot_Sequence
從這里看出,主引導(dǎo)記錄可以啟動,至少需要 512 字節(jié),在 510 處是 0x55,在 511 處是 0xAA。 并且會被 BIOS 加載到物理地址為 0x7c00 的地方。(段和偏移之后學(xué))
匯編程序
times 偽指令是重復(fù)指令多少次,上面的意思是重復(fù) 508 次 db 指令。 db 偽指令使用后面的數(shù)據(jù)填充一個字節(jié)。 上次看過了 move al,4 為兩個字節(jié),加上 508 個字節(jié),再加最后的兩個字節(jié),共 512 字節(jié)。 并且也滿足了在 510 處是 0x55,在 511 處是 0xAA(偏移量從 0 開始)。
編譯和查看
可以看到 main 二進(jìn)制文件,確實是 512 字節(jié)。文件的二進(jìn)制碼如下:
總結(jié)
通過匯編程序,生成了一個可以啟動的二進(jìn)制文件。
附錄
標(biāo)簽: