第二章微處理器和指令系統(tǒng)課件_第1頁
第二章微處理器和指令系統(tǒng)課件_第2頁
第二章微處理器和指令系統(tǒng)課件_第3頁
第二章微處理器和指令系統(tǒng)課件_第4頁
第二章微處理器和指令系統(tǒng)課件_第5頁
已閱讀5頁,還剩178頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第二章 微處理器和指令系統(tǒng)2.1 Intel系列微處理器概述2.2 Intel 80486微處理器體系結(jié)構(gòu)2.3 80486的數(shù)據(jù)類型與尋址方式2.4 80486的匯編級(jí)指令系統(tǒng)2.5 關(guān)于指令系統(tǒng)的說明12.1 Intel系列微處理器概述 Intel 8086/8088 Intel 80286 Intel 80386/80486 Pentium (80586) 22.1.1 Intel 8086/8088 8088 是準(zhǔn)16位微處理器8086/8088除了外數(shù)據(jù)總線位數(shù)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同,指令系統(tǒng)完全兼容。 8086 是全16位微處理器在8086/8088

2、的設(shè)計(jì)中,引入了兩個(gè)重要的結(jié)構(gòu)概念: 指令流水線 存儲(chǔ)器分段數(shù)據(jù)總線和地址總線的低16位/低8位分時(shí)復(fù)用。 這兩個(gè)概念在以后升級(jí)的Intel系列微處理器中一直被沿用和發(fā)展。正是這兩個(gè)概念的引入,使8086/8088比原來的8位MPU在運(yùn)行速度、處理能力和對(duì)存儲(chǔ)空間的訪問等性能方面有很大提高。32.1.1 Intel 8086/80888086/8088 MPU由兩個(gè)獨(dú)立的處理單元構(gòu)成:總線接口單元BIU和執(zhí)行單元EU。總線控制電路20位AB通用寄存器累加器基址寄存器計(jì)數(shù)寄存器數(shù)據(jù)寄存器堆棧指針基址指針目的變址源變址指針寄存器變址寄存器地址加法器運(yùn)算暫存器ALU標(biāo)志寄存器 EU控制電路指令指針內(nèi)

3、部暫存器指令隊(duì)列總線接口單元(BIU)執(zhí)行單元(EU)外部總線8086/8088DB8088:8位8086:16位CSDSSSESIP1 2 3 4 5 68位80888086AX AH ALBX BH BLCX CH CLDX DH DL SPBPDISIALU DB16位42.1.1 Intel 8086/8088 當(dāng)EU從指令隊(duì)列中取出指令時(shí),BIU便從內(nèi)存中取出后續(xù)的代碼放入隊(duì)列中;當(dāng)EU需要數(shù)據(jù)時(shí),BIU根據(jù)EU輸出的地址,從指定的內(nèi)存單元或外設(shè)中取出數(shù)據(jù)供EU使用;當(dāng)運(yùn)算結(jié)束時(shí),BIU將運(yùn)算結(jié)果送給指定的內(nèi)存單元或外設(shè)。 EU控制電路從指令隊(duì)列取出指令代碼,經(jīng)譯碼發(fā)出相應(yīng)的控制信號(hào)

4、;數(shù)據(jù)在ALU中進(jìn)行運(yùn)算;運(yùn)算結(jié)果的特征保留在標(biāo)志寄存器(FLAGS)中。 EU-負(fù)責(zé)分析和執(zhí)行指令BIU-負(fù)責(zé)執(zhí)行所有的“外部總線”操作指令隊(duì)列的存在使EU和BIU并行工作 取指令和分析、執(zhí)行指令操作可重疊進(jìn)行,形成了兩級(jí)指令流水線結(jié)構(gòu),減少了CPU等待時(shí)間,提高了CPU的利用率,加快了整機(jī)運(yùn)行速度,降低了對(duì)存儲(chǔ)器存取速度的要求。52.1.1 Intel 8086/8088 4個(gè)段寄存器為8086/8088采用存儲(chǔ)器分段管理提供了主要硬件支持。 通過分段管理,把1MB可尋址的物理存儲(chǔ)空間分成若干個(gè)邏輯段,每段大小為64KB。 段的起始單元地址叫段基址,存放在段寄存器中。 通過4個(gè)段寄存器,C

5、PU每次可同時(shí)對(duì)4個(gè)段進(jìn)行尋址。且分段方式不唯一,各段之間可以連續(xù)、分離、部分重疊或完全重疊,具體取決于對(duì)各個(gè)段寄存器的預(yù)置內(nèi)容。62.1.1 Intel 8086/8088采用分段管理,存儲(chǔ)器地址有物理地址和邏輯地址之分。 物理地址是1MB存儲(chǔ)空間中的某一單元地址,用20位地址碼表示,CPU訪問存儲(chǔ)器時(shí),地址總線上送出的就是物理地址。 邏輯地址在編程時(shí)采用,由段基址和偏移地址組成,兩者均為16位。 由16位邏輯地址變換為20位物理地址的關(guān)系如下: 物理地址=段基址16+偏移地址物理地址生成示意圖段基址 偏移地址地址加法器邏輯地址15 0 15 0 左移四位段基址 000020位物理地址19

6、072.1.2 Intel 80286 (1)內(nèi)部有4個(gè)獨(dú)立的可并行操作單元:執(zhí)行單元(EU)、總線單元(BU)、指令單元(IU)和地址單元(AU),可實(shí)現(xiàn)4級(jí)流水線作業(yè); (2)地址總線和數(shù)據(jù)總線完全分開; (3)存儲(chǔ)空間有實(shí)地址和保護(hù)虛擬地址兩種工作方式。兩者的實(shí)地址空間分別為1MB和16MB; (4)在保護(hù)方式下,4個(gè)段寄存器裝入的不再是段基址,而是指向段描述符表中某個(gè)段描述符的索引值,稱為段選擇符。 80286是增強(qiáng)型標(biāo)準(zhǔn)16位微處理器。與8086/8088相比,它結(jié)構(gòu)上的改進(jìn)和性能上的提高主要體現(xiàn)在4方面: 總之,80286主要是增加了多用戶、多任務(wù)系統(tǒng)所必需的任務(wù)轉(zhuǎn)換、虛擬存儲(chǔ)器管

7、理和多種保護(hù)功能,不僅提高了運(yùn)算速度,而且可支持多用戶、多任務(wù)操作。但其優(yōu)越性必須在多任務(wù)操作系統(tǒng)的支持下才能充分發(fā)揮。82.1.3 Intel 80386/80486 1.內(nèi)部寄存器數(shù)量明顯增加,并可進(jìn)行64位的數(shù)據(jù)運(yùn)算,具有全32位數(shù)據(jù)處理能力。 2.片內(nèi)存儲(chǔ)管理部件可實(shí)現(xiàn)段頁式存儲(chǔ)管理,比80286可提供更大的虛擬存儲(chǔ)空間和物理存儲(chǔ)空間。 3.比80286新增了一種保護(hù)模式下的工作方式,即虛擬8086方式。 4.80486的指令流水線增加到了6級(jí)。 5.提供了32位外部總線接口,最大數(shù)據(jù)傳輸速率顯著提高。 6.運(yùn)算速度大大加快。 80386/80486是針對(duì)多用戶和多任務(wù)的應(yīng)用而推出的3

