版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第2 2章章 微處理器的編程結(jié)構(gòu)微處理器的編程結(jié)構(gòu)2.1 2.1 微處理器的三種工作模式微處理器的三種工作模式2.2 2.2 微處理器的編程結(jié)構(gòu)微處理器的編程結(jié)構(gòu)2.3 2.3 實(shí)模式下的存儲(chǔ)器尋址實(shí)模式下的存儲(chǔ)器尋址2.4 2.4 存儲(chǔ)器地址的交叉及字節(jié)、字存儲(chǔ)器地址的交叉及字節(jié)、字 和雙字的尋址和雙字的尋址 2.1 2.1 微處理器的三種工作模式微處理器的三種工作模式 2.1.1 2.1.1 三種工作模式三種工作模式 實(shí)地址模式實(shí)地址模式(Real-Address ModeReal-Address Mode)也稱也稱實(shí)模式實(shí)模式,簡(jiǎn)單地說(shuō),是指,簡(jiǎn)單地說(shuō),是指8028680286以上以上
2、的微處理器所采用的的微處理器所采用的80868086的工作模式。的工作模式。在實(shí)模式下,采用類似在實(shí)模式下,采用類似8086 CPU8086 CPU的體系的體系結(jié)構(gòu),其尋址機(jī)制,尤其是存儲(chǔ)器尋址,結(jié)構(gòu),其尋址機(jī)制,尤其是存儲(chǔ)器尋址,以及中斷處理機(jī)制均和以及中斷處理機(jī)制均和80868086相同。相同。1.1.實(shí)地址模式實(shí)地址模式2.2.保護(hù)模式保護(hù)模式 保護(hù)的虛地址模式保護(hù)的虛地址模式(Protected Virtual Protected Virtual Address ModeAddress Mode)簡(jiǎn)稱虛地址模式或保護(hù)模式,)簡(jiǎn)稱虛地址模式或保護(hù)模式,是支持多任務(wù)的一種工作模式,它能提供
3、一是支持多任務(wù)的一種工作模式,它能提供一系列的保護(hù)機(jī)制。系列的保護(hù)機(jī)制。目的就是對(duì)程序的運(yùn)行加以保護(hù)。目的就是對(duì)程序的運(yùn)行加以保護(hù)。 3.3.虛擬虛擬80868086模式模式 虛擬虛擬80868086模式模式(Virtual 8086 ModeVirtual 8086 Mode)又稱又稱“V86V86模式模式”,是運(yùn)行在保護(hù)模式中的,是運(yùn)行在保護(hù)模式中的實(shí)模式,為了在實(shí)模式,為了在3232位保護(hù)模式下執(zhí)行純位保護(hù)模式下執(zhí)行純1616位位程序。它不是一個(gè)真正的程序。它不是一個(gè)真正的CPUCPU模式,還屬于模式,還屬于保護(hù)模式,它是既有保護(hù)功能又能執(zhí)行保護(hù)模式,它是既有保護(hù)功能又能執(zhí)行808680
4、86代碼的工作模式。代碼的工作模式。2.1.2 2.1.2 三種工作模式的相互轉(zhuǎn)換三種工作模式的相互轉(zhuǎn)換 圖圖2-1 2-1 三種工作模式的相互轉(zhuǎn)換三種工作模式的相互轉(zhuǎn)換 上電或復(fù)位上電或復(fù)位實(shí)地址實(shí)地址模式模式保護(hù)模式保護(hù)模式設(shè)置設(shè)置CRCR0 0中中b b0 0位位 (b(b0 0=1)=1)V86V86模式模式 復(fù)位復(fù)位 執(zhí)行執(zhí)行IRETDIRETD指令指令或任務(wù)切換或任務(wù)切換 中斷中斷 復(fù)位復(fù)位CRCR0 0中中b b0 0位位 (b(b0 0=0)=0) 以上所分析的以上所分析的三種工作模式三種工作模式可以相互轉(zhuǎn)換,可以相互轉(zhuǎn)換,三種工作模式三種工作模式的轉(zhuǎn)換圖如圖的轉(zhuǎn)換圖如圖2-1
5、2-1所示。所示。2.2 2.2 微處理器的編程結(jié)構(gòu)微處理器的編程結(jié)構(gòu) 2.2.1 162.2.1 16位微處理器的編程結(jié)構(gòu)位微處理器的編程結(jié)構(gòu) 1.8086 CPU 1.8086 CPU 內(nèi)部結(jié)構(gòu)框圖內(nèi)部結(jié)構(gòu)框圖 8086 CPU 8086 CPU從功能上看,它由兩大部件組成,分為從功能上看,它由兩大部件組成,分為總線接口部件總線接口部件BIUBIU和和執(zhí)行部件執(zhí)行部件EUEU。 微處理器的微處理器的編程結(jié)構(gòu)編程結(jié)構(gòu)是指編程人員眼中看是指編程人員眼中看到的微處理器的軟件結(jié)構(gòu)模型。軟件結(jié)構(gòu)為編程到的微處理器的軟件結(jié)構(gòu)模型。軟件結(jié)構(gòu)為編程人員從軟件的角度去了解計(jì)算機(jī)系統(tǒng)的操作和運(yùn)人員從軟件的角度
6、去了解計(jì)算機(jī)系統(tǒng)的操作和運(yùn)行提供了便利。行提供了便利。 編程人員主要掌握微處理器內(nèi)部的各種寄編程人員主要掌握微處理器內(nèi)部的各種寄存器的組成、功能及如何使用它們等。存器的組成、功能及如何使用它們等。 內(nèi)部數(shù)據(jù)總線(內(nèi)部數(shù)據(jù)總線(16位)位)AH ALBH BLCH CLDH DL堆棧指針堆棧指針 SP基址指針基址指針 BP源變址源變址 DI目的變址目的變址 SI通通 用用 寄寄 存存 器器暫存寄存器暫存寄存器ALU標(biāo)志寄存器標(biāo)志寄存器FlagsEU 控控制電路制電路執(zhí)行單元執(zhí)行單元EU地址總線地址總線20位位(8位)位)代碼段代碼段 CS數(shù)據(jù)段數(shù)據(jù)段 DS堆棧段堆棧段 SS附加段附加段 ES指令
7、指針I(yè)P內(nèi)部暫存器內(nèi)部暫存器1 2 3 4 5 6數(shù)據(jù)總線數(shù)據(jù)總線8088:8位位8086:16位位I/O控控制邏輯制邏輯指令隊(duì)列指令隊(duì)列80888086 段段寄寄存存器器外部外部總總線線總線接口總線接口單元單元BIU圖圖2-2 8086 CPU2-2 8086 CPU內(nèi)部結(jié)構(gòu)框圖內(nèi)部結(jié)構(gòu)框圖 BXBXAXAXDXDXCXCX 總線接口部件總線接口部件BIUBIU是是8086 CPU8086 CPU與外部存儲(chǔ)與外部存儲(chǔ)器和器和I/OI/O端口的接口,它提供了端口的接口,它提供了1616位雙向數(shù)據(jù)位雙向數(shù)據(jù)總線和總線和2020位地址總線,負(fù)責(zé)位地址總線,負(fù)責(zé)CPUCPU與存儲(chǔ)器及與存儲(chǔ)器及I/O
8、I/O端口之間的數(shù)據(jù)傳送操作。端口之間的數(shù)據(jù)傳送操作。 8086 CPU 8086 CPU的的BIUBIU取指令和取指令和EUEU執(zhí)行指令是并行進(jìn)行的,執(zhí)行指令是并行進(jìn)行的,這種這種并行工作方式并行工作方式大大提高了系統(tǒng)的工作速度。大大提高了系統(tǒng)的工作速度。 執(zhí)行部件執(zhí)行部件EUEU從從BIUBIU中的指令隊(duì)列獲取指令,中的指令隊(duì)列獲取指令,對(duì)指令進(jìn)行譯碼分析并執(zhí)行,執(zhí)行指令所需要對(duì)指令進(jìn)行譯碼分析并執(zhí)行,執(zhí)行指令所需要的操作數(shù)和運(yùn)算結(jié)果都是通過(guò)總線接口部件與的操作數(shù)和運(yùn)算結(jié)果都是通過(guò)總線接口部件與指定的內(nèi)存單元或外設(shè)端口進(jìn)行傳送的。指定的內(nèi)存單元或外設(shè)端口進(jìn)行傳送的。(1 1)總線接口部件)
9、總線接口部件BIU BIU 總線接口部件總線接口部件BIUBIU具有下列主要功能:由具有下列主要功能:由2020位位地址加法器地址加法器產(chǎn)生產(chǎn)生2020位的物理地址位的物理地址;預(yù)取指令并存;預(yù)取指令并存入先進(jìn)先出的指令隊(duì)列緩沖器中;從內(nèi)存和入先進(jìn)先出的指令隊(duì)列緩沖器中;從內(nèi)存和I/OI/O接口讀接口讀/ /寫(xiě)操作數(shù);發(fā)出各種總線控制信號(hào),等寫(xiě)操作數(shù);發(fā)出各種總線控制信號(hào),等等。它由下列各部分組成:等。它由下列各部分組成:4 4個(gè)個(gè)1616位段寄存器位段寄存器 數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器(Data SegmentData Segment,DSDS) 代碼段寄存器代碼段寄存器(Code Segme
10、ntCode Segment,CSCS) 附加段寄存器附加段寄存器(Extra SegmentExtra Segment,ESES) 堆棧段寄存器堆棧段寄存器(Stack SegmentStack Segment,SSSS)總線控制電路總線控制電路,用于控制總線的開(kāi)放、關(guān)閉及,用于控制總線的開(kāi)放、關(guān)閉及信號(hào)的傳送方向等。信號(hào)的傳送方向等。1616位指令指針位指令指針I(yè)PIP(Instruction PointerInstruction Pointer):):專用于存放下一條將要執(zhí)行指令的偏移地址。專用于存放下一條將要執(zhí)行指令的偏移地址。2020位地址加法器位地址加法器:它能將:它能將1616位
11、邏輯地址位邏輯地址變換成變換成讀讀/ /寫(xiě)存儲(chǔ)器所需要的寫(xiě)存儲(chǔ)器所需要的2020位物理地址位物理地址。實(shí)際上。實(shí)際上由它完成由它完成2020位地址的加法操作。位地址的加法操作。6 6字節(jié)指令隊(duì)列緩沖器字節(jié)指令隊(duì)列緩沖器,用于預(yù)存放,用于預(yù)存放6 6字節(jié)的指字節(jié)的指令代碼。令代碼。(2 2)指令執(zhí)行部件)指令執(zhí)行部件EU EU 指令執(zhí)行部件指令執(zhí)行部件EUEU的功能是進(jìn)行指令譯碼和執(zhí)行的功能是進(jìn)行指令譯碼和執(zhí)行指令,并向指令,并向BIUBIU提出訪問(wèn)存儲(chǔ)器或提出訪問(wèn)存儲(chǔ)器或I/OI/O接口的請(qǐng)求。接口的請(qǐng)求。它由以下幾個(gè)部件組成:它由以下幾個(gè)部件組成: 算術(shù)邏輯部件算術(shù)邏輯部件ALUALU (A
12、rithmetic Logic UnitArithmetic Logic Unit) 標(biāo)志寄存器標(biāo)志寄存器FLAGSFLAGS(又稱為程序狀態(tài)字(又稱為程序狀態(tài)字PSWPSW),用),用于存放于存放ALUALU運(yùn)算結(jié)果的標(biāo)志等。運(yùn)算結(jié)果的標(biāo)志等。 寄存器組寄存器組:8 8個(gè)通用的個(gè)通用的1616位寄存器、堆棧指針位寄存器、堆棧指針SPSP和基址指針和基址指針BPBP。 執(zhí)行部件控制電路執(zhí)行部件控制電路 2.8086 CPU2.8086 CPU內(nèi)部寄存器結(jié)構(gòu)內(nèi)部寄存器結(jié)構(gòu) 8086 CPU 8086 CPU內(nèi)部寄存器結(jié)構(gòu)在計(jì)算機(jī)中起了重要的內(nèi)部寄存器結(jié)構(gòu)在計(jì)算機(jī)中起了重要的作用,寄存器是微處理器
13、中的重要組成之一,它的存作用,寄存器是微處理器中的重要組成之一,它的存取速度比內(nèi)存快很多,因此,在程序執(zhí)行的過(guò)程中,取速度比內(nèi)存快很多,因此,在程序執(zhí)行的過(guò)程中,寄存器可用來(lái)存放運(yùn)算過(guò)程中所需要的操作數(shù)、操作寄存器可用來(lái)存放運(yùn)算過(guò)程中所需要的操作數(shù)、操作數(shù)地址和中間結(jié)果等。數(shù)地址和中間結(jié)果等。 8086 CPU8086 CPU內(nèi)包含內(nèi)包含4 4組組1616位寄存器位寄存器。它們分別是。它們分別是通通用寄存器組用寄存器組、段寄存器段寄存器、指令指針寄存器指令指針寄存器及及標(biāo)志位寄標(biāo)志位寄存器存器。 (1 1)通用寄存器組)通用寄存器組 通用寄存器組通用寄存器組包括包括8 8個(gè)個(gè)1616位位的通用
14、寄存器,它的通用寄存器,它們是們是AXAX,BXBX,CXCX,DXDX,SPSP,BPBP,SISI和和DIDI,其中,其中4 4個(gè)個(gè)寄存器寄存器AXAX,BXBX,CXCX和和DXDX又稱為數(shù)據(jù)寄存器,它們可又稱為數(shù)據(jù)寄存器,它們可以存放以存放1616位數(shù)據(jù)或地址,也可以分為兩個(gè)位數(shù)據(jù)或地址,也可以分為兩個(gè)8 8位的寄位的寄存器使用,當(dāng)作為存器使用,當(dāng)作為8 8位寄存器使用時(shí),高位寄存器使用時(shí),高8 8位寄存器位寄存器的名稱為的名稱為AHAH、BHBH、CHCH和和DHDH,低,低8 8位則為位則為ALAL、BLBL、CLCL和和DLDL。 SPSP,BPBP,SISI和和DIDI這這4
15、4個(gè)通用寄存器只能用作個(gè)通用寄存器只能用作1616位寄存器,通常用于存儲(chǔ)器尋址時(shí)提供偏移地址,位寄存器,通常用于存儲(chǔ)器尋址時(shí)提供偏移地址,也可以用作數(shù)據(jù)寄存器。也可以用作數(shù)據(jù)寄存器。 每個(gè)寄存器還有它們各自的專用場(chǎng)合,其中:每個(gè)寄存器還有它們各自的專用場(chǎng)合,其中:AXAX稱為累加器,使用最頻繁,用于算術(shù)運(yùn)算、邏輯運(yùn)稱為累加器,使用最頻繁,用于算術(shù)運(yùn)算、邏輯運(yùn)算以及在輸入輸出指令中作數(shù)據(jù)寄存器使用等;算以及在輸入輸出指令中作數(shù)據(jù)寄存器使用等;BXBX稱為基址寄存器,在間接尋址中作基址寄存器,常稱為基址寄存器,在間接尋址中作基址寄存器,常用作偏移地址訪問(wèn)數(shù)據(jù)段;用作偏移地址訪問(wèn)數(shù)據(jù)段;CXCX稱為
16、計(jì)數(shù)寄存器,作為循環(huán)和串行操作等指令中的稱為計(jì)數(shù)寄存器,作為循環(huán)和串行操作等指令中的隱含計(jì)數(shù)器;隱含計(jì)數(shù)器;DXDX稱為數(shù)據(jù)寄存器,常用來(lái)存放稱為數(shù)據(jù)寄存器,常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高雙字長(zhǎng)數(shù)據(jù)的高1616位位或存放或存放外設(shè)端口的地址外設(shè)端口的地址。 源變址寄存器源變址寄存器SISI(Source(Source Index) Index)和和目的變址寄存器目的變址寄存器DIDI(Destination(Destination Index) Index),通常與,通常與DSDS數(shù)據(jù)段寄存器一起數(shù)據(jù)段寄存器一起使用,用來(lái)確定數(shù)據(jù)段中某一存儲(chǔ)單元的地址。在進(jìn)行使用,用來(lái)確定數(shù)據(jù)段中某一存儲(chǔ)單元的地址
17、。在進(jìn)行字符串操作時(shí),字符串操作時(shí),SISI用于存放用于存放源操作數(shù)源操作數(shù)的偏移地址,的偏移地址,DIDI用用于存放于存放目的操作數(shù)目的操作數(shù)的偏移地址,的偏移地址,SISI與與DSDS聯(lián)用,聯(lián)用,DIDI與與ESES聯(lián)聯(lián)用,分別尋址數(shù)據(jù)段和附加數(shù)據(jù)段。用,分別尋址數(shù)據(jù)段和附加數(shù)據(jù)段。 SPSP,BPBP,SISI和和DIDI這這4 4個(gè)通用寄存器通常用于存儲(chǔ)器個(gè)通用寄存器通常用于存儲(chǔ)器尋址時(shí)提供偏移地址,也可以用作數(shù)據(jù)寄存器。尋址時(shí)提供偏移地址,也可以用作數(shù)據(jù)寄存器。 SPSP稱為堆棧指針(稱為堆棧指針(Stack PointerStack Pointer),或稱堆棧指),或稱堆棧指示器,
18、必須與示器,必須與SSSS堆棧段寄存器聯(lián)用。堆棧段寄存器聯(lián)用。SPSP用于指示用于指示棧底棧底或棧頂或棧頂?shù)钠频刂?。的偏移地址?BPBP稱為基址指針?lè)Q為基址指針(Base Pointer)(Base Pointer),常用作偏移地址,常用作偏移地址訪問(wèn)訪問(wèn)堆棧段堆棧段。 AH ALBH BLCH CLDH DL SP BP SI DI IP FLAGSAX BX CX DX 堆棧指針寄存器堆棧指針寄存器基址指針寄存器基址指針寄存器源變址寄存器源變址寄存器目變址寄存器目變址寄存器指令指針指令指針標(biāo)志寄存器標(biāo)志寄存器通用寄存器通用寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器圖圖2-3 8086 CPU2-3 8
19、086 CPU內(nèi)部寄存器內(nèi)部寄存器 CS DS SS ES代碼段寄存器代碼段寄存器堆棧段寄存器堆棧段寄存器數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器附加段寄存器附加段寄存器15 87 015 87 0(2 2)段寄存器)段寄存器 8086 CPU 8086 CPU內(nèi)部設(shè)有內(nèi)部設(shè)有4 4個(gè)個(gè)1616位段寄存器位段寄存器,這些段寄,這些段寄存器的內(nèi)容與段內(nèi)偏移地址組合形成存器的內(nèi)容與段內(nèi)偏移地址組合形成2020位物理地址位物理地址。 代碼段寄存器代碼段寄存器CSCS:代碼段是一個(gè)隨機(jī)存取存儲(chǔ)區(qū),用:代碼段是一個(gè)隨機(jī)存取存儲(chǔ)區(qū),用來(lái)保存微處理器使用的程序代碼。在來(lái)保存微處理器使用的程序代碼。在80868086系統(tǒng)中,
20、代系統(tǒng)中,代碼段寄存器碼段寄存器CSCS定義了代碼段的起始地址。代碼段的最定義了代碼段的起始地址。代碼段的最大存儲(chǔ)空間為大存儲(chǔ)空間為64KB64KB。 數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DSDS:數(shù)據(jù)段也是一個(gè)隨機(jī)存取存儲(chǔ)區(qū),:數(shù)據(jù)段也是一個(gè)隨機(jī)存取存儲(chǔ)區(qū),用來(lái)保存程序執(zhí)行過(guò)程中所使用的數(shù)據(jù)及存放程序運(yùn)用來(lái)保存程序執(zhí)行過(guò)程中所使用的數(shù)據(jù)及存放程序運(yùn)行后的結(jié)果。數(shù)據(jù)段寄存器行后的結(jié)果。數(shù)據(jù)段寄存器DSDS定義了數(shù)據(jù)段的起始地定義了數(shù)據(jù)段的起始地址,其最大存儲(chǔ)空間也是址,其最大存儲(chǔ)空間也是64KB64KB。 附加段寄存器附加段寄存器ESES:附加段是為某些串操作指令存放操:附加段是為某些串操作指令存放操作數(shù)
21、而附加的一個(gè)數(shù)據(jù)段。與數(shù)據(jù)段類似,附加段寄作數(shù)而附加的一個(gè)數(shù)據(jù)段。與數(shù)據(jù)段類似,附加段寄存器存器ESES定義了附加段的起始地址,其最大存儲(chǔ)空間也定義了附加段的起始地址,其最大存儲(chǔ)空間也為為64KB64KB。 堆棧段寄存器堆棧段寄存器SSSS:堆棧段是一個(gè)特殊的隨機(jī)存取存儲(chǔ):堆棧段是一個(gè)特殊的隨機(jī)存取存儲(chǔ)區(qū),用來(lái)臨時(shí)保存程序執(zhí)行過(guò)程中有關(guān)寄存器的內(nèi)容區(qū),用來(lái)臨時(shí)保存程序執(zhí)行過(guò)程中有關(guān)寄存器的內(nèi)容、程序的地址信息及傳遞參數(shù)等。堆棧段寄存器、程序的地址信息及傳遞參數(shù)等。堆棧段寄存器SSSS與與堆棧指針堆棧指針SPSP共同確定堆棧段內(nèi)的存取地址。其最大存共同確定堆棧段內(nèi)的存取地址。其最大存儲(chǔ)空間為儲(chǔ)空
22、間為64KB64KB。 (3 3)指令指針)指令指針I(yè)PIP 8086 CPU 8086 CPU中設(shè)置了一個(gè)中設(shè)置了一個(gè)1616位指令指針位指令指針I(yè)PIP,IPIP用用來(lái)存放將要執(zhí)行的下一條指令在當(dāng)前代碼段中的偏來(lái)存放將要執(zhí)行的下一條指令在當(dāng)前代碼段中的偏移地址,它與代碼段寄存器移地址,它與代碼段寄存器CSCS聯(lián)用,以確定下一條聯(lián)用,以確定下一條指令的物理地址,指令的物理地址,8086 CPU8086 CPU利用利用CSCS:IPIP取得下一條取得下一條要執(zhí)行的指令的物理地址。要執(zhí)行的指令的物理地址。 例例【2-12-1】設(shè)存放在設(shè)存放在CSCS中的當(dāng)前代碼段基地址值是中的當(dāng)前代碼段基地址值
23、是3000H3000H,IPIP指令指針存放下一條要執(zhí)行指令的段內(nèi)指令指針存放下一條要執(zhí)行指令的段內(nèi)偏移地址是偏移地址是1234H1234H,組合后生成的,組合后生成的2020位物理地址位物理地址PA=3000HPA=3000H16+1234H=31234H16+1234H=31234H(4 4)標(biāo)志寄存器)標(biāo)志寄存器 標(biāo)志寄存器標(biāo)志寄存器(FLAGSFLAGS)用于反映部分指令(例算)用于反映部分指令(例算術(shù)運(yùn)算及邏輯運(yùn)算指令)執(zhí)行結(jié)果的狀態(tài),常用作術(shù)運(yùn)算及邏輯運(yùn)算指令)執(zhí)行結(jié)果的狀態(tài),常用作后續(xù)條件轉(zhuǎn)移指令的轉(zhuǎn)移控制條件。標(biāo)志寄存器為后續(xù)條件轉(zhuǎn)移指令的轉(zhuǎn)移控制條件。標(biāo)志寄存器為1616位位
24、,實(shí)際使用了其中的,實(shí)際使用了其中的9 9位,所用各位的含義如圖位,所用各位的含義如圖2-42-4所示。所示。 圖圖2-4 2-4 標(biāo)志寄存器標(biāo)志寄存器FLAGS FLAGS OF1115 14 13 12DF10IF9TF8SF7ZF65AF43PF21CF0標(biāo)志的分類標(biāo)志的分類 根據(jù)功能,將根據(jù)功能,將9 9個(gè)標(biāo)志位分成兩類:一類為個(gè)標(biāo)志位分成兩類:一類為狀狀態(tài)標(biāo)志態(tài)標(biāo)志,表示運(yùn)算后的狀態(tài)特征,它影響后面的,表示運(yùn)算后的狀態(tài)特征,它影響后面的操作。操作。狀態(tài)標(biāo)志有狀態(tài)標(biāo)志有6 6位位:CFCF、PFPF、AFAF、ZFZF、SFSF和和OFOF;另一類為另一類為控制標(biāo)志控制標(biāo)志,用來(lái)控制,
25、用來(lái)控制CPUCPU的操作,的操作,控制標(biāo)控制標(biāo)志有志有3 3位位:TFTF、IFIF和和DFDF。 標(biāo)志位標(biāo)志位 CFCF(Carry FlagCarry Flag),),進(jìn)位標(biāo)志位進(jìn)位標(biāo)志位。本次運(yùn)算。本次運(yùn)算中最高位有進(jìn)位或借位時(shí),中最高位有進(jìn)位或借位時(shí),CF=1CF=1,否則,否則CF=0CF=0。 例:例:25H+6EH=93H 25H+6EH=93H 沒(méi)有進(jìn)位,則沒(méi)有進(jìn)位,則CF=0CF=0D7H+5CH=(1)33H D7H+5CH=(1)33H 有進(jìn)位,則有進(jìn)位,則CF=1CF=1 PFPF(Parity FlagParity Flag),),奇偶校驗(yàn)標(biāo)志位奇偶校驗(yàn)標(biāo)志位。本次
26、運(yùn)。本次運(yùn)算結(jié)果的低算結(jié)果的低8 8位中位中1 1的個(gè)數(shù)為偶數(shù)時(shí),的個(gè)數(shù)為偶數(shù)時(shí),PF=1PF=1,否則,否則PF=0PF=0。 AFAF(Auxiliary Carry FlagAuxiliary Carry Flag),),輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志位位。本次運(yùn)算結(jié)果低。本次運(yùn)算結(jié)果低4 4位向高位向高4 4位有進(jìn)位或借位位有進(jìn)位或借位時(shí),時(shí),AF=1AF=1,否則,否則AF=0AF=0。通常用于對(duì)。通常用于對(duì)BCDBCD算術(shù)運(yùn)算算術(shù)運(yùn)算結(jié)果的調(diào)整。結(jié)果的調(diào)整。 標(biāo)志位標(biāo)志位標(biāo)志位標(biāo)志位 ZFZF(Zero FlagZero Flag),),零標(biāo)志位零標(biāo)志位。若運(yùn)算結(jié)果為。若運(yùn)算結(jié)果為0 0
27、時(shí),時(shí),ZF=1ZF=1,否則,否則,ZF=0ZF=0。 SFSF(Sign FlagSign Flag),),符號(hào)標(biāo)志位符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果。當(dāng)運(yùn)算結(jié)果的最高位為的最高位為1 1,則,則SF=1SF=1,否則,否則SF=0SF=0,即與運(yùn)算結(jié),即與運(yùn)算結(jié)果的最高位相同。果的最高位相同。 OFOF(Overflow FlagOverflow Flag),),溢出標(biāo)志位溢出標(biāo)志位。溢出的判斷方法如下:溢出的判斷方法如下: 加法運(yùn)算:加法運(yùn)算:若兩個(gè)加數(shù)的最高位為若兩個(gè)加數(shù)的最高位為0 0,而和的最高位為,而和的最高位為1 1,則產(chǎn)生上溢出;,則產(chǎn)生上溢出;若兩個(gè)加數(shù)的最高位為若兩個(gè)加數(shù)的最高位
28、為1 1,而和的最高位為,而和的最高位為0 0,則產(chǎn)生下溢出;,則產(chǎn)生下溢出;當(dāng)兩個(gè)加數(shù)的最高位不相同時(shí),不可能產(chǎn)生溢出。當(dāng)兩個(gè)加數(shù)的最高位不相同時(shí),不可能產(chǎn)生溢出。減法運(yùn)算:減法運(yùn)算:若被減數(shù)的最高位為若被減數(shù)的最高位為0 0,減數(shù)的最高位為,減數(shù)的最高位為1 1,而差的最高位為,而差的最高位為1 1,則產(chǎn)生上溢出;則產(chǎn)生上溢出;若被減數(shù)的最高位為若被減數(shù)的最高位為1 1,減數(shù)的最高位為,減數(shù)的最高位為0 0,而差的最高位為,而差的最高位為0 0,則產(chǎn)生下溢出;則產(chǎn)生下溢出;被減數(shù)及減數(shù)的最高位相同時(shí),不可能產(chǎn)生溢出。被減數(shù)及減數(shù)的最高位相同時(shí),不可能產(chǎn)生溢出。 標(biāo)志位標(biāo)志位 溢出溢出是指補(bǔ)
29、碼運(yùn)算的結(jié)果超出了所選是指補(bǔ)碼運(yùn)算的結(jié)果超出了所選字長(zhǎng)能表示數(shù)的范圍。例如,字長(zhǎng)能表示數(shù)的范圍。例如,8 8位補(bǔ)碼位補(bǔ)碼所所能表示數(shù)的范圍是能表示數(shù)的范圍是-128-128+127+127,1616位補(bǔ)碼位補(bǔ)碼所能表示數(shù)的范圍是所能表示數(shù)的范圍是-32768-32768+32767+32767。如。如果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出。果運(yùn)算結(jié)果超出這個(gè)范圍,就產(chǎn)生了溢出。什么是溢出什么是溢出例例【2-22-2】 請(qǐng)指出執(zhí)行了下列加法操作后請(qǐng)指出執(zhí)行了下列加法操作后各標(biāo)志位的狀態(tài)。各標(biāo)志位的狀態(tài)。 1010 0100 0011 10011010 0100 0011 1001 + 0100 0
30、101 0110 1010 + 0100 0101 0110 1010 1110 1001 1010 0011 1110 1001 1010 0011執(zhí)行以上操作后,各執(zhí)行以上操作后,各狀態(tài)標(biāo)志位狀態(tài)標(biāo)志位的狀態(tài)應(yīng)為:的狀態(tài)應(yīng)為:CF= CF= AF= AF= PF= PF= ZF= ZF= SF= SF= OF= OF= 0 01 11 10 01 10 0標(biāo)志位標(biāo)志位 TFTF(Trap FlagTrap Flag),),陷井標(biāo)志位陷井標(biāo)志位,也常稱為單步,也常稱為單步標(biāo)志位。調(diào)試程序時(shí),設(shè)置標(biāo)志位。調(diào)試程序時(shí),設(shè)置TF=1TF=1時(shí),時(shí),8086 CPU8086 CPU每每執(zhí)行完一條指令
31、就自動(dòng)產(chǎn)生一個(gè)內(nèi)部中斷。執(zhí)行完一條指令就自動(dòng)產(chǎn)生一個(gè)內(nèi)部中斷。 IFIF(Interrupt FlagInterrupt Flag),),中斷允許標(biāo)志位中斷允許標(biāo)志位。該。該標(biāo)志用于控制外部可屏蔽中斷是否可以被標(biāo)志用于控制外部可屏蔽中斷是否可以被8086 8086 CPUCPU響應(yīng)。響應(yīng)。IF=1IF=1,允許,允許CPUCPU響應(yīng)可屏蔽中斷請(qǐng)求;響應(yīng)可屏蔽中斷請(qǐng)求;IF=0IF=0,則禁止,則禁止CPUCPU接收外部可屏蔽中斷請(qǐng)求。接收外部可屏蔽中斷請(qǐng)求。 DFDF(Direction FlagDirection Flag),),方向標(biāo)志位方向標(biāo)志位。用于控。用于控制串操作指令中地址指針的變
32、化方向。如果設(shè)置制串操作指令中地址指針的變化方向。如果設(shè)置DF=0DF=0,每次串操作后的存儲(chǔ)器地址就自動(dòng)增加,每次串操作后的存儲(chǔ)器地址就自動(dòng)增加,若若DF=1DF=1,每次串操作后的存儲(chǔ)器地址就自動(dòng)減少。,每次串操作后的存儲(chǔ)器地址就自動(dòng)減少。標(biāo)志位名標(biāo)志位名置位符號(hào)(置位符號(hào)(=1)復(fù)位符號(hào)(復(fù)位符號(hào)(=0)溢出標(biāo)志溢出標(biāo)志OFOVNV方向標(biāo)志方向標(biāo)志DFDNUP中斷標(biāo)志中斷標(biāo)志IFEIDI符號(hào)標(biāo)志符號(hào)標(biāo)志SFNGPL零標(biāo)志零標(biāo)志ZFZRNZ輔助標(biāo)志輔助標(biāo)志AFACNA奇偶標(biāo)志奇偶標(biāo)志PFPEPO進(jìn)位標(biāo)志進(jìn)位標(biāo)志CFCYNC表表2-1 Flags2-1 Flags中標(biāo)志位的符號(hào)表示中標(biāo)志位的
33、符號(hào)表示 在調(diào)試程序在調(diào)試程序DEBUGDEBUG中,提供了測(cè)試標(biāo)志位的表示中,提供了測(cè)試標(biāo)志位的表示方法,它用符號(hào)來(lái)表示標(biāo)志位的值,表方法,它用符號(hào)來(lái)表示標(biāo)志位的值,表2-12-1給出了各給出了各個(gè)標(biāo)志位在個(gè)標(biāo)志位在DEBUGDEBUG中的符號(hào)表示(中的符號(hào)表示(TFTF在在DEBUGDEBUG中不提供中不提供符號(hào))。符號(hào))。 2.2.2 322.2.2 32位微處理器的編程結(jié)構(gòu)位微處理器的編程結(jié)構(gòu) 圖圖2-52-5給出了給出了3232位微處理器的寄存器模型,它位微處理器的寄存器模型,它實(shí)際上是一個(gè)呈現(xiàn)在編程人員面前的寄存器集合,實(shí)際上是一個(gè)呈現(xiàn)在編程人員面前的寄存器集合,稱之為稱之為323
34、2位微處理器的編程結(jié)構(gòu)位微處理器的編程結(jié)構(gòu)。 它描述了它描述了8038680386、8048680486及及PentiumPentium系列微處理器系列微處理器內(nèi)部程序可見(jiàn)的寄存器結(jié)構(gòu)。兼容內(nèi)部程序可見(jiàn)的寄存器結(jié)構(gòu)。兼容8086 CPU8086 CPU原來(lái)的原來(lái)的8 8個(gè)個(gè)1616位通用寄存器以及原來(lái)的位通用寄存器以及原來(lái)的8 8個(gè)個(gè)8 8位的寄存器,位的寄存器,而且將原來(lái)的而且將原來(lái)的8 8個(gè)個(gè)1616位通用寄存器均擴(kuò)展成位通用寄存器均擴(kuò)展成(ExtendedExtended)3232位的寄存器位的寄存器。 增加了增加了2 2個(gè)個(gè)1616位的數(shù)據(jù)段寄存器位的數(shù)據(jù)段寄存器FSFS和和GSGS。
35、 圖圖2-5 322-5 32位位CPUCPU內(nèi)部寄存器內(nèi)部寄存器 SPBPDISIDLDHCLCHBLBHALAHESPESPEBEBP PEDIEDIESIESIEAXEAXECXECXEDXEDXEBXEBX8 8 1515161631310 07 7GSFSSSESDSCS0 015151.1.通用寄存器通用寄存器 共有共有8 8個(gè)個(gè)3232位通用寄存器位通用寄存器,EAXEAX、EBXEBX、ECXECX、EDXEDX、ESPESP、EBPEBP、ESIESI和和EDIEDI,雖然它們都,雖然它們都可以用于存放一般的數(shù)據(jù),但是,不同的寄存可以用于存放一般的數(shù)據(jù),但是,不同的寄存器還可
36、能有特殊的用法,按照它們的功能差別,器還可能有特殊的用法,按照它們的功能差別,可以分為可以分為2 2組:組: 通用數(shù)據(jù)寄存器通用數(shù)據(jù)寄存器; 指令指針與變址寄存器指令指針與變址寄存器。 (1 1)通用數(shù)據(jù)寄存器)通用數(shù)據(jù)寄存器 共計(jì)有共計(jì)有四四個(gè)個(gè)3232位位的的通用數(shù)據(jù)寄存器通用數(shù)據(jù)寄存器:EAXEAX、EBXEBX、ECXECX和和EDXEDX。通用數(shù)據(jù)寄存器一般用來(lái)存放。通用數(shù)據(jù)寄存器一般用來(lái)存放8 8位位、1616位位或或3232位位的操作數(shù)。的操作數(shù)。 EAXEAX(AccumulatorAccumulator),累加器:),累加器:EAXEAX可以作為可以作為通用通用8 8位寄存器
37、(位寄存器(AHAH和和ALAL)、)、1616位寄存器(位寄存器(AXAX)及)及3232位寄存器(位寄存器(EAXEAX)使用。如果作為通用)使用。如果作為通用8 8位或位或1616位位寄存器使用時(shí),則只改變寄存器使用時(shí),則只改變EAXEAX中低中低1616位中相應(yīng)的數(shù)位中相應(yīng)的數(shù)據(jù),其他位不會(huì)改變。當(dāng)據(jù),其他位不會(huì)改變。當(dāng)CPUCPU執(zhí)行乘法指令、除法執(zhí)行乘法指令、除法指令及調(diào)整指令時(shí),指令及調(diào)整指令時(shí),EAXEAX有其固定的特殊用法。有其固定的特殊用法。 EBXEBX(BaseBase),基址寄存器:),基址寄存器:EBXEBX可以作為通用可以作為通用8 8位寄存器(位寄存器(BHBH
38、和和BLBL)、)、1616位寄存器(位寄存器(BXBX)及)及3232位寄位寄存器(存器(EBXEBX)使用。如果作為通用)使用。如果作為通用8 8位或位或1616位寄存器位寄存器使用時(shí),則只改變使用時(shí),則只改變EBXEBX中低中低1616位中相應(yīng)的數(shù)據(jù),其他位中相應(yīng)的數(shù)據(jù),其他位不會(huì)改變。位不會(huì)改變。 ECXECX(CountCount),計(jì)數(shù)寄存器:),計(jì)數(shù)寄存器:ECXECX可以作為通用可以作為通用8 8位寄存器(位寄存器(CHCH和和CLCL)、)、1616位寄存器(位寄存器(CXCX)及)及3232位寄位寄存器(存器(ECXECX)使用。如果作為通用)使用。如果作為通用8 8位或位
39、或1616位寄存器位寄存器使用時(shí),則只改變使用時(shí),則只改變ECXECX中低中低1616位中相應(yīng)的數(shù)據(jù),其他位中相應(yīng)的數(shù)據(jù),其他位不會(huì)改變。位不會(huì)改變。ECXECX有用于計(jì)數(shù)的固定用法,移位和循有用于計(jì)數(shù)的固定用法,移位和循環(huán)指令一般用環(huán)指令一般用CLCL寄存器計(jì)數(shù),重復(fù)的串操作指令一寄存器計(jì)數(shù),重復(fù)的串操作指令一般用般用CXCX計(jì)數(shù),計(jì)數(shù),LOOP/LOOPDLOOP/LOOPD等指令用等指令用CXCX或或ECXECX計(jì)數(shù)。計(jì)數(shù)。 EDXEDX(DataData),數(shù)據(jù)寄存器:),數(shù)據(jù)寄存器:EDXEDX作為通用寄存作為通用寄存器,與上述器,與上述3 3個(gè)寄存器的使用方法相同。但是,個(gè)寄存器的
40、使用方法相同。但是,CPUCPU執(zhí)行乘法指令時(shí),執(zhí)行乘法指令時(shí),EDXEDX固定用來(lái)存放部分乘積,固定用來(lái)存放部分乘積,CPUCPU執(zhí)行除法指令時(shí),執(zhí)行除法指令時(shí),EDXEDX固定用來(lái)存放被除數(shù)及余數(shù)等。固定用來(lái)存放被除數(shù)及余數(shù)等。 (2 2)指針及變址寄存器)指針及變址寄存器 四四個(gè)個(gè)3232位位的的通用寄存器通用寄存器(ESPESP、EBPEBP、ESIESI、EDIEDI)都可以用作一般的)都可以用作一般的3232位數(shù)據(jù)寄存器。也位數(shù)據(jù)寄存器。也可以用作一般的可以用作一般的1616位數(shù)據(jù)寄存器(位數(shù)據(jù)寄存器(SPSP、BPBP、SISI、DIDI),作一般的),作一般的1616位數(shù)據(jù)寄存
41、器使用時(shí),則與位數(shù)據(jù)寄存器使用時(shí),則與8086 CPU8086 CPU中的中的SPSP、BPBP、SISI、DIDI兼容。兼容。 另外,每個(gè)寄存器都有各自的專用場(chǎng)合。另外,每個(gè)寄存器都有各自的專用場(chǎng)合。 ESPESP:3232位的堆棧指針,以位的堆棧指針,以ESPESP為偏移地址,訪問(wèn)為偏移地址,訪問(wèn)的是堆棧存儲(chǔ)空間,一般用它來(lái)指向堆棧的棧底或棧的是堆棧存儲(chǔ)空間,一般用它來(lái)指向堆棧的棧底或棧頂。頂。 EBPEBP:3232位的基址指針,或稱為基址寄存器。以位的基址指針,或稱為基址寄存器。以EBPEBP為偏移地址,默認(rèn)訪問(wèn)的是堆棧存儲(chǔ)空間,一般為偏移地址,默認(rèn)訪問(wèn)的是堆棧存儲(chǔ)空間,一般用它來(lái)存放
42、偏移地址,以便訪問(wèn)堆棧區(qū)。用它來(lái)存放偏移地址,以便訪問(wèn)堆棧區(qū)。 ESIESI:3232位的源變址寄存器,位的源變址寄存器,ESIESI(或(或1616位的位的SISI)用于尋址串操作指令的源數(shù)據(jù)串。用于尋址串操作指令的源數(shù)據(jù)串。 EDIEDI:3232位的目的變址寄存器,位的目的變址寄存器,EDIEDI(或(或1616位的位的DIDI)用于尋址串操作指令的目的數(shù)據(jù)串。用于尋址串操作指令的目的數(shù)據(jù)串。 2.2.指令指針指令指針 擴(kuò)展的指令指針擴(kuò)展的指令指針EIPEIP(Extended(Extended Instruction Instruction Pointer)Pointer)是一個(gè)是一個(gè)
43、3232位位的專用寄存器,專用于尋址當(dāng)?shù)膶S眉拇嫫?,專用于尋址?dāng)前需要取出的指令碼。當(dāng)前需要取出的指令碼。當(dāng)CPUCPU從代碼段取出一字節(jié)從代碼段取出一字節(jié)指令后,指令后,EIPEIP就自動(dòng)加就自動(dòng)加1 1,指向下一字節(jié)的指令碼。,指向下一字節(jié)的指令碼。 當(dāng)當(dāng)8038680386及以上的及以上的3232位微處理器工作在保護(hù)模位微處理器工作在保護(hù)模式下時(shí),式下時(shí), EIPEIP的的3232位都有效;當(dāng)工作在實(shí)模式下時(shí),位都有效;當(dāng)工作在實(shí)模式下時(shí),3232位的位的EIPEIP僅低僅低1616位(位(IPIP)有效,與)有效,與80868086兼容。兼容。 圖圖2-6 80X862-6 80X86
44、及及PentiumPentium系列微處理器的標(biāo)志寄存器系列微處理器的標(biāo)志寄存器 31 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CFPentium/ Pentium Pentium/ Pentium
45、 8086/80888086/8088802868028680386DX80386DX80486SX/80486DX80486SX/80486DX 3232位位的的標(biāo)志寄存器標(biāo)志寄存器(EFLAGSEFLAGS)用于指示微處理)用于指示微處理器進(jìn)行算術(shù)和邏輯運(yùn)算后的狀態(tài)以及控制微處理器器進(jìn)行算術(shù)和邏輯運(yùn)算后的狀態(tài)以及控制微處理器的有關(guān)操作。圖的有關(guān)操作。圖2-62-6展示了展示了80X8680X86及及PentiumPentium系列微系列微處理器標(biāo)志寄存器的各位定義情況。處理器標(biāo)志寄存器的各位定義情況。 3.3.標(biāo)志寄存器標(biāo)志寄存器 EFLAGSEFLAGS在在8086 168086 16位
46、位FLAGSFLAGS基礎(chǔ)上擴(kuò)充了高基礎(chǔ)上擴(kuò)充了高1616位,位,其中,其中,F(xiàn)LAGS b11FLAGS b11b0b0中保留了中保留了8086 CPU8086 CPU中中6 6個(gè)狀態(tài)標(biāo)個(gè)狀態(tài)標(biāo)志和志和3 3個(gè)控制標(biāo)志,增加了個(gè)控制標(biāo)志,增加了NTNT與與IOPLIOPL,高,高1616位中新增位中新增了了6 6個(gè)標(biāo)志位,這些擴(kuò)充標(biāo)志位的含義如下:個(gè)標(biāo)志位,這些擴(kuò)充標(biāo)志位的含義如下: (1 1)NTNT,嵌套任務(wù)標(biāo)志嵌套任務(wù)標(biāo)志。 當(dāng)該位被置成當(dāng)該位被置成1 1時(shí),表示當(dāng)前所執(zhí)行的任務(wù)正嵌時(shí),表示當(dāng)前所執(zhí)行的任務(wù)正嵌套在另一任務(wù)中,該位的置套在另一任務(wù)中,該位的置1 1與清零都是通過(guò)任務(wù)的與
47、清零都是通過(guò)任務(wù)的控制轉(zhuǎn)移來(lái)實(shí)現(xiàn)的,顯然,控制轉(zhuǎn)移來(lái)實(shí)現(xiàn)的,顯然,NTNT用于保護(hù)模式。用于保護(hù)模式。 (2 2)IOPLIOPL,I/OI/O特權(quán)級(jí)別特權(quán)級(jí)別。 用來(lái)表示用來(lái)表示I/OI/O操作處于操作處于0 0 3 3級(jí)特權(quán)中的哪一級(jí),級(jí)特權(quán)中的哪一級(jí),0 0級(jí)最高,級(jí)最高,3 3級(jí)最低,它是用于指明在保護(hù)模式下不產(chǎn)級(jí)最低,它是用于指明在保護(hù)模式下不產(chǎn)生異常中斷生異常中斷1313而執(zhí)行而執(zhí)行I/OI/O指令時(shí),要求當(dāng)前特權(quán)級(jí)指令時(shí),要求當(dāng)前特權(quán)級(jí)CPLCPL的允許值。的允許值。 (3 3)RFRF(Resume FlagResume Flag),),恢復(fù)標(biāo)志恢復(fù)標(biāo)志。 它是一個(gè)與單步、斷點(diǎn)
48、調(diào)試一起使用的標(biāo)志。它是一個(gè)與單步、斷點(diǎn)調(diào)試一起使用的標(biāo)志。該位置該位置1 1時(shí),即使遇到斷點(diǎn)或調(diào)試故障,也不產(chǎn)生異時(shí),即使遇到斷點(diǎn)或調(diào)試故障,也不產(chǎn)生異常中斷常中斷1 1,即單步中斷。成功地執(zhí)行完一條指令后,即單步中斷。成功地執(zhí)行完一條指令后,該位會(huì)自動(dòng)清零。該位會(huì)自動(dòng)清零。 (4 4)VMVM(Virtual 8086 ModeVirtual 8086 Mode),),虛擬虛擬8686方式標(biāo)方式標(biāo)志位志位。 在保護(hù)模式下,若在保護(hù)模式下,若VMVM置置1 1,CPUCPU則轉(zhuǎn)移到虛擬則轉(zhuǎn)移到虛擬80868086模式,在此模式下,模式,在此模式下,CPUCPU像一個(gè)高速的像一個(gè)高速的8086
49、 CPU8086 CPU運(yùn)行運(yùn)行80868086的指令,一旦返回保護(hù)模式后,此位清零。的指令,一旦返回保護(hù)模式后,此位清零。 (5 5)ACAC,對(duì)準(zhǔn)檢查標(biāo)志位對(duì)準(zhǔn)檢查標(biāo)志位。 ACAC標(biāo)志僅對(duì)特權(quán)級(jí)標(biāo)志僅對(duì)特權(quán)級(jí)3 3的程序即用戶程序有效,的程序即用戶程序有效,若若AC=1AC=1,且系統(tǒng)級(jí)控制寄存器中,且系統(tǒng)級(jí)控制寄存器中AMAM位也為位也為1 1狀態(tài)時(shí),狀態(tài)時(shí),才允許對(duì)特權(quán)級(jí)才允許對(duì)特權(quán)級(jí)3 3的程序進(jìn)行數(shù)據(jù)的對(duì)準(zhǔn)檢查。若的程序進(jìn)行數(shù)據(jù)的對(duì)準(zhǔn)檢查。若AC=0AC=0,則不允許對(duì)準(zhǔn)檢查。,則不允許對(duì)準(zhǔn)檢查。 對(duì)準(zhǔn)數(shù)據(jù)的標(biāo)準(zhǔn)是:對(duì)準(zhǔn)數(shù)據(jù)的標(biāo)準(zhǔn)是:CPUCPU訪問(wèn)字?jǐn)?shù)據(jù)(訪問(wèn)字?jǐn)?shù)據(jù)(1616位
50、)位)時(shí)地址應(yīng)該為偶數(shù),訪問(wèn)雙字?jǐn)?shù)據(jù)(時(shí)地址應(yīng)該為偶數(shù),訪問(wèn)雙字?jǐn)?shù)據(jù)(3232位)時(shí)地址位)時(shí)地址應(yīng)該為應(yīng)該為4 4的倍數(shù),訪問(wèn)的倍數(shù),訪問(wèn)4 4字?jǐn)?shù)據(jù)(字?jǐn)?shù)據(jù)(6464位)時(shí)地址應(yīng)該位)時(shí)地址應(yīng)該為為8 8的倍數(shù)。一旦的倍數(shù)。一旦CPUCPU進(jìn)行未對(duì)準(zhǔn)地址訪問(wèn)內(nèi)存時(shí),進(jìn)行未對(duì)準(zhǔn)地址訪問(wèn)內(nèi)存時(shí),將產(chǎn)生異常中斷將產(chǎn)生異常中斷1717。 (6 6)VIFVIF,虛擬中斷標(biāo)志位虛擬中斷標(biāo)志位。 在虛擬在虛擬8686方式下,方式下,VIFVIF是中斷標(biāo)志是中斷標(biāo)志IFIF的拷貝。的拷貝。 (7 7)VIPVIP,虛擬中斷位虛擬中斷位。 虛擬中斷位指示是否有掛起的中斷,當(dāng)虛擬中斷位指示是否有掛起的中斷,
51、當(dāng)VIP=1VIP=1時(shí),表示有一個(gè)中斷正等待響應(yīng)與處理。時(shí),表示有一個(gè)中斷正等待響應(yīng)與處理。VIPVIP與與VIFVIF都起到控制虛擬中斷的作用。都起到控制虛擬中斷的作用。 (8 8) IDID,識(shí)別標(biāo)志位識(shí)別標(biāo)志位。 如果該標(biāo)志位能被置位和清零,則指明這個(gè)如果該標(biāo)志位能被置位和清零,則指明這個(gè)處理器能支持處理器能支持CPUIDCPUID指令。指令。CPUIDCPUID指令可以提供該指令可以提供該處理器的廠商、系列以及模式等信息。處理器的廠商、系列以及模式等信息。 4.64.6個(gè)個(gè)1616位的段寄存器位的段寄存器 32 32位微處理器包含位微處理器包含6 6個(gè)個(gè)1616位位的的段寄存器段寄存
52、器: 8086 CPU8086 CPU的的4 4個(gè)段寄存器:個(gè)段寄存器:代碼段寄存器代碼段寄存器CSCS、數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DSDS、附加數(shù)據(jù)段寄存器附加數(shù)據(jù)段寄存器ESES、堆棧段寄堆棧段寄存器存器SSSS。在實(shí)模式下,這四個(gè)段寄存器的使用與。在實(shí)模式下,這四個(gè)段寄存器的使用與8086 CPU8086 CPU兼容。兼容。 在保護(hù)模式下,它們作為段描述符,經(jīng)過(guò)段頁(yè)在保護(hù)模式下,它們作為段描述符,經(jīng)過(guò)段頁(yè)式變換后才能產(chǎn)生物理地址。式變換后才能產(chǎn)生物理地址。 3232位微處理器新增加位微處理器新增加2 2個(gè)個(gè)1616位的位的數(shù)據(jù)段數(shù)據(jù)段寄存器:寄存器:FSFS和和GSGS。 2.3 2.3
53、實(shí)模式下的存儲(chǔ)器尋址實(shí)模式下的存儲(chǔ)器尋址 2.3.1 2.3.1 實(shí)模式下的存儲(chǔ)器地址空間的劃分實(shí)模式下的存儲(chǔ)器地址空間的劃分 在實(shí)模式下,在實(shí)模式下,CPUCPU可以尋址的存儲(chǔ)空間是可以尋址的存儲(chǔ)空間是2 22020=1MB=1MB,即地址范圍是即地址范圍是00000H00000HFFFFFHFFFFFH,其中,從,其中,從00000H00000H003FFH003FFH是中斷向量表區(qū),共計(jì)有是中斷向量表區(qū),共計(jì)有10241024字節(jié),用于存放字節(jié),用于存放256256個(gè)個(gè)中斷向量中斷向量,中斷向量是指中斷服務(wù)程序的起始地,中斷向量是指中斷服務(wù)程序的起始地址,是采用邏輯地址表示法表示的,即每
54、個(gè)中斷向量址,是采用邏輯地址表示法表示的,即每個(gè)中斷向量包含包含4 4個(gè)字節(jié):個(gè)字節(jié):2 2個(gè)字節(jié)的代碼段值,個(gè)字節(jié)的代碼段值,2 2個(gè)字節(jié)的偏移地個(gè)字節(jié)的偏移地址,這與址,這與MS-DOSMS-DOS下下8086 CPU8086 CPU系統(tǒng)的完全相同。實(shí)模式系統(tǒng)的完全相同。實(shí)模式下下1MB1MB存儲(chǔ)器地址空間如圖存儲(chǔ)器地址空間如圖2-72-7所示。所示。圖圖2-7 2-7 實(shí)模式下實(shí)模式下1MB1MB存儲(chǔ)器地址空間存儲(chǔ)器地址空間 00000H00000H003FFH003FFH00400H00400HFFFEFHFFFEFHFFFF0HFFFF0HFFFFFHFFFFFH初始化代碼區(qū)初始化代
55、碼區(qū) 通用區(qū)通用區(qū) 中斷向量表區(qū)中斷向量表區(qū)2.3.2 2.3.2 實(shí)模式下存儲(chǔ)器的分段管理技術(shù)實(shí)模式下存儲(chǔ)器的分段管理技術(shù) CPU CPU訪問(wèn)存儲(chǔ)器單元是以字節(jié)為單位進(jìn)行的,每個(gè)訪問(wèn)存儲(chǔ)器單元是以字節(jié)為單位進(jìn)行的,每個(gè)存儲(chǔ)器單元有唯一的地址。實(shí)模式下可直接尋址存儲(chǔ)器單元有唯一的地址。實(shí)模式下可直接尋址4GB4GB內(nèi)內(nèi)存中僅存中僅1MB1MB的存儲(chǔ)空間,地址范圍是的存儲(chǔ)空間,地址范圍是00000H00000HFFFFFHFFFFFH。 在實(shí)模式下,存儲(chǔ)器尋址所采用的指令,都只允在實(shí)模式下,存儲(chǔ)器尋址所采用的指令,都只允許使用許使用1616位寄存器或位寄存器或1616位的直接地址作為偏移地址,位
56、的直接地址作為偏移地址,這稱為這稱為1616位段,與位段,與80868086系統(tǒng)相同,仍然采用了存儲(chǔ)器系統(tǒng)相同,仍然采用了存儲(chǔ)器的分段管理技術(shù),把存儲(chǔ)器分成四種類型的段,把的分段管理技術(shù),把存儲(chǔ)器分成四種類型的段,把1616位位段寄存器的值乘以段寄存器的值乘以1616,獲得,獲得2020位的段首地址。位的段首地址。 段寄存器的值就是段首地址的高段寄存器的值就是段首地址的高1616位,稱其為位,稱其為“段基地址段基地址”(Segment Base ValueSegment Base Value)。 8086/80186/80286 CPU 8086/80186/80286 CPU設(shè)置了設(shè)置了4
57、4個(gè)個(gè)1616位的段寄存位的段寄存器:器: 代碼段代碼段CSCS、數(shù)據(jù)段、數(shù)據(jù)段DSDS、堆棧段、堆棧段SSSS和附加段和附加段ESES。 由操作系統(tǒng)根據(jù)當(dāng)前的應(yīng)用程序,可以定位當(dāng)前由操作系統(tǒng)根據(jù)當(dāng)前的應(yīng)用程序,可以定位當(dāng)前的代碼段(值)、當(dāng)前的數(shù)據(jù)段(值)、當(dāng)前的堆棧的代碼段(值)、當(dāng)前的數(shù)據(jù)段(值)、當(dāng)前的堆棧段(值)和當(dāng)前的附加段(值);段(值)和當(dāng)前的附加段(值); 將當(dāng)前代碼段的基地址存放在將當(dāng)前代碼段的基地址存放在CSCS中,當(dāng)前數(shù)據(jù)段中,當(dāng)前數(shù)據(jù)段的基地址存放在的基地址存放在DSDS中,當(dāng)前堆棧段的基地址存放在中,當(dāng)前堆棧段的基地址存放在SSSS中,當(dāng)前附加數(shù)據(jù)段的基地址存放在中
58、,當(dāng)前附加數(shù)據(jù)段的基地址存放在ESES中。中。 系統(tǒng)的整個(gè)存儲(chǔ)空間可分成系統(tǒng)的整個(gè)存儲(chǔ)空間可分成1616個(gè)互不重疊的個(gè)互不重疊的邏輯段,如圖邏輯段,如圖2-82-8(a a)所示。)所示。 圖圖2-8 2-8 存儲(chǔ)器分段邏輯結(jié)構(gòu)存儲(chǔ)器分段邏輯結(jié)構(gòu) 0 0 段段1 1 段段2 2 段段15 15 段段00000H00000H0FFFFH0FFFFH1FFFFH1FFFFH20000H20000H2FFFFH2FFFFHF0000HF0000HFFFFFHFFFFFH10000H10000H64KB64KB64KB64KB1616個(gè)邏輯段個(gè)邏輯段64KB64KB64KB64KB(a)(a) 1.1
59、.存儲(chǔ)器每個(gè)段的最大容量為存儲(chǔ)器每個(gè)段的最大容量為64KB64KB,根據(jù)各個(gè)不,根據(jù)各個(gè)不同的程序,操作系統(tǒng)安排大小不同的各類存儲(chǔ)段。同的程序,操作系統(tǒng)安排大小不同的各類存儲(chǔ)段。 2.2.允許各邏輯段在整個(gè)存儲(chǔ)空間中浮動(dòng),即段與允許各邏輯段在整個(gè)存儲(chǔ)空間中浮動(dòng),即段與段之間可以部分重疊、完全重疊、連接排列,也可以段之間可以部分重疊、完全重疊、連接排列,也可以是分開(kāi)的,如圖是分開(kāi)的,如圖2-82-8(b b)所示。)所示。 圖圖2-8 2-8 存儲(chǔ)器分段邏輯結(jié)構(gòu)存儲(chǔ)器分段邏輯結(jié)構(gòu) 00000H00000H邏輯段邏輯段1 1起點(diǎn)起點(diǎn)FFFFFHFFFFFH邏輯段邏輯段2 2起點(diǎn)起點(diǎn)邏輯段邏輯段3
60、3起點(diǎn)起點(diǎn)邏輯段邏輯段4 4、5 5起點(diǎn)起點(diǎn)(b)(b)邏輯段邏輯段164KB164KB邏輯段邏輯段264KB264KB邏輯段邏輯段364KB364KB邏輯段邏輯段4 4、564KB564KB3.3.邏輯段邏輯段1 1和邏輯段和邏輯段2 2是分開(kāi)的,邏輯段是分開(kāi)的,邏輯段2 2和邏輯段和邏輯段3 3是連接排列的,邏輯段是連接排列的,邏輯段4 4和邏輯段和邏輯段5 5是完全重疊的。是完全重疊的。2.3.3 2.3.3 實(shí)模式下存儲(chǔ)器的尋址實(shí)模式下存儲(chǔ)器的尋址 1.1.實(shí)模式下物理地址的產(chǎn)生實(shí)模式下物理地址的產(chǎn)生 (1 1)物理地址物理地址 從從8088/80868088/8086開(kāi)始,開(kāi)始,CP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 22200.3-2025低壓電器可靠性第3部分:過(guò)載繼電器可靠性試驗(yàn)方法
- 江西省萍鄉(xiāng)市2024-2025學(xué)年高二上學(xué)期期末考試物理試卷(含答案)
- 廣東省廣州市白云區(qū)2025-2026學(xué)年八年級(jí)上學(xué)期期末考試英語(yǔ)試題(含答案無(wú)聽(tīng)力音頻及原文)
- 五年級(jí)期末考試卷及答案
- 微生物學(xué)試題及答案
- 北京航空航天大學(xué)《德國(guó)文學(xué)選讀》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 2025 四年級(jí)科學(xué)上冊(cè)小學(xué)科學(xué)上冊(cè)綜合復(fù)習(xí)課件
- 2021年湖南歷史高考一分一段位次表出爐
- 2023年人教版一年級(jí)語(yǔ)文下冊(cè)期中試卷(及參考答案)
- 南通事業(yè)單位招聘2022年考試全真模擬試題4套及答案解析(附后)
- 商超信息系統(tǒng)操作規(guī)定
- 如何做好一名護(hù)理帶教老師
- 房地產(chǎn)項(xiàng)目回款策略與現(xiàn)金流管理
- 非連續(xù)性文本閱讀(中考試題20篇)-2024年中考語(yǔ)文重難點(diǎn)復(fù)習(xí)攻略(解析版)
- 畜禽糞污資源化利用培訓(xùn)
- 《搶救藥物知識(shí)》課件
- 建筑工程咨詢服務(wù)合同(標(biāo)準(zhǔn)版)
- 2024年4月自考05424現(xiàn)代設(shè)計(jì)史試題
- 綜合能源管理系統(tǒng)平臺(tái)方案設(shè)計(jì)及實(shí)施合集
- 甲苯磺酸奧馬環(huán)素片-藥品臨床應(yīng)用解讀
- 共享單車對(duì)城市交通的影響研究
評(píng)論
0/150
提交評(píng)論