win7系統(tǒng)下載
當(dāng)前位置: 首頁 > 電腦學(xué)習(xí)教程 > 詳細(xì)頁面

一個(gè)容易的磁盤引導(dǎo)程序,實(shí)模式VS保護(hù)模式

發(fā)布時(shí)間:2024-04-14 文章來源:深度系統(tǒng)下載 瀏覽:

一、簡單的磁盤引導(dǎo)程序

 

簡單的說明:計(jì)算機(jī)加電后,BIOS檢查硬件等等,BIOS調(diào)用19號中斷加載磁盤引導(dǎo)程序。

以下用NASM編寫的一個(gè)簡單的磁盤引導(dǎo)程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;    '$'表示當(dāng)前代碼行的地址,'$$'表示起始代碼地址
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[bits 16]                                    ;說明這是16位代碼(可以不寫)
org    7c00h                             ;在運(yùn)行時(shí)將此段程序加載到內(nèi)存7c00h位置
jmp    $                                     ;循環(huán)
times    510 - ($ - $$)     0     ;剩余部分填充0,總大小為512,為0xaa55預(yù)留2字節(jié)

dw    0xaa55                           ;結(jié)束標(biāo)志

二、實(shí)模式與保護(hù)模式

簡單來理解,實(shí)模式運(yùn)行在16位環(huán)境下,保護(hù)模式運(yùn)行在32位環(huán)境下。32位環(huán)境中尋址空間可達(dá)4GB,除此之外,32位環(huán)境中可以很好的支持多任務(wù)。

從執(zhí)行程序的角度來理解兩種模式:

1、實(shí)模式

實(shí)模式下計(jì)算地址方式是通過“16位段地址(寄存器中)*16h+偏移”來實(shí)現(xiàn)的。

例如指令的尋址:CS*16h + IP

實(shí)模式

實(shí)模式

2、保護(hù)模式

保護(hù)模式下計(jì)算地址的方式是通過“GDT中存儲的段地址*16h+偏移”來實(shí)現(xiàn)的。32位模式下,16位的段地址被用來尋找GDT的位置。

例如指令的尋址:CS-->GDT代碼段位置*16h + IP

解釋一下GDT(Global Descriptor Table),看一下他的結(jié)構(gòu):

GDT(Global Descriptor Table)

GDT(Global Descriptor Table)

從表中可以看出,GDT首先是一個(gè)數(shù)組結(jié)構(gòu),每一個(gè)條目存儲了段的信息。下面就可以來理解保護(hù)模式下如何通過描述符表來進(jìn)行地址計(jì)算了:

地址計(jì)算

地址計(jì)算

以上是實(shí)模式向保護(hù)模式轉(zhuǎn)換的基本原理

本文章關(guān)鍵詞: 磁盤引導(dǎo)程序