8、2位微處理器。與80286相比,80386/80486在結(jié)構(gòu)和性能上的主要特點(diǎn)如下:92.1.4 Pentium微處理器(80586) 1.采用超標(biāo)量體系結(jié)構(gòu),內(nèi)含兩條指令流水線。 2.內(nèi)置的浮點(diǎn)運(yùn)算部件采用超流水線技術(shù)。 3.增加了分支指令預(yù)測(cè)。 4.內(nèi)置了指令和數(shù)據(jù)兩個(gè)獨(dú)立的超高速緩存器,避免了預(yù)取指令和數(shù)據(jù)可能發(fā)生的沖突。 5.采用64位外部數(shù)據(jù)總線。 6.引入了大型機(jī)中采用的內(nèi)部錯(cuò)誤檢測(cè)、功能冗余檢驗(yàn)和錯(cuò)誤報(bào)告等自診斷功能。 7.進(jìn)行了更多的可測(cè)性設(shè)計(jì)。 8.提供了獨(dú)特的性能監(jiān)察功能,以利于軟、硬件產(chǎn)品的優(yōu)化和升級(jí)。 9.提供了靈活的存儲(chǔ)器頁面管理。Pentium是一種高性能的64位微

9、處理器。其對(duì)80486作了下列重大改進(jìn):102.2 Intel 80486微處理器體系結(jié)構(gòu) 80486的體系結(jié)構(gòu)特點(diǎn) 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 80486的三種工作方式及轉(zhuǎn)換 80486的外部引腳信號(hào)112.2.1 80486的體系結(jié)構(gòu)特點(diǎn) 1.采用單倍的時(shí)鐘頻率,即CPU的CLK端輸入的外部時(shí)鐘頻 率就是其內(nèi)部的工作時(shí)鐘頻率。 2.內(nèi)部包含有8K字節(jié)的指令/數(shù)據(jù)合用型高速緩存。 3.內(nèi)部包含了相當(dāng)于增強(qiáng)型80387功能的浮點(diǎn)協(xié)處理器(FPU)。 4.對(duì)使用頻率較高的基本指令,改為硬件邏輯直接控制,并在指 令執(zhí)行單元采用了RISC技術(shù)和流水線技術(shù)。 5.采用突發(fā)式總線傳輸方式。 6.內(nèi)

10、部數(shù)據(jù)總線寬度有32位、64位和128位多種,分別用于不同 單元之間的數(shù)據(jù)通路。 7.對(duì)某些內(nèi)部寄存器中部分位的內(nèi)容進(jìn)行了變動(dòng)和增加。 8.面向多處理器結(jié)構(gòu),增加了總線監(jiān)視功能和支持多機(jī)操作的指令。80486的特點(diǎn)主要表現(xiàn)在:122.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器內(nèi)部結(jié)構(gòu)構(gòu)成總線接口單元指令預(yù)取單元指令譯碼單元指令執(zhí)行單元段管理單元頁管理單元高速緩存單元浮點(diǎn)運(yùn)算單元80386所具有80486新增131.內(nèi)部結(jié)構(gòu)總線接口單元 主要用于管理訪問外部存儲(chǔ)器和I/O端口必須的地址、數(shù)據(jù)和控制總線,完成預(yù)取指令、讀/寫數(shù)據(jù)等總線操作。指令預(yù)取單元 指令預(yù)取單元平均可預(yù)取10條指令。內(nèi)含一個(gè)32

11、字節(jié)的指令預(yù)取隊(duì)列,當(dāng)指令預(yù)取隊(duì)列不滿且總線空閑時(shí),指令預(yù)取單元通過總線接口單元從存儲(chǔ)器讀取指令放到隊(duì)列中。指令譯碼單元 從指令預(yù)取隊(duì)列中讀取指令,進(jìn)行預(yù)譯碼后將其送入已譯碼的指令隊(duì)列等待執(zhí)行。如果預(yù)譯碼時(shí)發(fā)現(xiàn)是轉(zhuǎn)移調(diào)用指令,可提前通知總線接口部件去新的目標(biāo)地址取指令,以刷新指令預(yù)取隊(duì)列。指令執(zhí)行單元 包括算術(shù)邏輯單元ALU、8個(gè)32位的通用寄存器、桶形移位寄存器和控制單元等。作用是完成各種算術(shù)/邏輯運(yùn)算和變址地址生成??刂茊卧写蠖鄶?shù)指令采用微程序控制結(jié)構(gòu)執(zhí)行,常用基本指令采用硬件邏輯控制執(zhí)行。段管理單元用于進(jìn)行存儲(chǔ)器分段管理,將邏輯地址變換為32位線性地址。頁管理單元 用于進(jìn)行存儲(chǔ)器分頁管

12、理,將線性地址變換為32位物理地址。高速緩存單元 用于加速指令/數(shù)據(jù)的訪問過程。浮點(diǎn)運(yùn)算單元 相當(dāng)于一個(gè)增強(qiáng)型浮點(diǎn)協(xié)處理器80387,專門作浮點(diǎn)運(yùn)算,可與ALU的整數(shù)運(yùn)算并行進(jìn)行。14基本寄存器系統(tǒng)級(jí)寄存器調(diào)試和測(cè)試寄存器浮點(diǎn)寄存器2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器2.內(nèi)部寄存器 80486的內(nèi)部寄存器除FPU部分外,與80386完全相同,按功能可分為4類:152.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器1)基本寄存器EAX AH AX ALEBX BH BX BLECX CH CX CLEDX DH DX DLEDI DIESI SIEBP BPESP SP通用寄存器31 15 7

13、 0標(biāo)志寄存器指令指針寄存器EFLAGSFLAGSEIPIP31 15 031 15 0選擇器描述符高速緩存器段寄存器CSSSDSESFSGS15 0 63 016通用寄存器為了與8086/8088兼容,它們的低16位 可以單獨(dú)訪問,并以同8086/8088中相 同的名稱命名:AX、BX、CX、DX、SI、 DI、BP、SP。2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器8個(gè)32位通用寄存器: EAX、EBX、ECX、EDX、 ESI、EDI、EBP、ESP其中AX、BX、CX、DX 還可進(jìn)一步分成 兩個(gè)8位寄存器單獨(dú)訪問。17指令指針寄存器(EIP) EIP用于保存下一條待預(yù)取指令相對(duì)于代碼段

14、基址的偏移量。 2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 80486工作在32位操作方式時(shí),采用32位的EIP;工作在16位操作方式時(shí),采用16位的IP。它的低16位也可單獨(dú)訪問,稱之為IP。182.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器標(biāo)志寄存器(EFLAGS)32位的EFLAGS包含三種標(biāo)志: 狀態(tài)標(biāo)志(S)-報(bào)告算術(shù)/邏輯運(yùn)算指令執(zhí)行后的狀態(tài); 控制標(biāo)志(C)-僅含一個(gè)標(biāo)志DF,用于控制串操作指令的地址改變方向; 系統(tǒng)標(biāo)志(X)-用于控制I/O、屏蔽中斷、調(diào)試、任務(wù)轉(zhuǎn)換和控制保護(hù)方式與虛擬8086方式間的轉(zhuǎn)換。192.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器EFLAGSCFFLAG

