第二IA結構微處理器與_第1頁
第二IA結構微處理器與_第2頁
第二IA結構微處理器與_第3頁
第二IA結構微處理器與_第4頁
第二IA結構微處理器與_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2021-12-141第第 2 章章 IA-32結構微處理器與結構微處理器與80862021-12-142 IA-32 IA-32微處理器是微處理器是80868086的延伸的延伸2.1 8086 8086的功能結構的功能結構2.2 8086 8086微處理器的執(zhí)行環(huán)境微處理器的執(zhí)行環(huán)境2.32021-12-1432.1 IA-32 微處理器是微處理器是8086的延伸的延伸nIA-32結構微處理器的增長基本上按摩爾定律發(fā)結構微處理器的增長基本上按摩爾定律發(fā)展,已經(jīng)經(jīng)歷許多代。展,已經(jīng)經(jīng)歷許多代。n但從使用者(包括程序員)的角度來看,它是以但從使用者(包括程序員)的角度來看,它是以8086處理器為

2、基礎,是一個兼容的微處理器系處理器為基礎,是一個兼容的微處理器系列,是列,是8086在功能上和性能上的延伸。在功能上和性能上的延伸。2021-12-1442.1.1 8086功能的擴展功能的擴展1. 從從16位擴展為位擴展為32位位n8086是是16位微處理器。位微處理器。n內(nèi)部寄存器的主體是內(nèi)部寄存器的主體是16位的。位的。n主要用于存放操作數(shù)的數(shù)據(jù)寄存器是主要用于存放操作數(shù)的數(shù)據(jù)寄存器是16位位n主要用作為地址指針的指針寄存器是主要用作為地址指針的指針寄存器是16位位n依賴分段機制,用依賴分段機制,用20位段基地址加上位段基地址加上16位的偏位的偏移量形成了移量形成了20位的地址,以尋址位

3、的地址,以尋址1MB的物理地的物理地址。址。2021-12-145 n1985年,年,Intel公司推出了第一個公司推出了第一個32位的微處位的微處理器理器 - 80386,開創(chuàng)了微處理器的,開創(chuàng)了微處理器的32位時代。位時代。n32位地址能尋址位地址能尋址4GB物理地址。物理地址。2021-12-146 2. 從實模式至保護模式從實模式至保護模式n1981年,年,IBM公司剛推出公司剛推出IBM-PC時,主頻是時,主頻是5MHz,內(nèi)存是,內(nèi)存是64KB-128KB,沒有硬盤,只,沒有硬盤,只有單面單密度的軟盤,到了有單面單密度的軟盤,到了PC/XT,才有,才有10MB硬盤。在這樣的硬件資源下

4、,采用的操硬盤。在這樣的硬件資源下,采用的操作系統(tǒng)是作系統(tǒng)是PC-DOS(MS-DOS)。這是單用戶、)。這是單用戶、單任務的磁盤操作系統(tǒng)。操作系統(tǒng)本身沒有程單任務的磁盤操作系統(tǒng)。操作系統(tǒng)本身沒有程序隔離、沒有保護。這是序隔離、沒有保護。這是DOS遭受病毒泛濫的遭受病毒泛濫的內(nèi)因。內(nèi)因。2021-12-147 n隨著隨著PC機的大量普及,隨著硬件性能的迅速提機的大量普及,隨著硬件性能的迅速提高。要求有能保護操作系統(tǒng)核心軟件的多任務操高。要求有能保護操作系統(tǒng)核心軟件的多任務操作系統(tǒng)。為使這樣的操作系統(tǒng)能在微型計算機系作系統(tǒng)。為使這樣的操作系統(tǒng)能在微型計算機系統(tǒng)中應用與普及,要求微處理器本身為這樣

5、的操統(tǒng)中應用與普及,要求微處理器本身為這樣的操作系統(tǒng)提供支持。作系統(tǒng)提供支持。n從從80286開始,在開始,在80386中真正完善中真正完善保護模式保護模式。在保護模式下,程序運行于四個特權級。這樣,在保護模式下,程序運行于四個特權級。這樣,可以實現(xiàn)操作系統(tǒng)核心程序與應用程序的嚴格的可以實現(xiàn)操作系統(tǒng)核心程序與應用程序的嚴格的隔離。保護模式支持多任務機制,任務之間完全隔離。保護模式支持多任務機制,任務之間完全隔離。隔離。2021-12-148 3.片內(nèi)存儲管理單元片內(nèi)存儲管理單元 MMUn32位地址,可尋址位地址,可尋址4GB物理地址。大多數(shù)物理地址。大多數(shù)PC機的物理機的物理內(nèi)存配置遠小于內(nèi)存

6、配置遠小于4GB。應用程序卻需要龐大的地址空。應用程序卻需要龐大的地址空間。間。n操作系統(tǒng)中提供了虛擬存儲器管理機制,同時要求硬件操作系統(tǒng)中提供了虛擬存儲器管理機制,同時要求硬件支持。支持。80386中提供了片內(nèi)的中提供了片內(nèi)的MMU,提供了,提供了4K頁、頁頁、頁表等支持。表等支持。n以上三點是以上三點是80386相對于相對于8086的主要功能擴展。的主要功能擴展。2021-12-149 4. 浮點支持浮點支持n工程應用、圖形處理、科學計算等要求浮點支持工程應用、圖形處理、科學計算等要求浮點支持(實數(shù)運算)。(實數(shù)運算)。n自自80486芯片開始,在芯片開始,在IA-32微處理器中集成了微處

