代碼:
; boot.asm
.model tiny
.code
org 7c00h
start:
mov ah, 13h
mov al, 01h
mov bh, 00h
mov bl, 04h
mov cx, hear-msg
mov dh, 00h
mov dl, 00h
mov bp, offset msg
int 10h
jmp $
msg db 'hello, bootsector'
hear label byte
org start+510
signature:
dw 0aa55h
end start
彙編命令:
jwasm -bin -Fo boot.img boot.asm
jwasm 是一個masm兼容彙編器,用-bin選項可以直接產生 raw binary 格式文件,-Fo選項指定輸出文件名
彙編生成的二進制文件大小爲512字節,最後兩個字節是簽名,規定爲0aa55h
二進制文件佈局:
.model tiny 指定內存模型爲tiny,意思是隻有一個段,也就是cs,ds,es的值相同,所以程序裏沒有顯示設置es寄存器
顯示字符串是調用了bios的10h號中斷的13h號子程序,具體可參考楊季文老師的教程第184頁
用virtualbox新建一個虛擬電腦,如下圖:
設置好虛擬軟盤後,點啓動,ok,在屏幕上就可以看到 hello,bootsector 啦
參考資料:
楊季文老師的《80x86彙編語言程序設計教程》
於淵同學的《自己動手寫操作系統》第二版
masm官方文檔
http://msdn.microsoft.com/en-US/library/afzk3475(v=vs.80)
http://webster.cs.ucr.edu/Page_TechDocs/MASMDoc/
jwasm官方網站