15、S31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00 0 0 0 0 0 0 0 0 0 0 0 0 ACVMRF0NTIOPLOFDFIFTFSFZF0AFOP F0X對(duì)準(zhǔn)檢查標(biāo)志X虛擬86模式標(biāo)志X恢復(fù)標(biāo)志X嵌套標(biāo)志X特權(quán)級(jí)標(biāo)志S溢出標(biāo)志C方向標(biāo)志X中斷允許標(biāo)志X自陷標(biāo)志S符號(hào)標(biāo)志S零標(biāo)志S輔助進(jìn)位標(biāo)志S奇偶標(biāo)志S進(jìn)位標(biāo)志注:S表示狀態(tài)標(biāo)志,X表示系統(tǒng)標(biāo)志,C表示控制標(biāo)志標(biāo)志寄存器202.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器段寄存器80486有6個(gè)段寄存器:CS-指

16、明當(dāng)前的代碼段SS-指明當(dāng)前的堆棧段DSESFS GS決定程序使用存儲(chǔ)器區(qū)域塊指明當(dāng)前的4個(gè)數(shù)據(jù)段80486段的定義與8086有所不同: 保護(hù)方式下,段的長度可以在1字節(jié)到4G字節(jié)之間變化; 實(shí)地址方式下,段的長度固定為64KB。212.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器選擇器描述符高速緩存器CSSSDSESFSGS15 0 63 0段寄存器的結(jié)構(gòu) 段選擇器是編程者可直接訪問的,而描述符高速緩存器則是編程者不能訪問的。 段寄存器由16位的段選擇器和64位的描述符高速緩存器組成。222.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器關(guān)于對(duì)段寄存器的說明:實(shí)地址方式和虛擬8086方式下,段選擇器就

17、是段寄存器,它保存的是邏輯段基址的高16位,將它的內(nèi)容左移4位即可得到實(shí)際段基址,而不必使用描述符高速緩存器。在保護(hù)虛地址方式下,為了描述每個(gè)段的基址、屬性和邊界,為每個(gè)段定義了一個(gè)描述符。操作系統(tǒng)使用的各任務(wù)公用的段描述符放在一起構(gòu)成全局描述符表GDT;某個(gè)任務(wù)專用的段描述符放在一起構(gòu)成局部描述符表LDT。23段描述符格式為:段基地址150位段邊界150位段基地址3124位段邊界1916位屬性屬 性段基地址2316位2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器24 為了說明一個(gè)段的描述符在哪個(gè)表中,表的序號(hào)是多少以及特權(quán)的高低,為每個(gè)段定義了一個(gè)16位的選擇符,存于段選擇器中,其格式為:2.

18、2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器描述符索引段描述符iLDTGDT0 1INDEX TI RPLb15 b3 b2 b1 b0表指示符描述符i(08911)段描述符0描述符000 特權(quán)級(jí)001 特權(quán)級(jí)110 特權(quán)級(jí)211 特權(quán)級(jí)3請(qǐng)求特權(quán)級(jí)25 將一個(gè)選擇符裝入一個(gè)段選擇器時(shí),處理器將自動(dòng)從GDT或LDT中找到其對(duì)應(yīng)的描述符裝入相應(yīng)描述符高速緩存器中。2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器描述符64基址物理存儲(chǔ)器LDTDS數(shù)據(jù)段0040H界限15 3 2描述符高速緩存器DS選擇符63 0屬性裝入DS段描述符TI=1指示LDT13位索引指向LDT的第64個(gè)段描述符131 0以后,每當(dāng)

19、訪問存儲(chǔ)器時(shí),與所用段相關(guān)的段描述符高速緩沖器就自動(dòng)參與該次存儲(chǔ)器訪問操作。轉(zhuǎn)換關(guān)系: 線性地址 = 段描述符高速緩存器中段基址 + 偏移地址 262)系統(tǒng)級(jí)寄存器2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 包括4個(gè)控制寄存器和4個(gè)系統(tǒng)地址寄存器。 只能由特權(quán)級(jí)0的程序訪問。 數(shù)字運(yùn)算錯(cuò)頁目錄基址寄存器保留PCDPET頁Fault線性地址保 留31 30 29 18 17 16 12 4 3 2 1 0頁管理 使能Cache不使能不通寫對(duì)準(zhǔn)標(biāo)志寫保護(hù)保護(hù)允許監(jiān)視FPU仿真FPU任務(wù)轉(zhuǎn)換FPU類型CR3CR2CR1CR0PGCDNW保留AMWP保留NEETTSEMMPPE控制寄存器:272.2

20、.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 系統(tǒng)地址寄存器(只在保護(hù)方式下使用,所以又叫保護(hù)方式寄存器):32位基地址16位界限GDTRIDTR16位選擇符32位基地址16位界限16位其他屬性LDTRTR 其中GDTR和LDTR分別用來存放GDT和LDT的32位線性基地址等內(nèi)容;IDTR用來存放中斷描述符表的基址和界限;TR用來存放任務(wù)狀態(tài)段(TSS)的基址、界限和其他屬性。282.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器3)調(diào)試和測(cè)試寄存器8個(gè)32位可編程調(diào)試寄存器;5個(gè)32位測(cè)試寄存器。31 0 線性斷點(diǎn)地址0線性斷點(diǎn)地址1線性斷點(diǎn)地址2線性斷點(diǎn)地址3Intel公司留用Intel公司留用斷點(diǎn)狀

21、態(tài)斷點(diǎn)控制(a)調(diào)試寄存器DR0DR1DR2DR3DR4DR5DR6DR7超高速緩存測(cè)試控制超高速緩存測(cè)試數(shù)據(jù)超高速緩存測(cè)試狀態(tài)TLB測(cè)試控制TLB測(cè)試狀態(tài)31 0(b)測(cè)試寄存器TR3TR4TR5TR6TR7292.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器4)浮點(diǎn)寄存器80486的FPU中含有13個(gè)浮點(diǎn)寄存器:8個(gè)80位浮點(diǎn)數(shù)據(jù)寄存器R0R7-用作固定寄 存器組或硬件堆棧;1個(gè)16位標(biāo)志字寄存器-用來標(biāo)記每個(gè)數(shù)據(jù)寄存 器的內(nèi)容;1個(gè)16位控制寄存器-用于提供FPU的若干處理選 擇項(xiàng);1個(gè)16位狀態(tài)寄存器-用于反映FPU的總狀態(tài);2個(gè)48位的指令、數(shù)據(jù)指針寄存器-可為用戶編 寫錯(cuò)誤處理程序提供

22、指令、數(shù)據(jù)指針。302.2.3 80486的三種工作方式及轉(zhuǎn)換.IRETD指令.任務(wù)轉(zhuǎn)換 復(fù)位或修改CR0CPU復(fù)位實(shí)地址保護(hù)、虛擬地址.LMSW指令.修改CR0的PE位復(fù)位中斷實(shí)地址方式 保護(hù)虛地址方式 虛擬8086方式實(shí)地址方式:工作原理與8086基本相同,主要區(qū)別是借助操作數(shù)長度前綴能處理32位數(shù)據(jù),運(yùn)行速度也更高,且可使用4個(gè)數(shù)據(jù)段。實(shí)地址方式 保護(hù)虛地址方式保護(hù)虛地址方式:CPU可訪問的物理存儲(chǔ)空間為232=4GB;程序可用的虛擬 地址空間可達(dá)246=64TB。段長度在啟動(dòng)頁功能時(shí)是4GB,不啟動(dòng)頁功能時(shí)是1MB??芍С侄嘤脩艉蛦斡脩舻亩嗳蝿?wù)操作,并對(duì)各任務(wù)提供了多方面的保護(hù)機(jī)制。