7、理器中集成了x87(及其增強)浮點單元。(及其增強)浮點單元。2021-12-1410 5. MMX技術技術n多媒體技術的應用多媒體技術的應用n音樂合成、語音合成、語音識別、音頻和視頻音樂合成、語音合成、語音識別、音頻和視頻壓縮(編碼)和解壓縮(譯碼)、壓縮(編碼)和解壓縮(譯碼)、2D 和和 3D 圖形(包括圖形(包括 3D 結構映像)和流視頻等等。結構映像)和流視頻等等。nIA-32處理器中增加處理器中增加MMX技術及相應的指令技術及相應的指令2021-12-1411 6. 流流SIMD擴展(擴展(SSE) n自自Pentium III處理器開始,在處理器開始,在IA-32微處理器微處理器

8、中引進了流中引進了流SIMD(單指令多數(shù)據(jù))擴展(單指令多數(shù)據(jù))擴展(SSE)技術。技術。nSSE擴展把由擴展把由Intel MMX引進的引進的SIMD執(zhí)行模式執(zhí)行模式擴展為新的擴展為新的128位位XMM寄存器和能在包裝的單寄存器和能在包裝的單精度浮點數(shù)上執(zhí)行精度浮點數(shù)上執(zhí)行SIMD操作。操作。2021-12-1412 n奔騰奔騰4處理器又進一步擴展為流處理器又進一步擴展為流SIMD擴展擴展2(SSE2):):n用用144條新指令擴展條新指令擴展Intel MMX技術和技術和SSE擴擴展,它包括支持:展,它包括支持:n128位位SIMD整數(shù)算術操作。整數(shù)算術操作。n128位位SIMD雙精度浮點

9、操作。雙精度浮點操作。n128 位指令設計以支持媒體和科學應用。位指令設計以支持媒體和科學應用。2021-12-14132.1.2 8086性能的提高性能的提高 1. 利用流水線技術提高操作的并行性利用流水線技術提高操作的并行性n提高性能兩方面提高性能兩方面n利用超大規(guī)模集成電路的工藝與制造技術提高利用超大規(guī)模集成電路的工藝與制造技術提高芯片的主頻。即減少一個時鐘周期的時間。芯片的主頻。即減少一個時鐘周期的時間。n縮短執(zhí)行指令的時鐘周期數(shù)??s短執(zhí)行指令的時鐘周期數(shù)。2021-12-1414 n在在8086中,利用流水線把取指令與執(zhí)行指令重中,利用流水線把取指令與執(zhí)行指令重疊,減少了等待取指令的

10、時間,從而使大部分指疊,減少了等待取指令的時間,從而使大部分指令的執(zhí)行為四個時鐘周期。令的執(zhí)行為四個時鐘周期。n80386利用芯片內(nèi)由利用芯片內(nèi)由6個能并行操作的功能部件個能并行操作的功能部件組成,從而使執(zhí)行一條指令縮短為兩個時鐘周期。組成,從而使執(zhí)行一條指令縮短為兩個時鐘周期。n80486將將80386處理器的指令譯碼和執(zhí)行部件處理器的指令譯碼和執(zhí)行部件擴展成五級流水線,進一步增強了其并行處理能擴展成五級流水線,進一步增強了其并行處理能力,在五級流水線中最多可有五條指令被同時執(zhí)力,在五級流水線中最多可有五條指令被同時執(zhí)行,每級都能在一個時鐘周期內(nèi)執(zhí)行一條指令,行,每級都能在一個時鐘周期內(nèi)執(zhí)行

11、一條指令,80486微處理器最快能夠在每個微處理器最快能夠在每個CPU時鐘周期時鐘周期內(nèi)執(zhí)行一條指令。內(nèi)執(zhí)行一條指令。2021-12-1415 n奔騰處理器增加了第二個執(zhí)行流水線以達到超標奔騰處理器增加了第二個執(zhí)行流水線以達到超標量性能(兩個已知的流水線量性能(兩個已知的流水線u和和v,一起工作能,一起工作能實現(xiàn)每個時鐘執(zhí)行兩條指令)。實現(xiàn)每個時鐘執(zhí)行兩條指令)。nIntel Pentium 4處理器是第一個基于處理器是第一個基于Intel NetBurst微結構的處理器。微結構的處理器。Intel NetBurst微微結構是新的結構是新的32bit微結構,它允許處理器能在比微結構,它允許處理

