2.編寫主引導記錄MBR

在上一篇博文中(自己寫操作系統–開發環境的搭建與第1個操作系統(完全可復現)),提到了開發環境的搭建和第一個操作系統(其實就是MBR)。
這一篇繼續編寫MBR,但是開發環境有一點的小改動,是在Linux環境下的bochs中進行測試我們寫好的MBR

好了,我們馬上開始。

1. 首先先在Ubuntu中安裝 bochs2.9.6。

sudo apt-get update //先升級一下,以免後續的安裝出錯
接下來的具體過程參考博文:https://blog.csdn.net/Sunnil/article/details/79243192

2.編寫mbr.S彙編文件並編譯爲bin文件

	org	07c00h			; 告訴編譯器程序加載到7c00處
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	call	DispStr			; 調用顯示字符串例程
	jmp	$			; 無限循環
DispStr:
	mov	ax, BootMessage
	mov	bp, ax			; ES:BP = 串地址
	mov	cx, 16			; CX = 串長度
	mov	ax, 01301h		; AH = 13,  AL = 01h
	mov	bx, 000ch		; 頁號爲0(BH = 0) 黑底紅字(BL = 0Ch,高亮)
	mov	dl, 0
	int	10h			; 10h 號中斷
	ret
BootMessage:		db	"Hello, OS world!"
times 	510-($-$$)	db	0	; 填充剩下的空間,使生成的二進制代碼恰好爲512字節
dw 	0xaa55				; 結束標誌

編譯:

nasm boot.asm -o boot.bin

在這裏插入圖片描述

3. 把bin文件寫入虛擬軟盤中

利用上一篇博文中的虛擬軟盤。自己寫操作系統–開發環境的搭建與第1個操作系統(完全可復現)

dd if=boot.bin of=myOS.img bs=512 count=1 conv=notrunc

在這裏插入圖片描述

4. 編寫bochs配置文件

命名爲bochsrc.conf

   megs:32
   
   romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
   
   vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
   
   floppya:1_44=myOS.IMG,status=inserted
   
   boot:floppy
  
   log:bochs.out
  

其中第2、3行中的路徑是根據BIOS-bochs-latest和VGABIOS-lgpl-latest的真實路徑,可以在文件管理器中查找到。

5.在bochs啓動自己編寫的MBR

把虛擬軟盤映像文件myOS.img 、配置文件bochsrc.conf 放至bochs2.9.6的安裝目錄裏。然後執行命令

bochs -f bochsrc.conf
輸入 -f 的目的是直接使用配置文件bochsrc.conf

在這裏插入圖片描述
默認選擇了第 6 項,直接回車。
在這裏插入圖片描述

啓動之後按提示 輸入’c’就跳到MBR執行。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章