23、虛擬8086方式 虛擬8086方式:既有保護(hù)功能又能執(zhí)行8086代碼的工作方式,是保護(hù)方式的一種子方式。CPU的工作原理與保護(hù)虛地址方式下相同,但程序指定的邏輯地址解釋與8086相同。312.2.4 80486的外部引腳信號(hào)(80486 CPU總線)D31D0ADS數(shù)據(jù)總線總線控制RDY中斷/復(fù)位信號(hào)INTRRESET高速緩存使無效AHOLDNMIEADS高速緩存控制KENFLUSH頁面高速緩存控制PWTPCD數(shù)值錯(cuò)報(bào)告第20位地址屏蔽系統(tǒng)時(shí)鐘32位地址總線總線周期定義總線仲裁成組控制總線寬度控制奇偶校驗(yàn)A31A2BE3BE2BE1BE0PCHKDP0DP1DP2DP3BS16BS8BLAST

24、BRDYBREQBOFFHLDAHOLDPLOCKLOCKW/RD/CM/IO80486微處理器FERRIGNNEA20MCLKM/IO D/C W/R 啟動(dòng)的總線周期L L L 中斷響應(yīng)周期L H L I/O讀周期L H H I/O寫周期H L L 微代碼讀周期H L H Intel公司保留H H L 存儲(chǔ)器讀周期H H H 存儲(chǔ)器寫周期 L L H 停機(jī)/暫停 總線周期定義322.3 80486的數(shù)據(jù)類型與尋址方式數(shù)據(jù)類型尋址方式操作數(shù)寬度和地址寬度的確定332.3.1 數(shù)據(jù)類型 80486在其內(nèi)部定點(diǎn)處理單元CPU和浮點(diǎn)處理單元FPU的支持下,共可處理7類數(shù)據(jù):1. 無符號(hào)二進(jìn)制數(shù)2.

25、帶符號(hào)的二進(jìn)制定點(diǎn)整數(shù)3. 浮點(diǎn)數(shù)4. BCD碼數(shù)5. 串?dāng)?shù)據(jù)6. ASCII碼數(shù)據(jù)塊7. 指針數(shù)據(jù)類342.3.1 數(shù)據(jù)類型1.無符號(hào)二進(jìn)制數(shù)(序數(shù))這類數(shù)有3種,受CPU支持:字節(jié):任何邏輯地址上的8位相鄰位串。字:任何字節(jié)地址開始的2個(gè)相鄰字節(jié)。低字節(jié) 地址為該字地址。雙字:任何字節(jié)地址開始的2個(gè)相鄰字,即4個(gè) 相鄰字節(jié)。最小字節(jié)地址為雙字的地址。352.帶符號(hào)的二進(jìn)制定點(diǎn)整數(shù)(整數(shù))2.3.1 數(shù)據(jù)類型 這類數(shù)均以補(bǔ)碼表示,有8位數(shù)(字節(jié))、16位數(shù)(字)、32位數(shù)(雙字)、64位數(shù)(4字)四種。CPU支持前3種,F(xiàn)PU支持后3種。362.3.1 數(shù)據(jù)類型3.浮點(diǎn)數(shù)(實(shí)數(shù)) 這類數(shù)由F

26、PU支持,有單精度、雙精度和擴(kuò)展精度三種形式:單精度數(shù)31 30 23 22 0符號(hào)位階 碼有 效 數(shù)1.雙精度數(shù)符號(hào)位階 碼有 效 數(shù)1.63 62 52 51 0擴(kuò)展精度數(shù)符號(hào)位階 碼1.有 效 數(shù)79 78 64 63 0372.3.1 數(shù)據(jù)類型關(guān)于浮點(diǎn)數(shù)格式的兩點(diǎn)說明: (1)3種浮點(diǎn)數(shù)的有效數(shù)字段都做了規(guī)格化處理,其整數(shù)位總是1。但需注意,只有擴(kuò)展精度格式的整數(shù)位1真的存在,其余兩種格式下整數(shù)位1是隱含的,并不真的被存放起來。 (2)格式中的階碼是以偏置形式存放的(即其階碼要加上一個(gè)常數(shù)偏置值才是格式階碼),且偏置后的格式階碼恒為正數(shù)。這樣有利于簡化浮點(diǎn)數(shù)大小的比較過程:對(duì)兩個(gè)相同格

27、式的實(shí)數(shù)進(jìn)行比較時(shí),就像對(duì)兩個(gè)無符號(hào)二進(jìn)制整數(shù)進(jìn)行比較一樣方便,當(dāng)從高位到低位比較兩個(gè)實(shí)數(shù)階碼時(shí),若某位的階碼有大小之分,就不用再比較下去了。382.3.1 數(shù)據(jù)類型 由于三種浮點(diǎn)數(shù)格式的階碼位數(shù)不同,其數(shù)值范圍也不同。為了保證統(tǒng)一偏置后的階碼恒為正數(shù),其偏置值必然也為不同正值。最大階碼值 +127 +1023 +16383參 數(shù)格 式單精度雙精度擴(kuò)展精度格式總寬度(位) 32 64 80符號(hào)位位數(shù) 1 1 1有效數(shù)位數(shù)(精度位數(shù)) 23+1(隱) 52+1(隱) 64階碼寬度(位) 8 11 15最小階碼值 -126 -1022 -16382階碼偏置值 +127 +1023 +16383 在

28、作了上述偏置處理后,進(jìn)行浮點(diǎn)數(shù)運(yùn)算時(shí),一個(gè)數(shù)的真階碼需要將其格式階碼減去偏置值來獲得。394.BCD碼數(shù) BCD碼數(shù)有壓縮BCD碼數(shù)和非壓縮BCD碼數(shù)兩種。 CPU兩種數(shù)都支持;FPU只支持壓縮BCD碼數(shù),且最大長度為80位,最多可處理20位BCD碼數(shù)。2.3.1 數(shù)據(jù)類型402.3.1 數(shù)據(jù)類型5.串?dāng)?shù)據(jù) 包括位串、字節(jié)串、字串和雙字串,僅CPU支持。 位串是從任何字節(jié)的任何位開始的相鄰位的序列,最長可達(dá)232-1位。 字節(jié)/字/雙字串是字節(jié)/字/雙字的相鄰序列,最長可達(dá)232-1字節(jié)。412.3.1 數(shù)據(jù)類型6.ASCII碼數(shù)據(jù)類包括ASCII碼字符串和ASCII碼數(shù)(0F)兩種。7.指針

29、數(shù)據(jù)類包括近指針和遠(yuǎn)指針兩種: 近指針即32位指針,是一個(gè)32位的段內(nèi)偏移量,段內(nèi)尋址用。 遠(yuǎn)指針即48位指針,由16位選擇符和32位偏移量組成,用于跨段訪問。42關(guān)于數(shù)據(jù)類型的兩點(diǎn)說明:2.3.1 數(shù)據(jù)類型字和雙字?jǐn)?shù)據(jù)操作的對(duì)準(zhǔn)和不對(duì)準(zhǔn) 一般應(yīng)盡可能將字操作對(duì)準(zhǔn)于偶地址,將雙字操作對(duì)準(zhǔn)于4的 整數(shù)倍地址。但也允許不對(duì)準(zhǔn)。 對(duì)準(zhǔn)和不對(duì)準(zhǔn)獲得的數(shù)據(jù)傳遞速度不一樣:對(duì)準(zhǔn)的字和雙字可 一次傳遞完,而未對(duì)準(zhǔn)時(shí)需幾次才能傳遞完。(2) 采用低端低地址方式存儲(chǔ)字和雙字?jǐn)?shù)據(jù) 字?jǐn)?shù)據(jù)被存儲(chǔ)在兩個(gè)相鄰的字節(jié)單元之中,低字節(jié)在低地址單 元,高字節(jié)在高地址單元; 雙字?jǐn)?shù)據(jù)存儲(chǔ)在四個(gè)連續(xù)字節(jié)單元中,最低字節(jié)在最低地址