12、器能在比以前的以前的IA-32處理器更高的時鐘速度和性能等級處理器更高的時鐘速度和性能等級上進行操作。上進行操作。Intel Pentium 4處理器有快速的處理器有快速的執(zhí)行引擎、執(zhí)行引擎、Hyper流水線技術與高級的動態(tài)執(zhí)行。流水線技術與高級的動態(tài)執(zhí)行。使指令執(zhí)行的并行性進一步提高,從而做到在一使指令執(zhí)行的并行性進一步提高,從而做到在一個時鐘周期中可以執(zhí)行多條指令。個時鐘周期中可以執(zhí)行多條指令。2021-12-1416 2. 引入片內(nèi)緩存(引入片內(nèi)緩存(CACHE)n隨著超大規(guī)模集成電路技術的發(fā)展,存儲器的集隨著超大規(guī)模集成電路技術的發(fā)展,存儲器的集成度和工作速度都有了極大的提高。但是,相

13、對成度和工作速度都有了極大的提高。但是,相對于于CPU的工作速度仍然至少差一個數(shù)量級。的工作速度仍然至少差一個數(shù)量級。n為了減少從存儲器中取指令與數(shù)據(jù)的時間,利用為了減少從存儲器中取指令與數(shù)據(jù)的時間,利用指令執(zhí)行的指令執(zhí)行的局部性原理局部性原理,把近期可能要用到的指,把近期可能要用到的指令與數(shù)據(jù)放在工作速度比主存儲器更高(當然,令與數(shù)據(jù)放在工作速度比主存儲器更高(當然,容量更?。┑木彺嬷?。容量更?。┑木彺嬷?。2021-12-1417 n在處理器芯片中實現(xiàn)了緩存。在處理器芯片中實現(xiàn)了緩存。n目前,通常在處理器芯片上有指令和數(shù)據(jù)分開的目前,通常在處理器芯片上有指令和數(shù)據(jù)分開的一級緩存與指令與數(shù)據(jù)混

14、合的二級緩存。且緩存一級緩存與指令與數(shù)據(jù)混合的二級緩存。且緩存的容量越來越大。從而進一步提高了處理器的性的容量越來越大。從而進一步提高了處理器的性能。能。2021-12-1418 n8086是是IA-32系列處理器的基礎。系列處理器的基礎。n任一種任一種IA-32處理器芯片在上電后,就是處在處理器芯片在上電后,就是處在8086的實模式。根據(jù)需要,用指令進入各種操的實模式。根據(jù)需要,用指令進入各種操作模式。作模式。n學習學習IA-32處理器必須學習掌握處理器必須學習掌握8086,也只能,也只能從從8086入手。入手。 2021-12-1419 n從指令,從編程來說,幾乎沒有用匯編語言來使從指令,

15、從編程來說,幾乎沒有用匯編語言來使用浮點指令、用浮點指令、MMX指令與指令與XMM指令的,都是通指令的,都是通過高級語言來使用這些指令的。過高級語言來使用這些指令的。n絕大部分程序員(除了編寫操作系統(tǒng)代碼的外),絕大部分程序員(除了編寫操作系統(tǒng)代碼的外),面對面對IA-32處理器的指令,實際上是面對處理器的指令,實際上是面對8086指令。指令。n因此,本書從因此,本書從8086入手來學習與掌握入手來學習與掌握IA-32處處理器。理器。2021-12-14202.28086的功能結構的功能結構n8086nIntel系列的系列的16位微處理器位微處理器n16根數(shù)據(jù)線根數(shù)據(jù)線n20根地址線根地址線n

16、可處理可處理8位或位或16位數(shù)據(jù)位數(shù)據(jù)n尋址尋址1M字節(jié)的存儲單元和字節(jié)的存儲單元和64K的的I/O端口。端口。n8088是準是準16位微處理器,內(nèi)部結構與位微處理器,內(nèi)部結構與8086相相同,但外部數(shù)據(jù)總線只有同,但外部數(shù)據(jù)總線只有8條。條。2021-12-1421圖圖2-18086的功能結構的功能結構2021-12-1422 n8086CPU從功能上分成兩大部分從功能上分成兩大部分n總線接口單元總線接口單元BIU(Bus Interface Unit)n負責負責8086CPU與存儲器之間的信息傳送。與存儲器之間的信息傳送。n從內(nèi)存的指定單元取出指令,送至指令流隊列中排隊。n從內(nèi)存的指定區(qū)域

17、取出執(zhí)行指令時所需的操作數(shù),傳送給EU部分去執(zhí)行。n執(zhí)行單元執(zhí)行單元EU(Execution Unit)n負責指令的執(zhí)行。負責指令的執(zhí)行。n主要由數(shù)據(jù)寄存器、指針寄存器與算術邏輯單元(ALU)組成。2021-12-1423 n在在8080與與8085以及標準的以及標準的8位位CPU中,程序的中,程序的執(zhí)行是由取指和執(zhí)行指令的循環(huán)來完成的。在每執(zhí)行是由取指和執(zhí)行指令的循環(huán)來完成的。在每一條指令執(zhí)行完以后,一條指令執(zhí)行完以后,CPU必須等待到下一條指必須等待到下一條指令取出來以后才能執(zhí)行。令取出來以后才能執(zhí)行。圖圖2-22-28 8位微處理器的執(zhí)行順序位微處理器的執(zhí)行順序2021-12-1424n

18、8086CPU中,取指部分中,取指部分BIU與執(zhí)行指令部分與執(zhí)行指令部分EU是分開的,取指和執(zhí)行可以重疊進行。是分開的,取指和執(zhí)行可以重疊進行。n在一條指令的執(zhí)行過程中,可取出下一條(或在一條指令的執(zhí)行過程中,可取出下一條(或多條)指令,在指令流隊列中排隊。在一條指多條)指令,在指令流隊列中排隊。在一條指令執(zhí)行完以后可立即執(zhí)行下一條指令。令執(zhí)行完以后可立即執(zhí)行下一條指令。圖圖2-38086的執(zhí)行順序的執(zhí)行順序2021-12-1425 n重疊的操作技術(流水線)重疊的操作技術(流水線)減少了減少了CPU為取指令為取指令而等待的時間,提高了而等待的時間,提高了CPU的利用率,提高了整的利用率,提高

19、了整個運行速度。個運行速度。n提高整個程序的執(zhí)行速度提高整個程序的執(zhí)行速度n降低了與之相配的存儲器的存取速度的要求降低了與之相配的存儲器的存取速度的要求n流水線技術在流水線技術在IA-32系列微處理器中得到了廣泛系列微處理器中得到了廣泛的使用與提高。的使用與提高。2021-12-14262.38086微處理器的執(zhí)行環(huán)境微處理器的執(zhí)行環(huán)境n處理器的執(zhí)行環(huán)境處理器的執(zhí)行環(huán)境:指:指匯編語言程序員匯編語言程序員看到的處看到的處理器如何執(zhí)行指令及如何存儲和操作數(shù)據(jù)。理器如何執(zhí)行指令及如何存儲和操作數(shù)據(jù)。n執(zhí)行環(huán)境包括執(zhí)行環(huán)境包括n內(nèi)存(地址空間)內(nèi)存(地址空間)n通用數(shù)據(jù)寄存器通用數(shù)據(jù)寄存器n段寄存器

20、段寄存器n標志寄存器(標志寄存器(EFLAGES)n指令指針寄存器等指令指針寄存器等2021-12-14272.3.1基本執(zhí)行環(huán)境概要基本執(zhí)行環(huán)境概要n8086處理器的執(zhí)行環(huán)境處理器的執(zhí)行環(huán)境:在:在8086處理器上執(zhí)行處理器上執(zhí)行的程序或任務所需要的一組執(zhí)行指令的的程序或任務所需要的一組執(zhí)行指令的資源資源,用,用于存儲代碼、數(shù)據(jù)和狀態(tài)信息。于存儲代碼、數(shù)據(jù)和狀態(tài)信息。2021-12-1428 1、地址空間地址空間n8086處理器上運行的任一任務或程序能尋址處理器上運行的任一任務或程序能尋址1MB(220)字節(jié)的線性地址空間。字節(jié)的線性地址空間。2、基本程序執(zhí)行寄存器基本程序執(zhí)行寄存器n八個通

21、用寄存器八個通用寄存器n四個段寄存器四個段寄存器n標志寄存器標志寄存器FLAGSnIP(指令指針)寄存器(指令指針)寄存器3、堆棧(堆棧(stack)n為支持過程或子程序調用并在過程或子程序之間傳遞參數(shù)為支持過程或子程序調用并在過程或子程序之間傳遞參數(shù)n堆棧定位在內(nèi)存中堆棧定位在內(nèi)存中4、I/O端口端口n支持數(shù)據(jù)在處理器和輸入輸出(支持數(shù)據(jù)在處理器和輸入輸出(I/O)端口之間的傳送。)端口之間的傳送。2021-12-14292.3.2基本的程序執(zhí)行寄存器基本的程序執(zhí)行寄存器n基本程序執(zhí)行寄存器基本程序執(zhí)行寄存器:為了應用程序編程所提供,:為了應用程序編程所提供,組成執(zhí)行組成執(zhí)行通用指令通用指令

22、的基本執(zhí)行環(huán)境。的基本執(zhí)行環(huán)境。n通用指令通用指令n執(zhí)行字節(jié)、字整型數(shù)的基本整數(shù)算術運算執(zhí)行字節(jié)、字整型數(shù)的基本整數(shù)算術運算n處理程序流程控制處理程序流程控制n在字節(jié)串上操作并尋址存儲器在字節(jié)串上操作并尋址存儲器2021-12-1430 n寄存器分組如下寄存器分組如下1、通用寄存器通用寄存器n八個,用于存放操作數(shù)和指針。八個,用于存放操作數(shù)和指針。2、段寄存器段寄存器n最多能保存四個段選擇子。最多能保存四個段選擇子。3、FLAGS(程序狀態(tài)和控制)寄存器(程序狀態(tài)和控制)寄存器n報告正在執(zhí)行的程序的狀態(tài),并允許有限報告正在執(zhí)行的程序的狀態(tài),并允許有限地(應用程序級)控制處理器。地(應用程序級)

23、控制處理器。4、IP(指令指針)寄存器(指令指針)寄存器n下一條要執(zhí)行的指令的下一條要執(zhí)行的指令的16位指針。位指針。2021-12-14318086的寄存器組的寄存器組15 8 7 02021-12-1432 1、通用寄存器通用寄存器n八個八個16位通用寄存器位通用寄存器nAX、BX、CX、DXnSI、DI、BP、SPn用途用途n邏輯和算術操作的操作數(shù)邏輯和算術操作的操作數(shù)n用于地址計算的操作數(shù)用于地址計算的操作數(shù)n內(nèi)存指針內(nèi)存指針2021-12-1433 1)AX、BX、CX、DXn16位數(shù)據(jù)寄存器位數(shù)據(jù)寄存器n存放操作數(shù)存放操作數(shù)n可以字節(jié)(可以字節(jié)(8位)的形式訪問位)的形式訪問nAH

24、、BH、CH、DHnAL、BL、CL、DL2021-12-1434n數(shù)據(jù)寄存器的專用目的數(shù)據(jù)寄存器的專用目的nAX(Accumulator)n累加器、I/O指令使用AX與外設傳送信息nBX(Base)n常用作基址寄存器nCX(Count)n循環(huán)、串指令中的計數(shù)器nDX(Data)n與AX組合存放雙字,存放I/O的端口地址2021-12-14352021-12-1436 2)SI、DI、BP、SPn16位指針寄存器,只能以字為單位使用位指針寄存器,只能以字為單位使用n可存放操作數(shù)可存放操作數(shù)n主要用作地址指針。主要用作地址指針。2021-12-1437n指針寄存器的專用目的指針寄存器的專用目的n

25、SP(Stack Pointer)堆棧指針寄存器)堆棧指針寄存器n與SS寄存器聯(lián)用指示棧頂?shù)钠频刂穘BP(Base Pointer Register)基址指針寄存器)基址指針寄存器n與SS寄存器聯(lián)用確定堆棧段中的某一存儲單元的地址nSI(Source Index Register)源變址寄存器)源變址寄存器n常用于串操作。與DS聯(lián)用確定數(shù)據(jù)段中某一存儲單元的地址,可自動增減量nDI(Destination Index Register)目的變址寄存)目的變址寄存器器n同SI2021-12-1438 2段寄存器段寄存器n16位寄存器位寄存器n專門存放邏輯段的起始地址專門存放邏輯段的起始地址nC

