日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何进入保护模式?

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何进入保护模式? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

IA-32為操作系統(tǒng)及其軟件的發(fā)展提供了大量的支持,它提供了4種操作模式:

?1,Real Mode,匯編書中的實模式,工作方式相當于8086。

?2,Protected Mode,保護模式,提供支持多任務環(huán)境的工作形式。

?3,Virtual 8086 Mode,虛擬8086模式,可以從保護模式切換成一種8086工作方式,可以使用戶在保護模式下方便的運行一個或者多個8086源程序。

?4,System Management Mode。

?

?在IA-32中,我們需要重點學習的是Protected Mode。

?查閱資料發(fā)現(xiàn)稍微老一些的匯編書中,只列出1-3這3種模式及他們的工作特點。

?出于好奇和探究,對第四種模式SMM進行了了解。

?首先只有SMI才會引起進入SMM,處理器保護現(xiàn)場,切換到SMRAM里的一個獨立地址空間執(zhí)行SMM代碼,RSM指令會使系統(tǒng)返回原來的正常模式。

?SMM相當于實模式,沒有特權(quán)級和地址映射,可尋址4GB,可執(zhí)行所有I/O和可用系統(tǒng)指令。

?當系統(tǒng)處于SMM時,處理器不識別后繼的SMI請求,但是第一個SMI請求可以被鎖存,并在系統(tǒng)退出SMM后被處理。

?

?內(nèi)存在IA-32中被分為2個部分,Segmentation,Paging。

?Segmentation提供了一種機制可以分隔DATA,CODE,STACK以便多個程序在同一個處理器運行時不會互相妨礙。

?Paging提供了一個通常的命令頁,將程序執(zhí)行的虛擬內(nèi)存系統(tǒng)映射在物理內(nèi)存當中。它同樣也為多任務提供隔離。

?

?GDT是Protected Mode必須的數(shù)據(jù)結(jié)構(gòu),所以進入保護模式之前必須先設(shè)定好GDT。

?設(shè)定GDT,可以采用Basic Flat Model,因為這個Model要求至少兩個段描述符,一個用來引用Data segment,一個用來引用Code segment。

?除此之外,還需要定義一個系統(tǒng)規(guī)定的空描述符。

?設(shè)置好GDT后,需要通過LGDT指令將設(shè)定的gdt入口地址和gdt表大小裝入GDTR寄存器。

?

這時需要設(shè)置A20。

?A20我感覺就是系統(tǒng)升級時留下的BUG,8086/8088只有20位地址線,能夠表示的最大內(nèi)存為1M,當需要訪問100000h~10FFEFh之間的內(nèi)存,必須有第21根地址線,這個就是A20。

?現(xiàn)在在實模式下,能訪問最大的內(nèi)存也只有10FFEFh,再訪問更大的需要進入保護模式,進入保護模式前,需要先打開A20。現(xiàn)在多數(shù)PC都是通過8204鍵盤控制器來處理A20,但A20和8204其實沒什么關(guān)系。通過匯編實現(xiàn)A20開啟代碼如下:

asm push ax asm in al,92h asm or al,00000010b asm out 92h,al asm pop ax

?

之后開始切換到保護模式

?

asm mov eax,cr0 asm or eax,1 asm mov cr0,eax

?

?實質(zhì)是將之前說過的PE位置1。

?理論上,這樣就進入了保護模式。

?

轉(zhuǎn)載于:https://www.cnblogs.com/wudibuzaijia/p/8483871.html

總結(jié)

以上是生活随笔為你收集整理的如何进入保护模式?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。