30、單 元,最高字節(jié)在最高地址單元。 字或雙字?jǐn)?shù)據(jù)的地址是指最低字節(jié)所在的單元地址。432.3.2 尋址方式 1.尋址方式和有效地址概念 尋址方式:尋找指令中操作數(shù)地址的方式。 直接包含在指令中,即指令的操作數(shù)部分就是操作數(shù)本身。這種操作數(shù)叫立即數(shù),對(duì)應(yīng)的指令尋址方式稱為立即數(shù)尋址。包含在CPU的某個(gè)內(nèi)部寄存器中。這時(shí)指令中的操作數(shù)部分是CPU的一個(gè)寄存器,這種指令尋址方式稱為寄存器尋址。在存儲(chǔ)器中。這時(shí)指令的操作數(shù)部分包含著該操作數(shù)所在的存儲(chǔ)器地址。這種指令尋址方式稱為存儲(chǔ)器尋址。操作數(shù)所在地址有三種可能:442.3.2 尋址方式 在8086系列MPU中,內(nèi)存實(shí)際地址(PA)由段基地址和段內(nèi)偏移

31、地址兩部分組成。EA=基址+(變址比例因子)+位移量其中段內(nèi)偏移地址又叫有效地址(EA)。 基址寄存器內(nèi)容 變址寄存器內(nèi)容 比例因子 位移量有效地址四元素:45有效地址元素16位尋址32位尋址基址寄存器 BX,BP 任何32位通用寄存器變址寄存器 SI,DI 除ESP外的任何32位通用寄存器比例因子 無(或1) 1,2,4,8位移量 0,8,16位 0,8,32位16位和32位尋址時(shí)的四元素定義2.3.2 尋址方式46物理地址物理存儲(chǔ)器尋址過程(地址轉(zhuǎn)換過程)有效地址計(jì)算變址位移基址比例因子+32位有效地址分段部件BE3BE031 0A31A232位分頁部件(可選)32位線性地址13位描述符索

32、引段寄存器CS,DS,ES,SS,FS,GS()選擇符TIRPL15 3 2 1 0邏輯(虛擬)地址2.3.2 尋址方式472.3.2 尋址方式2. 11種尋址方式 偏移地址四元素可優(yōu)化組合出9種存儲(chǔ)器尋址方式,加上立即數(shù)尋址和寄存器尋址,80486共有11種尋址方式:(1) 立即數(shù)尋址 (2) 寄存器尋址(3) 直接尋址 (4) 寄存器間接尋址(5) 基址尋址 (6) 變址尋址(7) 比例變址尋址 (8) 基址加變址尋址 (9) 基址加比例變址尋址 (10) 帶位移的基址加變址尋址 (11) 帶位移的基址加比例變址尋址48(1)立即數(shù)尋址2.3.2 尋址方式 在這種尋址方式下,操作數(shù)作為立即

33、數(shù)直接存在指令中,可為8位、16位或32位。例:MOV AX,4567HMOV BL,78HMOV ECX,12345678H 以第3條指令為例,動(dòng)畫演示立即數(shù)尋址過程。注意: (1)源和目的操作數(shù)字長應(yīng)一致; (2)立即數(shù)只能作為源操作數(shù)。492.3.2 尋址方式(2)寄存器尋址(寄存器直接尋址) 在這種方式下,操作數(shù)包含在指令規(guī)定的8位、16位或32位寄存器中。例:MOV EAX,EDXINC CLMOV DS,AX 這種尋址方式指令編碼短,無需從存儲(chǔ)器取操作數(shù),故執(zhí)行速度快。注意: (1)字節(jié)寄存器只有8個(gè); (2)源和目的操作數(shù)的字長應(yīng)一致; (3)CS不能用MOV改變。502.3.2

34、 尋址方式(3)直接尋址(存儲(chǔ)器直接尋址) 在這種方式下,指令中的操作數(shù)部分直接給出操作數(shù)有效地址EA,它和操作碼一起放在存儲(chǔ)器代碼段中,可以是16位或32位整數(shù)。但操作數(shù)一般在數(shù)據(jù)段DS中。例: MOV AX,DS:3000H設(shè)DS=5000H,執(zhí)行過程見動(dòng)畫演示512.3.2 尋址方式 實(shí)際中對(duì)于直接尋址,如操作數(shù)在DS段中,則可直接寫成:MOV AX,3000H 如操作數(shù)在DS之外的其他段(CS,SS,ES,FS,GS)中,指令中則必須用段寄存器名前綴(稱為段超越前綴)予以指明。例如:MOV AX,FS:3000H 直接尋址主要用于單個(gè)操作數(shù)的相對(duì)尋址場合(如簡單的標(biāo)量操作數(shù)尋址和靜態(tài)分

35、配數(shù)組的起始地址尋址等)。522.3.2 尋址方式(4)寄存器間接尋址 在這種方式下,操作數(shù)在存儲(chǔ)器中,但存儲(chǔ)器有效地址EA放在寄存器中,即 EA=寄存器。 寄存器的使用規(guī)定在16位尋址和32位尋址時(shí)不一樣。532.3.2 尋址方式16位尋址時(shí),偏移地址放在SI、DI、BP或BX中。 這時(shí)又有兩種段默認(rèn)情況:若以SI、DI、BX間接尋址,則默認(rèn)操作數(shù)在DS段中。 例如: MOV AX,SI ;默認(rèn)DS為段基址若以BP間接尋址,則默認(rèn)操作數(shù)在SS段中。 例如: MOV AX,BP ;默認(rèn)SS為段基址 如果操作數(shù)不在上述規(guī)定的默認(rèn)段,而是在其他段,則必須在指令中相應(yīng)的操作數(shù)前加上段超越前綴。例如:

36、MOV AX,ES:SIMOV AX,DS:BP542.3.2 尋址方式32為尋址時(shí),8個(gè)32位通用寄存器均可用作寄存 器間接尋址。 除ESP、EBP默認(rèn)段寄存器為SS外,其余6個(gè)通用寄存器均默認(rèn)段寄存器為DS。如操作數(shù)在默認(rèn)段之外,指令中必須加段超越前綴。 寄存器間接尋址的應(yīng)用場合與直接尋址的應(yīng)用場合相似,但更靈活。MOV EBX,EAX ;默認(rèn)DS為段基址,傳送雙字給EBXMOV DX,EBX ;默認(rèn)DS為段基址,傳送字給DXMOV CH,EAX ;默認(rèn)DS為段基址,傳送字節(jié)給CH例如:552.3.2 尋址方式(5)基址尋址 在這種方式下,EA=基址寄存器+位移量。其中位移量一定要為常數(shù),