26、S(Code Segment)代碼段)代碼段nDS(Data Segment)數(shù)據(jù)段)數(shù)據(jù)段nSS(Stack Segment)堆棧段)堆棧段nES(Extra Segment)附加段)附加段2021-12-1439 n使用使用分段存儲模式分段存儲模式時,每一個段寄存器用不同的時,每一個段寄存器用不同的段選擇子加載,每個段寄存器指向線性地址空間段選擇子加載,每個段寄存器指向線性地址空間中的不同的段。中的不同的段。2021-12-1440 n任何時候,一個程序能訪問多至線性地址空間中任何時候,一個程序能訪問多至線性地址空間中四個段。四個段。n為訪問未由一個段寄存器指向的段,程序必須首為訪問未由一

27、個段寄存器指向的段,程序必須首先把要訪問的段的段選擇子加載至一個段寄存器。先把要訪問的段的段選擇子加載至一個段寄存器。2021-12-1441n代碼段(代碼段(Code Segment)n代碼段:存放程序的指令序列。代碼段:存放程序的指令序列。n代碼段寄存器代碼段寄存器CS存放代碼段的段地址存放代碼段的段地址n指令指針寄存器指令指針寄存器IP指示下條指令的偏移地址指示下條指令的偏移地址n處理器利用處理器利用CS:IP取得下一條要執(zhí)行的指令取得下一條要執(zhí)行的指令nCS寄存器寄存器不能由應用程序直接加載不能由應用程序直接加載,而是由,而是由改變程序控制的指令或內(nèi)部處理器指令(例如,改變程序控制的指

28、令或內(nèi)部處理器指令(例如,過程調用、中斷處理)隱含加載。過程調用、中斷處理)隱含加載。2021-12-1442n堆棧段(堆棧段(Stack Segment)n堆棧段:確定堆棧所在的主存區(qū)域。堆棧段:確定堆棧所在的主存區(qū)域。n堆棧段寄存器堆棧段寄存器SS存放堆棧段的段地址存放堆棧段的段地址n堆棧指針寄存器堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂分甘径褩m數(shù)钠频刂穘處理器利用處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)操作堆棧頂?shù)臄?shù)據(jù)nSS寄存器能顯式加載。它允許應用程序設置寄存器能顯式加載。它允許應用程序設置多個堆棧并在堆棧之間切換。多個堆棧并在堆棧之間切換。2021-12-1443n數(shù)據(jù)段(數(shù)據(jù)段

29、(Data Segment)n數(shù)據(jù)段:存放運行程序所用的數(shù)據(jù)。數(shù)據(jù)段:存放運行程序所用的數(shù)據(jù)。n數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址。存放數(shù)據(jù)段的段地址。n各種主存尋址方式(有效地址各種主存尋址方式(有效地址EA)得到存儲)得到存儲器中操作數(shù)的偏移地址。器中操作數(shù)的偏移地址。n處理器利用處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)。存取數(shù)據(jù)段中的數(shù)據(jù)。2021-12-1444n附加段(附加段(Extra Segment)n附加段:附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存。附加段:附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存。n附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址n各種主存尋址方式(有效

30、地址各種主存尋址方式(有效地址EA)得到存儲)得到存儲器中操作數(shù)的偏移地址器中操作數(shù)的偏移地址n處理器利用處理器利用ES:EA存取附加段中的數(shù)據(jù)存取附加段中的數(shù)據(jù)n串操作指令將附加段作為其目的操作數(shù)的存放串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域。區(qū)域。2021-12-1445 3FLAGS寄存器寄存器n16位位FLAGS寄存器包含一組狀態(tài)標志、一個控寄存器包含一組狀態(tài)標志、一個控制標志、兩個系統(tǒng)標志。制標志、兩個系統(tǒng)標志。2021-12-1446標志寄存器(標志寄存器(PSW) 條件碼標志:條件碼標志: 控制標志:控制標志: 系統(tǒng)標志:系統(tǒng)標志:OF OF 溢出標志溢出標志DF DF 方向

31、標志方向標志IF IF 中斷標志中斷標志SF SF 符號標志符號標志TF TF 陷阱標志陷阱標志ZF ZF 零標志零標志CF CF 進位標志進位標志AF AF 輔助進位標志輔助進位標志PF PF 奇偶標志奇偶標志 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF例:例:ADD AX, BX JO / JC ERROR ?2021-12-1447 n在處理器初始化(由在處理器初始化(由RESET腳或腳或INIT腳有效)之后,腳有效)之后,F(xiàn)LAGS寄存器是寄存器是0002H。此寄存器的位。此寄存器的位1、3、5、12-

32、15保留。軟件不能用或依賴于這些位中的任一個。保留。軟件不能用或依賴于這些位中的任一個。n以下指令能用于標志組與堆?;蛞韵轮噶钅苡糜跇酥窘M與堆?;駻X寄存器之間的移動寄存器之間的移動nLAHFnSAHFnPUSHFnPOPFn當當FLAGS寄存器的內(nèi)容傳送至過程堆?;蚣拇嫫鞯膬?nèi)容傳送至過程堆棧或AX寄存器之后,寄存器之后,標志位可進行修改。標志位可進行修改。n當調用中斷或異常處理時,處理器自動保存當調用中斷或異常處理時,處理器自動保存FLAGS寄存寄存器的狀態(tài)至堆棧上。器的狀態(tài)至堆棧上。2021-12-1448 (1)狀態(tài)標志)狀態(tài)標志n指示算術指令的結果的一些特征指示算術指令的結果的一些特征

