剛開始學於淵的《一個操做系統的實現》,動手寫一個能夠顯示Hello,World的20行代碼的操做系統,其實只是個引導盤。html
當計算機電源被打開後,它會先進行加電自檢(POST),而後尋找啓動盤,若是是選擇從軟盤啓動,計算機就會查找軟盤的0面0磁道1扇區,若是發現它以0xAA55結束,則BIOS認爲它是一個引導扇區,而後BIOS就會把引導扇區的前512字節的引導代碼拷貝到內存的0000:7c00處並將控制器完全交給這段引導代碼。編程
因書中說明要使用到軟盤,可是在人工智能盛行的2018年哪裏還有軟盤,因此我嘗試下虛擬機上模擬軟盤運行,並最後獲得的本身想要的結果。
如今將本身的操做實踐記下,爲本身和讀者提供參考。函數
本次操做是在Mac電腦上執行的,因此其餘系統可能會有些不一樣。人工智能
建立文件名爲boos.asm的引導文件,代碼以下:spa
org 07c00h ;告訴編譯器加載到07c00h處 mov ax, cs mov ds, ax mov es, ax call DispStr ;調用顯示字符串函數 jmp $; 無限循環 DispStr: mov ax, BootMessge mov bp, ax mov cx, 16 mov ax, 01301h mov bx, 000ch mov dl, 0 int 10h ret BootMessge: db "hello world!" times 510 - ($ - $$) db 0 dw 0aa55h
編譯代碼生成boot.bin文件操作系統
製做一個包含boot.bin的鏡像文件boot.imgcode
作好了大小爲512B的包含如上引導代碼的鏡像文件boot.img。htm
能夠在百度軟件中心下載VirtualBox的mac版本,下載後直接點擊安裝便可。blog
建立虛擬機內存
啓動順序中只選擇軟驅,將啓動EFI選項去掉
選擇軟盤控制器並添加軟盤,將引導程序添加到虛擬軟盤中。
點擊OK完成設置,而後點啓動,就能夠看到Hello,World了。
用VMWare運行簡單的引導代碼