37、且跟隨在操作碼之后,與操作碼一起存放在代碼段中。16位尋址情況下,BX和BP作為基址寄存器。在缺省段超越前綴時(shí),BX以DS作為默認(rèn)段寄存器,BP以SS作為默認(rèn)段寄存器。位移量可為8位或16位;32位尋址情況下,8個(gè)32位通用寄存器均可作基址寄存器,其中ESP、EBP以SS為默認(rèn)段寄存器,其余6個(gè)通用寄存器均以DS為默認(rèn)段寄存器。位移量為8位或32位。例如:MOV EAX,BX+24 ;也可寫成MOV EAX,24BXMOV ECX,EBP+50 ;也可寫成MOV ECX,50EBPMOV DX,EAX+1500;也可寫成MOV DX,1500EAX562.3.2 尋址方式(6)變址尋址 在這種

38、方式下,EA=變址寄存器+位移量。指令書寫格式和尋址執(zhí)行過程與基址尋址相同,區(qū)別僅在于將基址寄存器改成變址寄存器。572.3.2 尋址方式16位尋址時(shí),僅SI、DI可作變址寄存器,且默認(rèn)DS作為段基址寄存器。如:MOV AX,COUNTSI32位尋址時(shí),除ESP外的任何通用寄存器均可作變址寄存器,且默認(rèn)EBP以SS作段基址寄存器,其余均以DS作段基址寄存器。 如:MOV EAX,5EBPMOV ECX,DATAEAX 基址、變址尋址適于對(duì)一維數(shù)組的數(shù)組元素進(jìn)行檢索操作。位移量表示數(shù)組起始地址偏移量;基址/變址表示數(shù)組元素的下標(biāo),可變。582.3.2 尋址方式(7)比例變址尋址在這種方式下:EA

39、=變址寄存器比例因子+位移量這種尋址方式只適于32位尋址一種情況。例如:MOV EAX,TABLEESI*4 ;TABLE是位移量,4是比例因子 比例變址尋址和基址/變址尋址的作用相似,也適用于對(duì)一維數(shù)組元素的檢索。但當(dāng)數(shù)組元素大小為2/4/8字節(jié)時(shí),用它更方便、更高效。比例變址尋址方式的執(zhí)行過程如動(dòng)畫演示。592.3.2 尋址方式(8)基址加變址尋址在這種尋址方式下,EA=基址寄存器+變址寄存器例如:MOV AX,BX+SI ;或?qū)懗蒑OV AX,BXSI 它有16位尋址和32位尋址兩種情況,每種情況下基址、變址寄存器的使用規(guī)定和段寄存器的默認(rèn)規(guī)定與前面所述相同,但一種尋址方式中既有基址寄存

40、器又有變址寄存器,而兩個(gè)寄存器默認(rèn)的段寄存器又不相同時(shí),一般規(guī)定由基址寄存器來決定默認(rèn)哪一個(gè)段寄存器作段基址指針。例如: MOV EAX,EBPECX ;由EBP決定默認(rèn)SS為段基址寄存器基址加變址尋址主要用于二維數(shù)組元素的檢索和二重循環(huán)等。602.3.2 尋址方式(9)基址加比例變址尋址在這種方式下,EA=變址寄存器比例因子+基址寄存器它只有32位尋址一種情況。格式舉例:MOV ECX,EDX*8EAX ;或MOV ECX,EDX*8+EAXMOV AX,EBX*4ESI ;或MOV AX,EBX*4+ESI 這種方式主要用于數(shù)組元素大小為2/4/8字節(jié)時(shí)的二維數(shù)組檢索操作等場合。612.3

41、.2 尋址方式(10)帶位移的基址加變址尋址在這種方式下:EA=變址寄存器+基址寄存器+位移量 這種方式也分16位尋址和32位尋址兩種情況。變址、基址寄存器的使用約定和對(duì)段寄存器的默認(rèn)約定與前面所述相同。 以第(1)條指令為例,執(zhí)行過程如動(dòng)畫演示。 這種尋址方式也是主要用于二維數(shù)組操作,位移量即為數(shù)組起始地址。 (1) MOV AX,BX+DI+MASK 或MOVAX,MASKBXDI (2) ADD EDX,ESIEBP+0FFFF000H或 ADD EDX,0FFFF000HESIEBP格式舉例:622.3.2 尋址方式(11)帶位移的基址加變址比例尋址這種方式將偏移地址四元素都用上了,即

42、:EA=變址寄存器比例因子+基址寄存器+位移量它只有32位尋址一種情況。各種約定和默認(rèn)情況同前所述。格式舉例:INC EDI*8ECX+40 ;或INC EDI*8+ECX+40 當(dāng)二維數(shù)組的數(shù)組元素大小為2/4/8字節(jié),且數(shù)組起始地址不為0時(shí),適于用這種尋址方式進(jìn)行數(shù)組檢索操作。632.3.2 尋址方式3.存儲(chǔ)器尋址時(shí)的段約定訪存操作類型 默認(rèn)段寄存器 允許超越的段寄存器 偏移地址寄存器堆棧操作 SS 無 (E)SP取指令代碼 CS 無 (E)IP源串?dāng)?shù)據(jù)訪問 DS CS、SS、ES、FS、GS (E)SI目的串?dāng)?shù)據(jù)訪問 ES 無 (E)DI通用數(shù)據(jù)訪問 DS CS、SS、ES、FS、GS

43、偏移地址以(E)BP、(E)SP間接尋址的指令 SSCS、DS、ES、FS、GS偏移地址642.3.2 尋址方式4.應(yīng)用舉例 CPUBX 0100HSI 0002HDS 3000H圖 2.130100H 12H30101H 34H30102H 56H30103H 78H31200H 2AH31201H 4CH31202H B7H31203H 65HM 例2.1 已知80486工作在實(shí)地址方式下,其中一些寄存器的內(nèi)容和一些存儲(chǔ)單元的內(nèi)容如圖2.1所示,試指出下列各條指令執(zhí)行后,AX中的內(nèi)容。 MOV AX,2010H MOV AX,BX MOV AX,1200H MOV AX,BX MOV AX