33、n位位0、2、4、6、7和和11 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1449 進位標志進位標志CF(Carry Flag)n運算時,若運算時,若最高有效位最高有效位產(chǎn)生進位或借位,產(chǎn)生進位或借位,則則CF1,否則,否則CF0。n主要用于多字節(jié)數(shù)的加、減法運算。主要用于多字節(jié)數(shù)的加、減法運算。n移位和循環(huán)指令也能夠把存儲器或寄存器中的最移位和循環(huán)指令也能夠把存儲器或寄存器中的最高位(左移時)或最低位(右移時)放入標志高位(左移時)或最低位(右移時)放入標志CF中。中。字節(jié)操作時的字節(jié)操作時

34、的D7或字操作或字操作時的時的D15、雙字操作的、雙字操作的D31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF3AH + 7CHB6H84H + 7CH(1)00H2021-12-1450 輔助進位標志輔助進位標志AF(Auxitiary Carry Flag)n運算時,若低半字節(jié)(一個字節(jié)的低運算時,若低半字節(jié)(一個字節(jié)的低4位)向高位)向高半字節(jié)有進位或借位,則半字節(jié)有進位或借位,則AF1,否則,否則AF0。n用于十進制算術運算指令中。用于十進制算術運算指令中。 15 14 13 12 11 10 9 8

