主引導扇區
處理器加電或者複位之後,如果硬碟是首選的啟動裝置,那麼,ROM-BIOS将試圖讀取硬碟的0面0道1扇區。傳統上,這就是主引導扇區(Main Boot Sector,MBR)。
讀取主引導扇區資料有512位元組,ROM-BIOS程式将它加載到邏輯位址0x0000:0x7c00處,也就是實體位址0x07c00處,然後判斷它是否有效。
一個有效的主引導扇區,其最後兩個位元組應當是0x55和0xAA。ROM-BIOS程式首先檢測這兩個标志,如果主引導扇區有效,則以一個段間轉移指令jmp 0x0000:0x7c00跳到那裡繼續執行。
在螢幕上顯示文字
如何在螢幕上顯示字元。我們需要把資料寫入到顯存,用資料控制每個像素是亮,還是不亮。顯存的資料的位元組對應着螢幕上連續的8個像素,如果bit是0則不亮,如果是1則點亮對應的像素,要顯示更多的顔色一個bit不夠了。
如何在螢幕上顯示出字元的形狀。有這樣一個标準,美國資訊交換代碼标準(American Standard Code for Information Interchange)。用特定的ASCII碼代表字元,顯示卡在任何時候都認為你發送的是ASCII碼。

如何在螢幕上某個位置顯示出字元。計算機在加電自檢之後都會把自己初始化到80×25的文本模式。在這種模式下,螢幕上可以顯示25行,每行80個字元,每屏總共2000個字元。考慮到文本模式下現存的起始實體位址是0xB8000,這塊記憶體可以看成是段位址為0xB800,偏移位址從0x0000延伸到0xFFFF的區域,是以我們可以把段位址定為0xB800,通過段偏移定位到想顯示的位置。
如何在螢幕上顯示帶顔色的字元。螢幕上的每個字元對應着顯存中的兩個連續位元組,前一個是字元的ASCII碼,後面是字元的顯示屬性,包括字元顔色(前景色)和底色(背景色)。字元的顯示屬性(1位元組)分為兩個不部分,低4位定義的是前景色,高4位定義的是背景色。色彩主要由R,G,B 這三位決定。
代碼解析
jmp near start ;跳轉到标号代表并訓示它所在位置處的彙編位址
text db 'H',0x07,'e',0x07,'l',0x07,'l',0x07,'o',0x07,\
' ',0x07,'W',0x07,'o',0x07,'r',0x07,'l',0x07,'d',0x07
;資料标号不僅僅表示記憶體單元的位址,還表示了記憶體單元的長度
;db聲明位元組,它後面的操作數都占一個位元組長度
;\續行符表示下一行和目前行合并為一行
;0x07 黑底白字,無閃爍,無加亮
start: ;标号代表并訓示它所在位置處的彙編位址
mov ax,0x7c0
mov ds,ax ;資料段邏輯位址0x7c0為主引導起始位址
mov ax,0xb800
mov es,ax ;顯存的邏輯段位址0xb800
cld ;清除方向标志DF置0,以表示正方向傳送
mov si,text ;設定資料的位址
mov di,0 ;目的段偏移位址為0
mov cx,(start-text)/2 ;設定批量傳送的位元組數到CX寄存器,因為資料串是在兩個标号之間聲明的,
;除以2是每個顯示的字元實際占兩個位元組,而movsw每次傳送一個字
rep movsw ;movsw,操作碼是0xA5,該指令沒有操作數。使用movsw而不是movsb的原因是每次需要傳送一個字(ASCII碼和屬性)。
;單純的movsb和movsw隻能執行一次,如果希望處理器自動的反複執行,需要加上rep(repeat),意思是CX不為0則重複。
times 510-($-$$) db 0 ;僞指令times可用于重複它後面的指令若幹次。
;裡面的$表示目前指令的位址,$$表示程式的起始位址0x7c00,是以$-$$就等于本條指令前的位元組數,
;times 510-($-$$) db 0 為在填充一些資料共為510個位元組,
db 0x55,0xaa ;結束表示,整個段程式的大小正好為510位元組,占滿一個扇區。