44、,1100HBX MOV AX,BXSI MOV AX,1100HBX+SI LEA AX,SI652.3.2 尋址方式 例2.2 假定80486工作在實(shí)模式下,(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,變量TABLE的偏移地址為0100H。請(qǐng)指出下列指令的源操作數(shù)字段是什么尋址方式?它的有效地址(EA)和物理地址(PA)分別是多少? MOV AX,1234H MOV AX,TABLE MOV AX,BX+100H MOV AX,TABLEBPSI662.3.3 操作數(shù)寬度和地址寬度的確定 操作數(shù)寬度和地址寬度與工作方式直接相

45、關(guān),還與指令中是否加這兩種寬度的超越前綴有關(guān)。在實(shí)地址或虛擬8086方式下,操作數(shù)和地址的默認(rèn)寬度都為16位;當(dāng)指令中無寬度超越前綴時(shí):在保護(hù)虛擬地址方式下,寬度則取決于可執(zhí)行段的描述符中的D位:D位為0,表示默認(rèn)寬度是16位D位為1,表示默認(rèn)寬度是32位80486可使用寬度超越前綴來強(qiáng)行指定執(zhí)行16位或32位操作: 操作數(shù)寬度前綴使處理器在默認(rèn)的16位方式下尋址32位數(shù)據(jù),或者在默認(rèn)的32位方式下尋址16位數(shù)據(jù)。 地址寬度前綴使處理器在默認(rèn)的16位方式下進(jìn)行32位尋址,或者在默認(rèn)的32位方式下進(jìn)行16位尋址。672.3.3 操作數(shù)寬度和地址寬度的確定注意: (1)在實(shí)地址方式下,使用地址寬度

46、前綴不能使偏移量超過FFFFH,否則將會(huì)導(dǎo)致一個(gè)一般保護(hù)異常. (2)80486/80386的操作數(shù)寬度除了16位(字)和32位(雙字)兩種外,還有一種8位(字節(jié))寬度。首先由指令操作碼中的W域決定是8位字節(jié)操作數(shù)(W=0)還是16位字和32位雙字操作數(shù)(W=1);在W=1時(shí),再由段描述符中的D位值來確定是16位操作模式還是32位操作模式。682.4 80486的匯編級(jí)指令系統(tǒng)80486指令系統(tǒng)概述80486指令格式80486的指令簡介幾類常用指令詳解692.4.1 80486指令系統(tǒng)概述 80486的指令系統(tǒng)是在8086指令系統(tǒng)的基礎(chǔ)上逐步發(fā)展而來的,在代碼級(jí)具有向上兼容性。它提供了32位尋

47、址方式和32位操作方式,并且包含全部浮點(diǎn)運(yùn)算指令。 80486指令的操作數(shù)可以是03個(gè),根據(jù)尋址方式不同,可直接包含在指令中,也可存于寄存器或存儲(chǔ)器中。 每條指令的長度因指令而異,最短1字節(jié),最長16字節(jié),平均3.2字節(jié)。 指令的操作數(shù)寬度可以是8位、16位、32位,尋址寬度可以是16位或32位。702.4.2 80486指令格式 80486和其他80X86系列CPU一樣,采用變字節(jié)的指令格式。指令由116字節(jié)組成,一般格式如下(由6個(gè)字段組成):0,1,2,4字節(jié)前綴Prefix0,1,2,4字節(jié)字段1字段2操作碼OP code字段3mod r/m字段4s-i-b字段5displ字段6dat

48、a用于修改指令操作的某些屬性常用前綴有5類:段超越前綴操作數(shù)寬度前綴地址寬度前綴重復(fù)前綴總線鎖定前綴規(guī)定指令的操作性質(zhì),包括操作數(shù)類型、操作數(shù)傳送方向、寄存器編碼或符號(hào)擴(kuò)展等1字節(jié)1字節(jié)寄存器/存儲(chǔ)器尋址方式說明符字段主尋址字節(jié),規(guī)定操作數(shù)的尋址方式,包括操作數(shù)的存放位置和存儲(chǔ)器中操作數(shù)EA的計(jì)算方法等比例-變址-基址字節(jié),為第二尋址字節(jié)位移量字段,屬存儲(chǔ)器地址的一部分。位移量足夠小時(shí),通常采用帶符號(hào)的8位整數(shù),CPU自動(dòng)將它擴(kuò)展到16位或32位立即數(shù)字段8位立即數(shù)與16/32位操作數(shù)一起使用時(shí),CPU自動(dòng)將其擴(kuò)展至符號(hào)相同的16/32位數(shù)。同理也可將16位立即數(shù)擴(kuò)展至32位14字節(jié)12字節(jié)

49、6個(gè)字段中,只有操作碼字段是必要的,其他字段均可有可無,具體取決于涉及的特定操作和操作的位置與類型。712.4.3 80486的指令簡介80486指令系統(tǒng)整數(shù)指令-最常用部分浮點(diǎn)數(shù)指令操作系統(tǒng)型指令722.4.3 80486的指令簡介其中整數(shù)指令按功能又可分為:1.數(shù)據(jù)傳送指令2.算術(shù)運(yùn)算指令3.邏輯運(yùn)算與移位指令4.串操作指令5.位操作指令6.控制轉(zhuǎn)移指令7.標(biāo)志操作指令8.按條件設(shè)置字節(jié)指令9.處理器控制指令10.高級(jí)語言指令732.4.3 80486的指令簡介1.數(shù)據(jù)傳送指令 這是計(jì)算機(jī)中最基本、最常用、最重要的一類操作。 在實(shí)際程序中,它的使用頻率最高,用于實(shí)現(xiàn)存儲(chǔ)器與寄存器、寄存器與

50、寄存器、累加器與I/O端口之間字節(jié)、字或雙字的傳送,也可將立即數(shù)傳送到存儲(chǔ)器或寄存器。 這類指令尋址方式最豐富,除POPF外,均不影響標(biāo)志寄存器的標(biāo)志位。74數(shù)據(jù)傳送指令主要包括:通用數(shù)據(jù)傳送指令,如數(shù)值傳送類指令(MOV)、裝入有效地址指令(LEA)、段裝入指令、交換類指令(XCHG和BSWAP)、查表轉(zhuǎn)換指令(XLAT)等。堆棧指令,如PUSH類/POP類指令等。數(shù)據(jù)類型變換指令,如數(shù)據(jù)寬度變換指令,帶符號(hào)數(shù)符號(hào)位擴(kuò)展/無符號(hào)數(shù)位擴(kuò)展指令等。I/O指令,如IN類/OUT類指令等。2.4.3 80486的指令簡介752.4.3 80486的指令簡介2.算術(shù)運(yùn)算指令 這類指令支持加、減、乘、除

51、四種基本算術(shù)運(yùn)算,其操作對(duì)象可以是字節(jié)、字、雙字的無符號(hào)和有符號(hào)的二進(jìn)制整數(shù);也可以是無符號(hào)的壓縮/非壓縮BCD碼數(shù);還支持符號(hào)擴(kuò)展指令和十進(jìn)制調(diào)整指令。 它的操作結(jié)果一般會(huì)影響標(biāo)志寄存器中的狀態(tài)標(biāo)志位,如ZF、CF、SF、OF、AF、PF等。762.4.3 80486的指令簡介算術(shù)運(yùn)算指令有:雙操作數(shù)指令,如加、減、比較等。單操作數(shù)指令,如增/減、整數(shù)變反、乘除法指令等。無操作數(shù)指令,如十進(jìn)制運(yùn)算調(diào)整和符號(hào)位擴(kuò)展等。三操作數(shù)指令,如有符號(hào)整數(shù)乘法指令I(lǐng)MUL等。772.4.3 80486的指令簡介3.邏輯運(yùn)算與移位指令 這類指令包括與、或、非、異或、測(cè)試(TEST)和左移、右移、循環(huán)左/右移

52、指令。 重點(diǎn)要弄清各種移位操作的功能,以及與操作和TEST操作的區(qū)別。這類指令除NOT外,都會(huì)影響某些標(biāo)志位。782.4.3 80486的指令簡介4.串操作指令 串操作是指對(duì)存儲(chǔ)器中的一個(gè)或多個(gè)長度為字節(jié)、字或雙字的字符串進(jìn)行操作,包括串傳送、串裝入、串存儲(chǔ)、串比較、串掃描、串輸入、串輸出等。 串操作指令都是約定以DS:(E)SI來尋址源串,以ES:(E)DI來尋址目的串,故指令中不必顯式指明操作數(shù)。其中源串的段寄存器DS可通過加段超越前綴而改變,但目的串的段寄存器ES不能超越。源、目的兩個(gè)指針(E)SI和(E)DI在每次操作后都將根據(jù)方向標(biāo)志DF的值自動(dòng)增量(DF=0時(shí))或減量(DF=1時(shí))

53、,以指向串中的下一項(xiàng)。增量/減量的大小由操作串的長度決定:字節(jié)串只加/減1,字串加/減2,而雙字串加/減4。792.4.3 80486的指令簡介 通常在串操作指令前加重復(fù)前綴來傳送一組串?dāng)?shù)據(jù),但必須用(E)CX來作重復(fù)次數(shù)計(jì)數(shù)器,每傳送一次,(E)CX值減1,直至減為0。 除了串比較指令(CMPS)和串掃描指令(SCAS)外,其余串操作指令均不影響標(biāo)志位。805.位操作指令2.4.3 80486的指令簡介為80386/80486所特有。包括以下兩類:位測(cè)試指令-對(duì)指定的位串?dāng)?shù)據(jù)的指定位進(jìn)行測(cè)試 操作后送入CF,然后將該位按操作規(guī) 定變?yōu)樾轮?置1,置0或變反)。位掃描指令-由左至右或由右至左檢