35、7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1451 溢出標志溢出標志OF(Overflow Flag)n在運算過程中,若操作數(shù)超出了機器能表示的范在運算過程中,若操作數(shù)超出了機器能表示的范圍,則圍,則OF = 1,否則,否則OF = 0。n在算術運算中,帶符號數(shù)的運算結果超出了在算術運算中,帶符號數(shù)的運算結果超出了8位、位、16位帶符號數(shù)能表達的范圍,即在字節(jié)運算時位帶符號數(shù)能表達的范圍,即在字節(jié)運算時+127或或128,在字運算時,在字運算時+32767或或32768此標志置位,否則復位。此標志置位,否則復位。n一個任選的溢出中斷指令,

36、在溢出情況下能產(chǎn)生一個任選的溢出中斷指令,在溢出情況下能產(chǎn)生中斷。中斷。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF3AH + 7CHB6H84H + 7CH(1)00H2021-12-1452 符號標志符號標志SF(Sign Flag)nSF與運算結果的最高位相同。即結果的最高位與運算結果的最高位相同。即結果的最高位(字操作時為(字操作時為D15)為)為1,則,則SF1;否則;否則SF0。 n在在IA-32結構微處理器中,符號數(shù)是用補碼表示結構微處理器中,符號數(shù)是用補碼表示的,的,S表示了結果的符號,表示了結

37、果的符號,SF=0為正,為正,SF=1為為負。負。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1453 奇偶標志奇偶標志PF(Parity Flag)n若操作結果中若操作結果中1的個數(shù)為偶數(shù),則的個數(shù)為偶數(shù),則PF1,否則,否則PF0。nPF標志僅反映最低標志僅反映最低8位中位中“1”的個數(shù)是偶或奇,的個數(shù)是偶或奇,即使是進行即使是進行16位字操作位字操作n檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

38、 0OF DF IF TF SF ZF AF PF CF2021-12-1454 零標志零標志ZF(Zero Fiag)n若運算的結果為若運算的結果為0,則,則ZF1,否則,否則ZF0。n能用指令直接進行修改能用指令直接進行修改nSTC(設置進位位)(設置進位位)nCLC(清除進位位)(清除進位位)nCMC(進位位取反)(進位位取反)n可用位操作指令(可用位操作指令(BT、BTS、BTR和和BTC)拷)拷貝規(guī)定位至貝規(guī)定位至CF標志。標志。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1455 n

39、狀態(tài)標志允許單算術操作以產(chǎn)生三種不同數(shù)據(jù)類狀態(tài)標志允許單算術操作以產(chǎn)生三種不同數(shù)據(jù)類型的結果:無符號整數(shù)、符號整數(shù)和型的結果:無符號整數(shù)、符號整數(shù)和BCD整數(shù)。整數(shù)。n若算術操作的結果作為無符號整數(shù)對待,若算術操作的結果作為無符號整數(shù)對待,CF標志指示超出范圍(進位或借位);標志指示超出范圍(進位或借位);n若作為符號整數(shù)(若作為符號整數(shù)(2的補碼值)對待,的補碼值)對待,OF標志標志指示是否超出范圍;指示是否超出范圍;n若作為若作為BCD數(shù)對待,數(shù)對待,AF標志指示進位或借位。標志指示進位或借位。 2021-12-1456 nSF標志指示符號整數(shù)的符號。標志指示符號整數(shù)的符號。nZF標志指示

40、符號整數(shù)或無符號整數(shù)是否為標志指示符號整數(shù)或無符號整數(shù)是否為0。n當執(zhí)行多精度整數(shù)算術運算時,當執(zhí)行多精度整數(shù)算術運算時,CF用于與帶進用于與帶進位加(位加(ADC)和帶借位減()和帶借位減(SBB)指令一起產(chǎn)生)指令一起產(chǎn)生適當?shù)倪M位或借位。適當?shù)倪M位或借位。2021-12-1457 (2)控制標志)控制標志n指示程序和機器運行的狀況。指示程序和機器運行的狀況。n位位8、9、10 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1458 方向標志方向標志DF(Direction Flag) n控制地

