hello bootsector

代碼:

	; 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官方網站

http://www.japheth.de/JWasm.html

發佈了34 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章