54、索字或雙字中 的第一個(gè)“1”位,記下其下標(biāo)存至給 定的寄存器中。812.4.3 80486的指令簡介6.控制轉(zhuǎn)移指令包括以下5種指令:無條件轉(zhuǎn)移指令(JMP)過程調(diào)用/返回指令(CALL/RET)條件轉(zhuǎn)移指令(JCC) 循環(huán)控制指令(LOOP)中斷指令(INT) 無條件向目標(biāo)地址轉(zhuǎn)移,可分為段內(nèi)、段間轉(zhuǎn)移,段內(nèi)、段間轉(zhuǎn)移又可分別分為直接和間接轉(zhuǎn)移。無條件轉(zhuǎn)移指令(JMP)實(shí)現(xiàn)子程序調(diào)用,也可歸入無條件轉(zhuǎn)移指令中。過程調(diào)用/返回指令(CALL/RET) 根據(jù)指令執(zhí)行后標(biāo)志寄存器的狀態(tài)進(jìn)行轉(zhuǎn)移,通常和CMP或TEST指令組合使用。條件轉(zhuǎn)移指令(JCC) 控制循環(huán)程序的循環(huán),實(shí)質(zhì)上也是條件轉(zhuǎn)移指令,

55、在CX(ECX)中預(yù)置循環(huán)次數(shù)。循環(huán)控制指令(LOOP)產(chǎn)生一個(gè)由8位立即數(shù)指定中斷號(hào)的軟中斷和處理溢出中斷。中斷指令(INT) 這類指令的共同特點(diǎn)是可改變程序的正常執(zhí)行順序,使之轉(zhuǎn)移。而改變程序的執(zhí)行順序,本質(zhì)上就是要改變CS:(E)IP的內(nèi)容。這類指令對(duì)標(biāo)志位無影響。822.4.3 80486的指令簡介7.標(biāo)志操作指令 標(biāo)志寄存器中的標(biāo)志位一般是由算術(shù)/邏輯運(yùn)算的結(jié)果影響的,但也可通過標(biāo)志操作指令直接對(duì)它或它的某些位進(jìn)行操作,通過改變其狀態(tài)來控制程序的運(yùn)行。主要包括:標(biāo)志寄存器讀/寫指令(LAHF/SAHF)標(biāo)志寄存器入棧/出棧指令(PUSHF / POPF 和PUSHFD / POPFD

56、)單個(gè)標(biāo)志位操作指令832.4.3 80486的指令簡介8.按條件設(shè)置字節(jié)指令SET 與條件轉(zhuǎn)移指令相似,只是滿足條件時(shí),不是轉(zhuǎn)移,而是將特定的字節(jié)(目的操作數(shù))置“1”。置“1”的條件則直接包含在指令助記符之中。849.處理器控制指令這類指令可分為以下四類:標(biāo)志操作指令操作系統(tǒng)型指令-又分系統(tǒng)寄存器裝入與存儲(chǔ) 指令和保護(hù)屬性檢查指令兩類。通常只由系統(tǒng) 程序員使用,一般用戶很少用到??詹僮髦噶?NOP. 使CPU不作任何操作,僅影 響(E)IP寄存器,對(duì)標(biāo)志位無影響。外同步類指令-實(shí)現(xiàn)CPU與外部時(shí)間的同步, 包括HTL、ESC、WAIT、LOCK。2.4.3 80486的指令簡介8510.高

57、級(jí)語言指令主要包括:數(shù)組邊界檢查指令BOUND進(jìn)入過程指令ENTER退出過程指令LEAVE 可為實(shí)現(xiàn)像C和PASCAL這樣的結(jié)構(gòu)化語言提供機(jī)器語言支持。2.4.3 80486的指令簡介862.4.4 幾類常用指令詳解數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算與移位指令串操作指令控制轉(zhuǎn)移指令87重點(diǎn)關(guān)注:指令的匯編格式指令的基本功能指令支持的尋址方式指令的執(zhí)行對(duì)標(biāo)志位的影響指令的特殊要求88數(shù)據(jù)傳送指令數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最常用的一類操作。使用頻率最高不影響標(biāo)志位尋址方式最豐富 特點(diǎn):89傳送指令(MOV)交換指令(XCHG)I/O指令(IN/OUT)裝入有效地址指令(LEA)裝入段寄存器指令(LD

58、S、LES、LFS、LGS、LSS)查表轉(zhuǎn)換指令(XLAT)壓棧/彈棧指令 (PUSH/PUSHA/PUSHAD/POP/POPA/POPAD))擴(kuò)展傳送指令(MOVSX/MOVZX)字節(jié)交換指令(BSWAP)901. 傳送指令指令操作:(源操作數(shù))目的操作數(shù) 指令格式:MOV 目的操作數(shù),源操作數(shù)尋址規(guī)定: REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM8/16/32位通用寄存器REGMEM8/16/32位存儲(chǔ)器SREG段寄存器IMM8/16/32位立即數(shù)912.4.3 80486的指令簡介通用寄存器(EAX、EBX、ECX

59、、EDX、 EBP、ESP、ESI、EDI)立即數(shù)CS存儲(chǔ)器段寄存器(SS、DS、ES、FS、GS)MOV指令允許的傳送關(guān)系92使用說明:源操作數(shù)和目的操作數(shù)的類型必須一致。目的操作數(shù)不能為立即數(shù)。CS和(E)IP均不能用作指令的目的寄存器。段寄存器間不能直接傳送,也不能直接將立即數(shù)送給段寄存器。源操作數(shù)為立即數(shù),而目的操作數(shù)類型不確定時(shí),要給目的操作數(shù)加類型說明。源操作數(shù)和目的操作數(shù)不能同為存儲(chǔ)器操作數(shù)。93 MOV DS,100 例2.3 識(shí)別下列指令的正確性,對(duì)錯(cuò)誤的指令,說明錯(cuò)誤的原因。 MOV 1000H,23H錯(cuò)。源、目的操作數(shù)不能同為存儲(chǔ)器尋址。 MOV 1000H,2000H錯(cuò)

60、。立即數(shù)不能直接賦給段寄存器。錯(cuò)。目的操作數(shù)長度不確定。 MOV DATA,1133H MOV CS,AX 依賴于DATA的定義錯(cuò)。不能用傳送指令改變代碼段寄存器。 MOV AX,0100H+BX+BP錯(cuò)。地址寄存器不能同為基址寄存器。94 例2.4 FIRST,SECOND為字節(jié)變量,寫出將FIRST開始的字內(nèi)容送給變量SECOND開始的字單元指令序列。MOV AL,F(xiàn)IRSTMOV SECOND,ALMOV AL,F(xiàn)IRST1MOV SECOND1,ALMOV AX,WORD PTR FIRSTMOV WORD PTR SECOND,AX 用字傳送 用字節(jié)傳送952. 交換指令操作: (目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論