41、址的變化方向??刂频刂返淖兓较?。nDF0,地址自動增加;,地址自動增加;DF1,地址自動減少。,地址自動減少。n設置設置DF標志:標志:STD指令指令n清除清除DF標志:標志:CLD指令指令 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1459 中斷允許標志中斷允許標志IF(Interrupt-enable Flag)n控制外部可屏蔽中斷是否可以被處理器響應??刂仆獠靠善帘沃袛嗍欠窨梢员惶幚砥黜憫IF1,則允許,則允許CPU去接收外部的可屏蔽的中斷去接收外部的可屏蔽的中斷請求;請求;IF0,

42、則屏蔽上述的中斷請求;對內(nèi)部則屏蔽上述的中斷請求;對內(nèi)部產(chǎn)生的中斷不起作用。產(chǎn)生的中斷不起作用。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1460 追蹤標志追蹤標志TF(Trace Flag)n在這個方式下,在這個方式下,CPU在每條指令執(zhí)行以后,產(chǎn)生在每條指令執(zhí)行以后,產(chǎn)生一個內(nèi)部的中斷。一個內(nèi)部的中斷。n控制處理器進入單步操作方式,以便于調試??刂铺幚砥鬟M入單步操作方式,以便于調試。nTF0,處理器正常工作;,處理器正常工作;TF1,處理器單步執(zhí),處理器單步執(zhí)行指令。行指令。n單步執(zhí)行指令

43、:處理器在每條指令執(zhí)行結束時,單步執(zhí)行指令:處理器在每條指令執(zhí)行結束時,便產(chǎn)生一個編號為便產(chǎn)生一個編號為1的內(nèi)部中斷(單步中斷)。的內(nèi)部中斷(單步中斷)。n利用單步中斷可對程序進行逐條指令的調試,即利用單步中斷可對程序進行逐條指令的調試,即單步調試單步調試 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OF DF IF TF SF ZF AF PF CF2021-12-1461 4指令指針指令指針I(yè)PnIP包含下一條要執(zhí)行的指令在當前碼段中的偏包含下一條要執(zhí)行的指令在當前碼段中的偏移。移。n通常,它是順序增加的,從一條指令邊界至下一通常,它是順序增加的,從一條指令邊

44、界至下一條指令,但在執(zhí)行條指令,但在執(zhí)行JMP、JCC、CALL、RET和和IRET等指令時,它可以向前或向后移動若干條等指令時,它可以向前或向后移動若干條指令。指令。2021-12-1462 nIP寄存器不能直接由軟件訪問;它由控制傳送寄存器不能直接由軟件訪問;它由控制傳送指令(例如,指令(例如,JMP、JCC、CALL和和RET)、中)、中斷和異常隱含控制。斷和異常隱含控制。n讀讀IP寄存器的唯一方法是執(zhí)行一條寄存器的唯一方法是執(zhí)行一條CALL指令,指令,然后從堆棧中讀指令指針的返回值。然后從堆棧中讀指令指針的返回值。IP寄存器寄存器能通過修改過程堆棧上指令指針的返回值并執(zhí)行能通過修改過程

45、堆棧上指令指針的返回值并執(zhí)行返回指令(返回指令(RET或或IRET)來間接修改。)來間接修改。2021-12-14632.3.3存儲器組織存儲器組織n物理存儲器物理存儲器:CPU在它的地址總線上尋址的存儲在它的地址總線上尋址的存儲器。器。n物理存儲器按字節(jié)序列組織。每個字節(jié)賦予一個物理存儲器按字節(jié)序列組織。每個字節(jié)賦予一個唯一的地址,稱為唯一的地址,稱為物理地址物理地址。2021-12-1464 n8086有有20條地址引線,它的直接尋址能力為條地址引線,它的直接尋址能力為2201M字節(jié)。字節(jié)。n在一個在一個8086組成的系統(tǒng)中,可以有多達組成的系統(tǒng)中,可以有多達1M字節(jié)字節(jié)的存儲器。的存儲器

46、。n1M字節(jié)邏輯上可以組織成一個線性矩陣。地址字節(jié)邏輯上可以組織成一個線性矩陣。地址從從00000H到到FFFFFH。2021-12-1465 n給定一個給定一個20位的地址,就可從這位的地址,就可從這1M字節(jié)中取出字節(jié)中取出所需要的指令或操作數(shù)。所需要的指令或操作數(shù)。n8086處理器只有處理器只有16位的寄存器,用它直接表示位的寄存器,用它直接表示20位的地址是不可能的。位的地址是不可能的。n那么,這那么,這20位地址該如何形成的呢位地址該如何形成的呢?n解決辦法解決辦法n存儲器地址分段存儲器地址分段2021-12-1466段偏移地址段偏移地址2021-12-1467 1. 整個整個1M字節(jié)

47、存儲器以字節(jié)存儲器以64K為范圍分為若干段。為范圍分為若干段。2. 在尋址一個具體物理單元時,必須要由一個基地在尋址一個具體物理單元時,必須要由一個基地址再加上由址再加上由SP、IP、BP、SI或或DI等可由等可由CPU處處理的理的16位偏移量來形成實際的位偏移量來形成實際的20位物理地址。位物理地址。3. 基地址:由基地址:由8086中的段寄存器,即中的段寄存器,即CS、SS、DS以及以及ES中的一個來形成。中的一個來形成。4. 在形成在形成20位物理地址時,段寄存器中的位物理地址時,段寄存器中的16位數(shù)會位數(shù)會自動左移自動左移4位,然后與位,然后與16位偏移量相加。位偏移量相加。2021-

