![IA-32结构微处理器课件_第1页](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g469.jpg)
![IA-32结构微处理器课件_第2页](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4692.jpg)
![IA-32结构微处理器课件_第3页](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4693.jpg)
![IA-32结构微处理器课件_第4页](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4694.jpg)
![IA-32结构微处理器课件_第5页](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4695.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IA-32結構微處理器2.1IA-32微處理器的概要歷史
1971年Intel400470年代中期Intel8080、808580年代初Intel8086、8088
從8086(8088)到80286、80386、80486、奔騰(也稱為80586)、奔騰MMX、奔騰PRO(也稱為80686)、奔騰Ⅱ、奔騰Ⅲ,直至最新的奔騰4,形成了IA(IntelArchitecture)-32結構。2.1.1Intel8086微處理器
從歷史的觀點看,IA-32結構微處理器同時包括16位微處理器和32位微處理器。目前,對於許多操作系統和十分廣泛的應用程式,32位IA-32結構是最流行的電腦結構。
IA-32結構的最重要的成就之一,是在從1978年開始的那些處理器上建立的目標程式仍然能夠在IA-32結構系列的最新的處理器上執行。Intel8086微處理器有16位寄存器和16位外部數據匯流排,具有20位地址匯流排,尋址1MB地址空間。
8086引進段到IA-32結構。關於段,有16位的段寄存器,它包含最大為64KB的記憶體段的指針。一次用四個段寄存器,8086/8088微處理器能尋址256KB而不需要在段之間切換。用段寄存器指針和附加的16位指針能形成20位地址提供總共是1MB的地址範圍。2.1.2Intel80386微處理器Intel80386微處理器是在IA-32結構微處理器系列中的第一個32位處理器。它在結構中引入了32位寄存器用於容納運算元和地址。每個32位寄存器的後一半保留兩個早期處理器版本(Intel8086和80286)的16位寄存器的特性,以提供完全的後向相容。提供了一種新的虛擬8086方式,以在新的32位處理器上最有效地執行為8086和8088微處理器建立的程式。Intel80386微處理器有32位地址匯流排並能支持多至4GB的物理記憶體。32位結構為每個軟體進程提供邏輯地址空間。32位結構同時支持分段的存儲模式和“平面(flat)”存儲模式。在“平面”存儲模式,段寄存器指向相同地址,而且每個段中的所有4GB可尋址空間對於軟體程式員是可以訪問的。Intel80386微處理器把分頁引進了IA-32結構,用4KB固定尺寸的頁提供一種虛擬存儲管理方法,它比分段更為優越。分頁對於操作系統更為有效,且對應用程式完全透明,對執行速度沒有明顯影響。4GB虛擬地址空間的支持能力、存儲保護與分頁支持一起,允許IA-32結構成為高級操作系統和應用程式的最流行的選擇。2.1.3Intel80486微處理器
Intel80486微處理器由把Intel80386微處理器的指令解碼和執行單元擴展為五個流水線段,增加了更多的並行執行能力,其中每個段(當需要時)與其他的並行操作最多可在不同段上同時執行五條指令。每個段以能在一個時鐘週期內執行一條指令的方式工作,所以Intel80486微處理器能每個時鐘週期執行一條指令。
在晶片上增加了一個8KB的一級緩存(Cache)大大增加了每個時鐘執行一條指令的百分比,包括運算元在一級Cache中的記憶體訪問指令。Intel80486微處理器也是第一次把80x87FPU(浮點處理單元)集成到處理器上並增加了新的引腳、位和指令以支持更複雜和更強有力的系統(二級Cache支持和多處理器支持)。2.1.4Intel奔騰(Pentium)處理器Intel奔騰(Pentium)處理器增加了第二個執行流水線以達到超標量性能(兩個已知的流水線u和v一起工作,實現每個時鐘執行兩條指令)。片上的一級Cache也加倍了,8KB用於代碼,另外8KB用於數據。數據Cache使用MESI協議以支持更有效的回寫方式,以及由Intel80486處理器使用的寫通方式。加入的分支預測和片上的分支表增加了迴圈結構中的性能。
奔騰系列的最後一個處理器(具有MMX技術的奔騰處理器)把IntelMMX技術引入IA-32結構。IntelMMX技術用單指令多數據(SIMD)執行方式,在包含在64位MMX寄存器中組合的整型數據上執行並行計算。此技術在高級媒體、影像處理和數據壓縮應用程式上極大地增強了IA-32處理器的性能。2.1.5IntelP6系列處理器1995年,Intel公司引入了P6系列處理器。此系列處理器是基於新的超標量微結構上的,它建立了新的性能標準。
IntelPentiumPro處理器是基於P6微結構的第一個處理器。P6處理器系統隨後的成員是IntelPentiumⅡ、IntelPentiumⅡXeon(至強)、IntelCeleron(賽揚)、IntelPentiumⅢ和IntelPentiumⅢXeon(至強)處理器。2.1.6Intel奔騰Ⅱ處理器IntelPentiumⅡ處理器把MMX技術加至P6系列處理器具有新的包裝和若干硬體增強。第一級數據和指令Caches每個擴展至16KB,支持256KB、512KB和1MB二級Cache。2.1.7Intel奔騰Ⅲ處理器PentiumⅢ處理器引進流SIMD擴展(SSE)至IA-32結構。SSE擴展把由IntelMMX引進的SIMD執行模式,擴展為新的128位寄存器和能在組合的單精確度浮點數上執行SIMD(單指令多數據)操作。
2.1.8Intel奔騰4處理器IntelPentium4處理器是最新的IA-32結構微處理器,也是第一個基於IntelNetBurst
微結構的處理器。IntelNetBurst微結構是新的32位微結構,它允許處理器操作在時鐘速度和性能比以前的IA-32結構微處理器更高。2.2IA-32微處理器的功能結構IA-32結構微處理器基本上按照摩爾定律發展,已經經歷許多代。但從使用者(包括程式員)的角度來看,最關心的是處理器的功能結構。即,呈現在程式員面前的功能和編程結構。2.2.1Intel8086微處理器的功能結構Intel8086微處理器的功能結構如圖2-1所示。
8086(8088)CPU從功能上來說分成兩大部分:匯流排介面單元BIU(BusInterfaceUnit)和執行單元EU(ExecutionUnit)。
BIU負責與記憶體介面,即8086CPU與記憶體之間的資訊傳送,都是由BIU進行的。
BIU負責從記憶體的指定部分取出指令,送至指令流佇列中排隊,在執行指令時所需要的運算元,也由BIU從記憶體的指定區域取出,傳送給EU部分去執行。
EU部分負責指令的執行。這樣,取指部分與執行指令部分是分開的,於是在一條指令的執行過程中,就可以取出下一條(或多條)指令,在指令流佇列中排隊。在一條指令執行完以後就可以立即執行下一條指令,減少了CPU為取指令而等待的時間,提高了CPU的利用率,提高了整個運行速度。2.2.2Intel80386微處理器的功能結構Intel80386微處理器的功能結構如圖2-4所示。Intel80386微處理器擁有32位數據線和32位地址線,可以尋址4GB(232)的物理地址空間,內部寄存器與數據線都是32位,但段寄存器仍為16位。80386處理器首次將32位的寄存器組引入80x86體系的微處理器中,它們都能夠用於計算和尋址操作。每個32位寄存器的低半部分與Intel8086/8088、80286微處理器的16位寄存器具有相同的特性,完全向下相容。Intel80386微處理器的功能結構由6個能並行操作的功能部件組成,即匯流排介面部件、代碼預取部件、指令解碼部件、記憶體管理部件、指令執行與控制部件。這些部件按流水線結構設計,指令的預取、解碼、執行等步驟都由各自的處理部件並行處理。這樣,可以同時處理多條指令,提高了微處理器的處理速度。
匯流排介面部件提供微處理器與外部環境的介面,在操作時對相應信號進行驅動,包括32位地址匯流排和32位數據匯流排。由於地址匯流排和數據匯流排是分開的,所以,最快能在兩個時鐘週期內從記憶體存取32位數據。顯然,具有32位運算元和尋址形式的指令在執行性能上得到增強。還提供了一些用於位處理的新指令。80386匯流排結構具有動態改變數據和地址寬度的能力,既支持16位也支持32位操作。
記憶體管理部件MMU由分段部件和分頁機構組成。分段部件通過提供一個額外的尋址機構對邏輯地址空間進行管理,可以實現任務之間的隔離,也可以實現指令和數據區的再定位。80386微處理器也首次將分頁機制引入到80x86結構中,尺寸固定為4KB的頁面為虛擬存儲管理提供了基礎,它比Intel8086/8088地址空間的分段管理更加有效,並且對應用程式來說是完全透明的,也不會減低應用程式的執行速度。2.2.3Intel80486微處理器的功能結構Intel80486微處理器是功能上的另一次飛躍,它把Intel80386微處理器、Intel80x87FPU和片上的Cache集成在一起,從功能上形成了IA-32微處理器結構,也就是IA-32微處理器的功能結構,如圖2-5所示。Intel80486微處理器基礎結構等同於Intel80386微處理器,它們在寄存器組、尋址方式、記憶體管理特徵、數據類型方面都完全相同。為了進一步提高微處理器的執行性能,在內部結構上,對80486微處理器進行了一些改進,使80486的性能更高。
80486微處理器從功能結構來說,已經形成了IA-32結構微處理器的基礎。後續的處理器往往是在指令的流水線結構上,在Cache上以及在指令擴展上有了新的發展。較新的IA-32微處理器的功能結構如圖2-6所示。2.3IA-32結構微處理器的執行環境
本節描述組合語言程式員看到的IA-32結構微處理器的執行環境,它描述處理器如何執行指令以及如何存儲和運算元據。執行環境包括記憶體(地址空間)、通用數據寄存器、段寄存器、標誌寄存器和指令指針寄存器等。2.3.1操作模式IA-32結構微處理器支持三種操作模式:保護模式、實地址模式和系統管理模式。操作模式確定哪些指令和結構特性是可以訪問的。
(1)保護模式。這是處理器的基本模式。在這種模式中,所有的指令和結構特性是可用的,提供最高的功能和性能。對於所有的操作系統和新的應用程式建議採用此模式。在多任務環境的保護模式下,每一個任務都可以執行“實地址方式下的8086指令”,這就是虛擬8086方式。(2)實地址模式。這是實現Intel8086微處理器編程環境的工作模式並有一些擴展(32位寄存器和切換至保護模式或系統管理模式的能力等)。在系統上電或複位(reset)後,處理器總是處在實地址模式。
(3)系統管理模式(SSM)。此模式是操作系統為實現平臺特定的功能或者系統安全提供的一種透明機制。此模式主要用於自動暫停、睡眠等節省電源的模式。2.3.2基本執行環境概要
在IA-32處理器上執行的程式或任務,都給予一組執行指令的資源,用於存儲代碼、數據和狀態資訊。這些資源構成了IA-32結構微處理器的執行環境。
(1)地址空間。在IA-32結構微處理器上運行的任或程式能尋址多至4GB(232)的線性地址空間(對於80386以上的處理器,因為8086只有20條地址線,只能尋址1MB)和多至64GB(236)的物理記憶體(對於奔騰pro以上的處理器)。(2)基本程式執行寄存器。八個通用寄存器、六個段寄存器、標誌寄存器(EFLAGS)和指令指針(EIP)寄存器組成了執行通用指令的基本執行環境。這些指令能執行位元組、字和雙字整型數的基本整數算術運算;處理程式流程控制;在位和位元組串上操作和尋址記憶體。(這些就是8086微處理器的操作。)(3)80x87FPU寄存器。八個80位的80x87FPU數據寄存器、80x87FPU控制寄存器、狀態寄存器、指令指針寄存器、運算元(數據)指針寄存器、標記寄存器和操作碼寄存器。這樣的執行環境能對單精確度、雙精度和雙擴展精度浮點數,字、雙字和四字整數以及二進位編碼的十進位(BCD)值進行操作。(4)MMX寄存器。八個MMX寄存器支持在64位組合的(組合的是指一個位元組中具有兩位BCD十進位數)位元組、字和雙字整數上執行單指令多數據(SIMD)操作。
(5)XMM寄存器。八個XMM數據寄存器和MXCSR寄存器支持在128位組合的單精確度和雙精度浮點值和128位組合的位元組、字、雙字和四字整數上執行SIMD操作。(6)堆疊(Stack)。為支持過程或子例程調用並且在過程或子例程之間傳遞參數,堆疊和堆疊管理資源包含在基本執行環境中。堆疊定位在內存中。
(7)I/O端口。IA-32結構支持數據在處理器和輸入輸出(I/O)端口之間的傳送。
IA-32結構微處理器的基本執行環境如圖2-7所示。
除了基本執行環境中提供的資源之外,IA-32結構微處理器提供以下系統資源。這些資源是IA-32結構微處理器的系統級結構的一部分,它們為操作系統和系統開發軟體提供擴展的支持。
(1)控制寄存器。五個控制寄存器(CR0~CR4)確定處理器的操作模式和當前執行的任務的特徵。(2)存儲管理寄存器。GDTR、IDTR、任務寄存器和LDTR。規定用於保護模式存儲管理的數據結構。
(3)調試寄存器。調試寄存器(DR0~DR7)允許監控處理器的調試操作。
(4)存儲類型範圍寄存器(MTRRs)。MTRRs用於賦存儲器類型到存儲分區。2.3.3記憶體組織
處理器在它的地址匯流排上尋址的記憶體稱為物理記憶體。物理記憶體按8位位元組序列組織。每個位元組賦予一個惟一的地址,稱為物理地址。物理地址空間的範圍從零至64GB(236-1)的最大值。在IA-32處理器上工作的任何操作系統和執行程式使用處理器的存儲管理設施訪問記憶體。這些設施提供例如分段和分頁特性以允許有效和可靠地管理記憶體。
本書重點介紹8086微處理器的結構、指令、組合語言以及相應的外設介面。實地址方式記憶體組織
IA-32結構微處理器中的實地址方式是為了與8086(8088)微處理器相容而設置的。所以,IA-32結構微處理器的實地址方式從記憶體組織來看與8086(8088)的記憶體組織是一樣的。8086CPU有20條地址引線,它的直接尋址能力為1MB(220)。所以,在一個8086組成的系統中,可以有多達1MB的記憶體。這1MB邏輯上可以組織成一個線性矩陣,地址從00000H到FFFFFH。給定一個20位的地址,就可以從這1MB中取出所需要的指令或運算元。8086CPU內部的ALU能進行16位運算,有關地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086對地址的運算也只能是16位。這就是說,對於8086來說,各種尋址方式,尋找運算元的範圍最多只能是64KB。所以,整個1MB記憶體以64KB為範圍分為若干段。
在尋址一個具體物理單元時,由一個基地址再加上由SP、IP、BP、SI或DI等可由CPU處理的16位偏移量來形成實際的20位物理地址。這個基地址就是由8088中的段寄存器,即碼分段寄存器CS、堆疊分段寄存器SS、數據分段寄存器DS以及附加分段寄存器ES中的一個來形成的。在形成20位物理地址時,段寄存器中的16位數會自動左移4位,然後與16位偏移量相加,如圖2-8所示。
在8086系統中,記憶體的訪問如圖2-9所示。在不改變段寄存器值的情況下,尋址的最大範圍是64KB。所以,若有一個任務,它的程式長度、堆疊長度以及數據區長度都不超過64KB,則可在程式開始時,分別給DS、SS、ES置值,然後在程式中可以不再考慮這些段寄存器,程式就可以在各自的區域中正常地進行工作。若某一個任務所需的總的記憶體長度(包括程式長度、堆疊長度和數據長度等)不超過64KB,則可在程式開始時使CS、SS、DS相等,程式也能正常地工作。
上述的記憶體分段方法,對於要求在程式區、堆疊區和數據區之間隔離這種任務時是非常方便的。這種記憶體分段方法,對於一個程式中要用的數據區超過64KB,或要求從兩個(或多個)不同區域中去存取運算元,也是十分方便的,只要在取運算元以前,用指令給數據段寄存器重新賦值就可以了。
這種分段方法也適用於程式的再定位要求。在很多情況下,要求同一個程式能在內存的不同區域中運行,而不改變程式本身,這在8086微處理器中是可行的。只要在程式中的轉移指令都使用相對轉移指令,而在運行這個程式前設法改變各個段寄存器的值就可以了。如圖2-10所示。分段模式記憶體結構
IA-32結構微處理器的基本存儲模式是分段式存儲模式。與8086微處理器類似,程式中給出的地址由兩部分組成:即段基地址(一個段的起始地址)和段內偏移量。段基地址由段寄存器的值確定,而段內偏移量是由指令的尋址方式確定。
在8086微處理器中,有四個段寄存器(碼段寄存器CS、堆疊段寄存器SS、數據段寄存器DS和附加段寄存器ES),把寄存器的內容左移4位就形成了20位的段基地址。段內偏移量或是直接地址,或是在某一寄存器中的地址,或是經過計算以後的有效地址,總之是16位的偏移量,可以尋址64KB。
在Intel80386以上的IA-32微處理器中,段寄存器擴展為六個(增加了兩個數據段寄存器FS和GS),每個段寄存器仍是16位的。但是在IA-32結構微處理器中,段基地址也是32位的,所以不能像8086那樣經過移位來形成,而是把16位的段寄存器內容作為選擇子,以它為索引從記憶體中找到包含32位段基地址的段描述符,以確定32位的段基地址。同樣,確定段內偏移量的寄存器也是32位的,故一個段最大可以達到4GB。
在分段存儲模式,記憶體以稱為段的獨立地址空間組出現在程式中。當使用這種模式時,代碼、數據和堆疊典型地包含在不同段中。為了尋址段中的一個位元組,程式必須發出由段選擇子和偏移量組成的邏輯地址。段選擇子標識要訪問的段(由它確定32位的段基地址)而偏移量標識段地址空間中的一個位元組。運行在IA-32處理器上的程式能尋址多至16383個不同尺寸和類型的段,而每個段最大可以達到232位元組。
從內部來說,在系統上定義的任一位元組的地址由段基地址和段內偏移量兩部分組成,這樣的地址稱為邏輯地址。在真正尋址時,要把邏輯地址映射至處理器的線性地址空間。為訪問一個存儲單元,處理器把每個邏輯地址轉換為線性地址(32位的段基地址與32位的段內偏移量相加產生32位的線性地址)。這種轉換對於應用程式是透明的。3.平面存儲模式平面存儲模式實質上是分段存儲模式的一種特例。當所有段寄存器的值相等並且全指向線性地址0(所有段的段基地址都為0)時,所有段都重合於同一個線性地址空間,這種不分段的存儲模式稱做平面存儲模式。如圖2-11所示。在平面存儲模式中,記憶體作為單個連續的地址空間,稱為線性地址空間。代碼(程式的指令)、數據和過程堆疊全都包含在此地址空間中,線性地址空間是以位元組尋址的,地址可以從0到232-1連續尋址。2.3.4基本的程式執行寄存器
處理器為通用系統和應用程式編程提供了16個基本程式執行寄存器,如圖2-12所示。這些寄存器分組如下:
(1)通用寄存器。這八個寄存器能用於存放運算元和指針。(2)段寄存器。這些寄存器最多能保持六個段選擇子。
(3)程式狀態和控制(EFLAGS)寄存器。EFLAGS寄存器報告正在運行的程式的狀態,並且允許有限地(應用程式級)控制處理器。
(4)指令指針(EIP)寄存器。EIP寄存器包含下一條要執行的指令的32位指針。通用寄存器八個32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP用於處理以下事項:
(1)邏輯和算術操作的運算元;
(2)用於地址計算的運算元;
(3)記憶體指針。
雖然所有這些寄存器都可用於存放運算元、結果和指針,但在引用ESP寄存器時要特別小心,ESP寄存器保持堆疊指針,通常不要用於其他目的。許多指令賦特定的寄存器以保持運算元。例如,串操作指令用ECX、ESI和EDI寄存器的內容作為運算元。當用分段存儲模式時,某些指令假定在一定寄存器中的指針相對於特定的段。80386通用寄存器的低16位直接映射至8086微處理器中能找到的寄存器組,並用寄存器名AX、BX、CX、DX、BP、SP、SI和DI引用,如圖2-13所示。這些16位寄存器中的前四個寄存器,即AX、BX、CX和DX,又可以分別作為AH、BH、CH和DH(高位元組)以及AL、BL、CL和DL(低位元組)8位寄存器引用。2.段寄存器段寄存器(CS、DS、SS、ES、FS和GS)保持16位段選擇子。一個段選擇子是標識記憶體中一個段的特殊指針。為訪問在內存中的具體段,此段的段選擇子必須存在於適當的段寄存器中。
當使用平面存儲模式時,段寄存器用相同的段選擇子加載,它們都指向同一個從地址0開始的線性地址空間,如圖2-14所示。於是,這些重疊的段構成了程式的線性地址空間。(典型地定義了兩個重疊的段:一個是碼段,另一個是數據和堆疊段。CS段寄存器指向碼段,而所有其他段寄存器指向數據和堆疊段。)
當使用分段存儲模式時,初始,每一個段寄存器用不同的段選擇子加載,所以每個段寄存器指向線性地址空間中的不同的段。如圖2-15所示。任何時候,一個程式能訪問多至線性地址空間中的六個段。為訪問未由一個段寄存器指向的段,程式必須首先把要訪問的段的段選擇子加載至一個段寄存器。3.EFLAGS寄存器
32位EFLAGS寄存器包含一組狀態標誌、一個控制標誌和一組系統標誌。圖2-16定義了此寄存器中的標誌。
EFLAGS寄存器中的某些標誌能用特定目的的指令直接修改,沒有指令允許審查或直接修改整個寄存器。然而,某些特定的指令可以用來移動標誌組到過程堆疊或EAX寄存器,以修改某些位。
EFLAGS寄存器包含以下標誌:
(1)狀態標誌
EFLAGS寄存器的狀態標誌(位0、2、4、6、7和位11)指示算術指令,例如ADD、SUB、MUL和DIV指令的結果的一些特徵。狀態標誌的功能如下:
①進位標誌CF(CarryFlag)
進位標誌CF又簡稱為C(注:以下各標誌位用簡稱表述)。當結果的最高位(位元組操作時的D7或字操作時的D15、雙字操作的D31)產生一個進位或借位,則C=1,否則C=0。這個標誌主要用於多位元組數的加、減法運算。移位和迴圈指令也能夠把記憶體和寄存器中的最高位(左移時)或者最低位(右移時)放入進位標誌C中。②輔助進位標誌A(AuxitiaryCarryFlag)
在位元組操作時,由低半位元組(一個位元組的低4位)向高半位元組有進位或借位時,則A=1,否則A=0。這個標誌用於十進位算術運算指令中。
③溢出標誌O(OverflowFlag)
在算術運算中,帶符號數的運算結果超出了8位、16位或32位帶符號數能表達的範圍,即在位元組運算時大於+127或小於-128,在字運算時大於+32767或小於-32768,在雙字運算時大於+231-1或小於-231,則此標誌置位,否則複位。一個任選的溢出中斷指令,在溢出情況下能產生中斷。④符號標誌S(SignFlag)
它的值與運算結果的最高位相同,即結果的最高位(字操作時為D15)為1,則S=1;否則S=0。由於在IA-32結構微處理器中,符號數是用補數表示的,所以S表示了結果的符號,“0”表示正,“1”表示負。
⑤奇偶標誌P(ParityFlag)
若操作結果中“1”的個數為偶數,則P=1;否則P=0。這個標誌可用於檢查在數據傳送過程中是否發生錯誤。
⑥零標誌Z(ZeroFlag)
若運算的結果為0,則Z=1;否則Z=0。
條件指令Jcc(在條件碼cc為真時,發生轉移)、SETcc(在條件碼cc為真時,設置)、LOOPcc
和CMOVcc(條件傳送),用一個或多個狀態標誌作為條件碼,並且在轉移、設置位元組或結束迴圈時測試它們。條件可以分成以下兩大類:根據單個標誌位所形成的條件;根據若干個標誌位的邏輯運算所形成的條件。下麵以條件轉移指令為例介紹這兩類條件:
①根據單個標誌位的條件轉移指令
■c標誌
a.JB/JNAE/JC
這是當進位標誌C=1時,能轉移至目標地址的條件轉移指令的三種助記符。
b.JAE/JNB/JNC
這是當進位標誌C=0時,能轉移至目的地址的條件轉移指令的三種助記符。
■Z標誌
a.JE/JZ
這是當零標誌Z=1時,能轉移至目標地址的條件轉移指令的兩種助記符。
b.JNE/JNZ
這是當零標誌Z=0時,能轉移到目標地址的條件轉移指令的兩種助記符。
■S標誌
a.JS
這是當符號位S=1時,能轉移到目標地址的條件轉移指令。
b.JNS
這是當符號標誌S=0時,能轉移到目標地址的條件轉移指令。
■P標誌
a.JP/JPE
這是當奇偶標誌P=1,能轉移到目標地址的條件轉移指令。
b.JNP/JPO
這是當奇偶標誌P=0時,能轉移到目標地址的條件轉移指令的兩種助記符。
■O標誌
a.JO
這是當溢出標誌O=1時,能轉移到目標地址的條件轉移指令的助記符。
b.JNO
這是當溢出標誌O=0時,能夠轉移到目標地址的條件轉移指令的助記符。②組合條件的條件轉移指令
IA-32結構微處理器的這一類轉移指令,主要用來判斷兩個數的大小。由於參加比較的數的性質不同,判斷大小的方法也不同。兩個正數相比較,可以用結果的符號位S標誌來判斷。兩個無符號數相比較,可由進位標誌來判斷。若要考慮是否相等的條件即判斷高於或等於的條件,或者低於或等於的條件,就要組合C標誌和Z標誌。而兩個帶符號數相比較,就要組合符號標誌S和溢出標誌O,包含是否相等的條件就要組合Z標誌。
■判斷無符號數的大小
a.JA/JNBE
即兩個無符號數A和B相比較,當A>B(不包括相等的情況)時就滿足這個條件。怎樣來表示這個條件呢?不相等必須Z=0,高於則沒有借位即C=0。所以,條件為C∧Z=0。當滿足這個條件時,能轉移到目標地址。
b.JBE/JNA
這也是一條條件轉移指令的兩種助記符。兩個無符號數(A和B)相比較,當A≤B時就滿足這個條件。反映這個條件的標誌為:有相等情況,則Z=1;低於則必有借位C=1。所以,條件是C∨Z=1。當滿足這個條件時,能轉移到目標地址。
■判斷帶符號數的大小
a.JG/JNLE
這是一條條件轉移指令的兩種助記符。兩個帶符號數A和B相比較,當A>B(不包括相等)時就滿足這個條件。不相等,則必然Z=0;帶符號數大於,則必須S⊕O=0(兩者都為0或兩者都為1)。所以,反映這個條件的標誌是:S⊕O=0&(Z=0)。當滿足這個條件時,能轉移到目標地址。
b.JGE/JNL
這也是一條條件轉移指令的兩種助記符。與上一條條件轉移指令相比,本指令只是條件為A≥B,包含著相等的情況,所以去掉Z必須為0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025项目法律服务合同
- 2023八年级英语下册 Unit 4 Why don't you talk to your parents Section A 第1课时(1a-2d)说课稿 (新版)人教新目标版
- 7多元文化 多样魅力《多彩的世界文化》(说课稿)-统编版道德与法治六年级下册
- 2025合同模板承包合同书(车辆)范本
- 2025中外合资公司劳动合同协议书
- 直饮水施工方案
- 食堂餐厅售卖设备施工方案
- 2024年春七年级语文下册 第4单元 13 叶圣陶先生二三事说课稿 新人教版
- 《1 信息并不神秘》说课稿-2023-2024学年华中师大版信息技术三年级上册
- Unit 2 Expressing yourself Part A Lets spell(说课稿)-2024-2025学年人教PEP版(2024)英语三年级下册001
- SWITCH塞尔达传说旷野之息-1.6金手指127项修改使用说明教程
- 2022-2023学年广东省佛山市顺德区高三(下)模拟英语试卷
- 节后复工培训内容五篇
- GB/T 33322-2016橡胶增塑剂芳香基矿物油
- GA 1051-2013枪支弹药专用保险柜
- 某水毁公路维修工程施工方案
- 家庭病房工作制度和人员职责
- 建设工程监理合同示范文本GF-2018-0202
- 2022质检年终工作总结5篇
- 江苏省中等职业学校学业水平考试商务营销类(营销方向)技能考试测试题
- 国际商务谈判双语版课件(完整版)
评论
0/150
提交评论