X86處理器主要有四種操作模式:
- 保護(hù)模式
- 虛擬8086模式
- 實(shí)地址模式
- 系統(tǒng)管理模式
一堂鲤、保護(hù)模式:保護(hù)模式是CPU的原生狀態(tài),在這種模式下丧诺,所有的指令和特性都是可用的瞬哼,分配給程序獨(dú)立的內(nèi)存區(qū)域叫做段,而CPU會(huì)阻止程序使用自身段范圍之外的內(nèi)存根资。
二架专、虛擬8086模式:保護(hù)模式下,處理器可以在一個(gè)安全的環(huán)境中直接執(zhí)行是地址模式軟件玄帕,如果一個(gè)程序崩潰了或是試圖向系統(tǒng)內(nèi)存區(qū)域?qū)憯?shù)據(jù)部脚,都不會(huì)影響到同一時(shí)間內(nèi)執(zhí)行的其他程序。現(xiàn)代操作系統(tǒng)可以同時(shí)執(zhí)行多個(gè)獨(dú)立的虛擬8086會(huì)話裤纹。WIN系統(tǒng)下一個(gè)CMD命令所運(yùn)行的MS-DOS程序就是一個(gè)獨(dú)立的虛擬8086模式的應(yīng)用委刘,總的來(lái)說(shuō)虛擬8086模式就是運(yùn)行在保護(hù)模式下的實(shí)地址模式。
三鹰椒、實(shí)地址模式:實(shí)地址模式就是早期的Intel處理器的編程環(huán)境锡移,但是增加了一些其他的特性,如切換到其他模式的功能漆际。當(dāng)程序需要直接訪問(wèn)系統(tǒng)內(nèi)存和硬件的時(shí)候淆珊,就是這種模式。
四奸汇、系統(tǒng)管理模式:這種模式會(huì)向操作系統(tǒng)提供實(shí)現(xiàn)諸如電源管理和系統(tǒng)安全等功能的機(jī)制施符,這些功能是由計(jì)算機(jī)制造商實(shí)現(xiàn)的,是為了一個(gè)特定的系統(tǒng)設(shè)置而定制的處理器擂找。
小結(jié):
現(xiàn)代MASM匯編都是基于保護(hù)模式下編程戳吝,WINDOWS對(duì)其權(quán)限做了一些限制。相對(duì)的也提供了一些便捷的調(diào)用功能贯涎。
地址空間
在32位保護(hù)模式下听哭,一個(gè)任務(wù)或程序最大可尋址4GB的線性地址空間。從P6處理器開(kāi)始塘雳,一種被稱(chēng)為擴(kuò)展物理尋址的技術(shù)可以使得可以被尋址的物理內(nèi)存增加到了64GB陆盘。而實(shí)地址模式下只能尋址1MB。
32位通用寄存器
8個(gè)通用寄存器:EAX败明,EBX礁遣,ECX,EDX肩刃,EBP,ESP,ESI盈包,EDI
6個(gè)16位段寄存器:CS沸呐,ES,SS呢燥,F(xiàn)S崭添,DS,GS
1個(gè)標(biāo)志位寄存器:EFLAGS
1指令指針寄存器:EIP
- 通用寄存器EAX叛氨,EBX呼渣,ECX,EDX 各自都有其高8位寄存和低8位寄存器寞埠。
如:EAX的高8位寄存器為AH屁置,低8位為AL以此類(lèi)推。 - 其他通用寄存器ESI仁连,EDI蓝角,EBP,ESP只能用32位或16位名稱(chēng)來(lái)訪問(wèn)饭冬。
如:32位名稱(chēng)ESI使鹅,16位名稱(chēng)SI,以此類(lèi)推昌抠。
特殊用法:某些通用寄存器有特殊用法患朱。
- 乘除指令默認(rèn)使用EAX,通常被稱(chēng)為擴(kuò)展累加寄存器炊苫。
- ESP用于尋址堆棧數(shù)據(jù)裁厅,極少用于一般運(yùn)算和數(shù)據(jù)傳輸,通常稱(chēng)為擴(kuò)展堆棧指針寄存器劝评。
- ESI和EDI用于高速存儲(chǔ)器傳輸指令姐直。通常稱(chēng)為擴(kuò)展源變址寄存器和擴(kuò)展目的寄存器。
- EBP通常是高級(jí)語(yǔ)言用來(lái)表示堆棧中函數(shù)參數(shù)和局部變量的引用蒋畜。除了高級(jí)編程声畏,他不用于一般算術(shù)運(yùn)算和數(shù)據(jù)傳輸。通常稱(chēng)為擴(kuò)展幀指針寄存器姻成。
- 16位段寄存器表示預(yù)先分配的區(qū)域的基址插龄,這個(gè)內(nèi)存區(qū)域稱(chēng)為段,保護(hù)模式中科展,段寄存器中存放的是段描述符指針均牢。一些段中存放代碼。其他段存放數(shù)據(jù)才睹,還有一個(gè)堆棧段存放的是局部變量和函數(shù)參數(shù)徘跪。
- cs是代碼段寄存器
- ds是數(shù)據(jù)段寄存器
- ss是堆棧段寄存器
- es是擴(kuò)展段寄存器
- fs是標(biāo)志段寄存器
- gs是全局段寄存器
- EIP指令指針寄存器包含下一條將要執(zhí)行的指令地址甘邀。
- EFLAGS標(biāo)志位寄存器器包含了獨(dú)立的二進(jìn)制位,用于控制CPU的操作或是反應(yīng)一些CPU的操作結(jié)果垮庐。有些指令會(huì)影響這些二進(jìn)制位松邪。每個(gè)二進(jìn)制位都代表不同含義。
EFLAGS
- 控制標(biāo)志位:控制位控制CPU的操作哨查。如檢測(cè)溢出時(shí)執(zhí)行中斷逗抑,或別的操作(方向標(biāo)志位和中斷標(biāo)志位)。
- 狀態(tài)標(biāo)志位:
- 進(jìn)位標(biāo)志位CF:發(fā)生進(jìn)位為1寒亥,無(wú)進(jìn)位為0
- 溢出標(biāo)志位OF:發(fā)生溢出為1邮府,無(wú)溢出為0
- 符號(hào)標(biāo)志位SF:算數(shù)或邏輯操作結(jié)果為負(fù)時(shí)為1
- 零標(biāo)志位ZF:算數(shù)或邏操作結(jié)果為0時(shí)為1
- 輔助進(jìn)位標(biāo)志位AC:算數(shù)操作在8位操作數(shù)中產(chǎn)生了位3向位4進(jìn)位時(shí)為1
- 奇偶校驗(yàn)標(biāo)志位PF:結(jié)果的最低有效位包含偶數(shù)個(gè)1時(shí)為1。
其他寄存器不列舉了溉奕。都是浮點(diǎn)或單指令多數(shù)據(jù)褂傀,多指令多數(shù)據(jù)用到的寄存器。用于并行計(jì)算或是浮點(diǎn)計(jì)算腐宋。