48、12-1468n存儲器的分段存儲器的分段n20 根地址線:地址范圍根地址線:地址范圍 00000HFFFFFH(1MB)n機器字長機器字長16位僅能表示地址范圍位僅能表示地址范圍0000HFFFFH(64KB)n小段小段:每:每16個字節(jié)為一小段,共有個字節(jié)為一小段,共有64K個小段個小段n小段的首地址小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0H FFFFF H n段起始地址:小段首地址段起始地址:小段首地址n段的大?。憾蔚拇笮。?4K 范圍內(nèi)的任意字節(jié)范圍內(nèi)的任意字節(jié)2021-12-1469n存儲器的邏輯地址與物理

49、地址存儲器的邏輯地址與物理地址n物理地址物理地址:內(nèi)存單元的實際地址,也就是出現(xiàn)在地址:內(nèi)存單元的實際地址,也就是出現(xiàn)在地址總線上的地址??偩€上的地址。n邏輯地址邏輯地址:供編程時使用,由:供編程時使用,由16位段地址和位段地址和16位偏位偏移地址組成。移地址組成。段基地址:段內(nèi)偏移地址段基地址:段內(nèi)偏移地址n段地址(段基址):每一段的起始地址,通常被保段地址(段基址):每一段的起始地址,通常被保存在某個段寄存器中。存在某個段寄存器中。n偏移地址:在段內(nèi)相對于段起始地址的偏移值,也偏移地址:在段內(nèi)相對于段起始地址的偏移值,也叫有效地址叫有效地址EA。n每個內(nèi)存單元具有唯一的物理地址,但可由不同

50、的邏每個內(nèi)存單元具有唯一的物理地址,但可由不同的邏輯地址描述。輯地址描述。2021-12-147016 位 段 地 址16 位 偏 移 地 址0000+ 20 位 物 理 地 址n物理地址物理地址 = 16D 段地址段地址 + 偏移地址偏移地址n將邏輯地址中的段地址左移將邏輯地址中的段地址左移4位,加上偏移地址位,加上偏移地址就得到就得到20位物理地址。位物理地址。2021-12-1471例:假設一個變量的段偏移地址是例:假設一個變量的段偏移地址是08F1:0100經(jīng)過移位的段值經(jīng)過移位的段值0 8 F 1 0 (0F1H*10H=08F10H)+ 偏移地址偏移地址 0 1 0 0物理地址物理

51、地址0 9 0 1 02021-12-1472例:(例:(DS)= 2100H,(,(BX)= 0500H (PA)= 21000H+0500H = 21500H 2021-12-1473 10011111 00100110 01001000邏輯地址邏輯地址段地址段地址 : 偏移地址偏移地址 1000 : 0000H 1000 : 0001H1000 : 0002H1000 : 0003H1000 : 0004H1000 : 0005H物理地址物理地址10000H10001H10002H10003H 10004H10005H 10000011 01011100 10100010字節(jié)內(nèi)容(字節(jié)內(nèi)

52、容(10000H)9FH;(;(10001H)26H字內(nèi)容字內(nèi)容 (10000H)269FH;(;(10001H)4826H2021-12-1474段地址段地址偏移地址偏移地址所選存儲單元所選存儲單元段基地址段基地址所選段最所選段最大大64KB存儲器存儲器00002021-12-1475n存儲器的邏輯分段存儲器的邏輯分段n各段在存儲器中的分配由操作系統(tǒng)負責各段在存儲器中的分配由操作系統(tǒng)負責n各段各段獨立獨立:分別占用:分別占用64KB存儲區(qū)存儲區(qū) 存儲器存儲器64KB代碼01500H42000H1CD00H0150H4200H1CD0H段寄存器段寄存器CSDSSSES64KB堆棧64KB數(shù)據(jù)

53、64KB附加數(shù)據(jù)B0000HB000H2021-12-1476 存儲器存儲器 8KB代碼 2KB數(shù)據(jù) 256堆棧02000H04800H04000H0200H0400H0480HCSDSSSn各段各段重疊重疊:每個段區(qū)的大小可根據(jù)實際需要分:每個段區(qū)的大小可根據(jù)實際需要分配,不一定要占有配,不一定要占有64KB的最大段空間。的最大段空間。2021-12-1477n存儲器分段的優(yōu)點存儲器分段的優(yōu)點n允許程序在存儲器內(nèi)重定位允許程序在存儲器內(nèi)重定位n允許實模式程序在保護模式下運行允許實模式程序在保護模式下運行n有利于程序和數(shù)據(jù)的分離有利于程序和數(shù)據(jù)的分離2021-12-14781MB空間的分段空間

54、的分段n1MB空間最多能分成多少個段?空間最多能分成多少個段?每隔每隔16個存儲單元就可以開始一個段,個存儲單元就可以開始一個段,1MB最多可以有:最多可以有:2201621664K 個段個段n1MB空間最少能分成多少個段?空間最少能分成多少個段?每隔每隔64K個存儲單元開始一個段,個存儲單元開始一個段,1MB最少可以有:最少可以有:22021616 個段個段2021-12-1479如何分配各個邏輯段如何分配各個邏輯段n程序的指令序列必須安排在代碼段程序的指令序列必須安排在代碼段n程序使用的堆棧一定在堆棧段程序使用的堆棧一定在堆棧段n程序中的數(shù)據(jù)默認是安排在數(shù)據(jù)段,也經(jīng)常安排程序中的數(shù)據(jù)默認是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段在附加段,尤其是串操作的目的區(qū)必須是附加段n數(shù)據(jù)的存放比較靈活,實際上可以存放在任何一數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論