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

下載本文檔

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

文檔簡介

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

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

3、部暫存器指令隊列總線接口單元(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 當EU從指令隊列中取出指令時,BIU便從內(nèi)存中取出后續(xù)的代碼放入隊列中;當EU需要數(shù)據(jù)時,BIU根據(jù)EU輸出的地址,從指定的內(nèi)存單元或外設(shè)中取出數(shù)據(jù)供EU使用;當運算結(jié)束時,BIU將運算結(jié)果送給指定的內(nèi)存單元或外設(shè)。 EU控制電路從指令隊列取出指令代碼,經(jīng)譯碼發(fā)出相應(yīng)的控制信號

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

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

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

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

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

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

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

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

12、理,將線性地址變換為32位物理地址。高速緩存單元 用于加速指令/數(shù)據(jù)的訪問過程。浮點運算單元 相當于一個增強型浮點協(xié)處理器80387,專門作浮點運算,可與ALU的整數(shù)運算并行進行。14基本寄存器系統(tǒng)級寄存器調(diào)試和測試寄存器浮點寄存器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標志寄存器指令指針寄存器EFLAGSFLAGSEIPIP31 15 031 15 0選擇器描述符高速緩存器段寄存器CSSSDSESFSGS15 0 63 016通用寄存器為了與8086/8088兼容,它們的低16位 可以單獨訪問,并以同8086/8088中相 同的名稱命名:AX、BX、CX、DX、SI、 DI、BP、SP。2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器8個32位通用寄存器: EAX、EBX、ECX、EDX、 ESI、EDI、EBP、ESP其中AX、BX、CX、DX 還可進一步分成 兩個8位寄存器單獨訪問。17指令指針寄存器(EIP) EIP用于保存下一條待預(yù)取指令相對于代碼段

14、基址的偏移量。 2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 80486工作在32位操作方式時,采用32位的EIP;工作在16位操作方式時,采用16位的IP。它的低16位也可單獨訪問,稱之為IP。182.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器標志寄存器(EFLAGS)32位的EFLAGS包含三種標志: 狀態(tài)標志(S)-報告算術(shù)/邏輯運算指令執(zhí)行后的狀態(tài); 控制標志(C)-僅含一個標志DF,用于控制串操作指令的地址改變方向; 系統(tǒng)標志(X)-用于控制I/O、屏蔽中斷、調(diào)試、任務(wù)轉(zhuǎn)換和控制保護方式與虛擬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對準檢查標志X虛擬86模式標志X恢復(fù)標志X嵌套標志X特權(quán)級標志S溢出標志C方向標志X中斷允許標志X自陷標志S符號標志S零標志S輔助進位標志S奇偶標志S進位標志注:S表示狀態(tài)標志,X表示系統(tǒng)標志,C表示控制標志標志寄存器202.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器段寄存器80486有6個段寄存器:CS-指

16、明當前的代碼段SS-指明當前的堆棧段DSESFS GS決定程序使用存儲器區(qū)域塊指明當前的4個數(shù)據(jù)段80486段的定義與8086有所不同: 保護方式下,段的長度可以在1字節(jié)到4G字節(jié)之間變化; 實地址方式下,段的長度固定為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)于對段寄存器的說明:實地址方式和虛擬8086方式下,段選擇器就

17、是段寄存器,它保存的是邏輯段基址的高16位,將它的內(nèi)容左移4位即可得到實際段基址,而不必使用描述符高速緩存器。在保護虛地址方式下,為了描述每個段的基址、屬性和邊界,為每個段定義了一個描述符。操作系統(tǒng)使用的各任務(wù)公用的段描述符放在一起構(gòu)成全局描述符表GDT;某個任務(wù)專用的段描述符放在一起構(gòu)成局部描述符表LDT。23段描述符格式為:段基地址150位段邊界150位段基地址3124位段邊界1916位屬性屬 性段基地址2316位2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器24 為了說明一個段的描述符在哪個表中,表的序號是多少以及特權(quán)的高低,為每個段定義了一個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)級001 特權(quán)級110 特權(quán)級211 特權(quán)級3請求特權(quán)級25 將一個選擇符裝入一個段選擇器時,處理器將自動從GDT或LDT中找到其對應(yīng)的描述符裝入相應(yīng)描述符高速緩存器中。2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器描述符64基址物理存儲器LDTDS數(shù)據(jù)段0040H界限15 3 2描述符高速緩存器DS選擇符63 0屬性裝入DS段描述符TI=1指示LDT13位索引指向LDT的第64個段描述符131 0以后,每當

19、訪問存儲器時,與所用段相關(guān)的段描述符高速緩沖器就自動參與該次存儲器訪問操作。轉(zhuǎn)換關(guān)系: 線性地址 = 段描述符高速緩存器中段基址 + 偏移地址 262)系統(tǒng)級寄存器2.2.2 80486的內(nèi)部結(jié)構(gòu)與內(nèi)部寄存器 包括4個控制寄存器和4個系統(tǒng)地址寄存器。 只能由特權(quán)級0的程序訪問。 數(shù)字運算錯頁目錄基址寄存器保留PCDPET頁Fault線性地址保 留31 30 29 18 17 16 12 4 3 2 1 0頁管理 使能Cache不使能不通寫對準標志寫保護保護允許監(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)地址寄存器(只在保護方式下使用,所以又叫保護方式寄存器):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)試和測試寄存器8個32位可編程調(diào)試寄存器;5個32位測試寄存器。31 0 線性斷點地址0線性斷點地址1線性斷點地址2線性斷點地址3Intel公司留用Intel公司留用斷點狀

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

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

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

24、BRDYBREQBOFFHLDAHOLDPLOCKLOCKW/RD/CM/IO80486微處理器FERRIGNNEA20MCLKM/IO D/C W/R 啟動的總線周期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 存儲器讀周期H H H 存儲器寫周期 L L H 停機/暫停 總線周期定義322.3 80486的數(shù)據(jù)類型與尋址方式數(shù)據(jù)類型尋址方式操作數(shù)寬度和地址寬度的確定332.3.1 數(shù)據(jù)類型 80486在其內(nèi)部定點處理單元CPU和浮點處理單元FPU的支持下,共可處理7類數(shù)據(jù):1. 無符號二進制數(shù)2.

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

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

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

28、作了上述偏置處理后,進行浮點數(shù)運算時,一個數(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.串數(shù)據(jù) 包括位串、字節(jié)串、字串和雙字串,僅CPU支持。 位串是從任何字節(jié)的任何位開始的相鄰位的序列,最長可達232-1位。 字節(jié)/字/雙字串是字節(jié)/字/雙字的相鄰序列,最長可達232-1字節(jié)。412.3.1 數(shù)據(jù)類型6.ASCII碼數(shù)據(jù)類包括ASCII碼字符串和ASCII碼數(shù)(0F)兩種。7.指針

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

30、單 元,最高字節(jié)在最高地址單元。 字或雙字數(shù)據(jù)的地址是指最低字節(jié)所在的單元地址。432.3.2 尋址方式 1.尋址方式和有效地址概念 尋址方式:尋找指令中操作數(shù)地址的方式。 直接包含在指令中,即指令的操作數(shù)部分就是操作數(shù)本身。這種操作數(shù)叫立即數(shù),對應(yīng)的指令尋址方式稱為立即數(shù)尋址。包含在CPU的某個內(nèi)部寄存器中。這時指令中的操作數(shù)部分是CPU的一個寄存器,這種指令尋址方式稱為寄存器尋址。在存儲器中。這時指令的操作數(shù)部分包含著該操作數(shù)所在的存儲器地址。這種指令尋址方式稱為存儲器尋址。操作數(shù)所在地址有三種可能:442.3.2 尋址方式 在8086系列MPU中,內(nèi)存實際地址(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位尋址時的四元素定義2.3.2 尋址方式46物理地址物理存儲器尋址過程(地址轉(zhuǎn)換過程)有效地址計算變址位移基址比例因子+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種存儲器尋址方式,加上立即數(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條指令為例,動畫演示立即數(shù)尋址過程。注意: (1)源和目的操作數(shù)字長應(yīng)一致; (2)立即數(shù)只能作為源操作數(shù)。492.3.2 尋址方式(2)寄存器尋址(寄存器直接尋址) 在這種方式下,操作數(shù)包含在指令規(guī)定的8位、16位或32位寄存器中。例:MOV EAX,EDXINC CLMOV DS,AX 這種尋址方式指令編碼短,無需從存儲器取操作數(shù),故執(zhí)行速度快。注意: (1)字節(jié)寄存器只有8個; (2)源和目的操作數(shù)的字長應(yīng)一致; (3)CS不能用MOV改變。502.3.2

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

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

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

37、且跟隨在操作碼之后,與操作碼一起存放在代碼段中。16位尋址情況下,BX和BP作為基址寄存器。在缺省段超越前綴時,BX以DS作為默認段寄存器,BP以SS作為默認段寄存器。位移量可為8位或16位;32位尋址情況下,8個32位通用寄存器均可作基址寄存器,其中ESP、EBP以SS為默認段寄存器,其余6個通用寄存器均以DS為默認段寄存器。位移量為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位尋址時,僅SI、DI可作變址寄存器,且默認DS作為段基址寄存器。如:MOV AX,COUNTSI32位尋址時,除ESP外的任何通用寄存器均可作變址寄存器,且默認EBP以SS作段基址寄存器,其余均以DS作段基址寄存器。 如:MOV EAX,5EBPMOV ECX,DATAEAX 基址、變址尋址適于對一維數(shù)組的數(shù)組元素進行檢索操作。位移量表示數(shù)組起始地址偏移量;基址/變址表示數(shù)組元素的下標,可變。582.3.2 尋址方式(7)比例變址尋址在這種方式下:EA

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

40、器又有變址寄存器,而兩個寄存器默認的段寄存器又不相同時,一般規(guī)定由基址寄存器來決定默認哪一個段寄存器作段基址指針。例如: MOV EAX,EBPECX ;由EBP決定默認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ù)組檢索操作等場合。612.3

41、.2 尋址方式(10)帶位移的基址加變址尋址在這種方式下:EA=變址寄存器+基址寄存器+位移量 這種方式也分16位尋址和32位尋址兩種情況。變址、基址寄存器的使用約定和對段寄存器的默認約定與前面所述相同。 以第(1)條指令為例,執(zhí)行過程如動畫演示。 這種尋址方式也是主要用于二維數(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位尋址一種情況。各種約定和默認情況同前所述。格式舉例:INC EDI*8ECX+40 ;或INC EDI*8+ECX+40 當二維數(shù)組的數(shù)組元素大小為2/4/8字節(jié),且數(shù)組起始地址不為0時,適于用這種尋址方式進行數(shù)組檢索操作。632.3.2 尋址方式3.存儲器尋址時的段約定訪存操作類型 默認段寄存器 允許超越的段寄存器 偏移地址寄存器堆棧操作 SS 無 (E)SP取指令代碼 CS 無 (E)IP源串數(shù)據(jù)訪問 DS CS、SS、ES、FS、GS (E)SI目的串數(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工作在實地址方式下,其中一些寄存器的內(nèi)容和一些存儲單元的內(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工作在實模式下,(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,變量TABLE的偏移地址為0100H。請指出下列指令的源操作數(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)。在實地址或虛擬8086方式下,操作數(shù)和地址的默認寬度都為16位;當指令中無寬度超越前綴時:在保護虛擬地址方式下,寬度則取決于可執(zhí)行段的描述符中的D位:D位為0,表示默認寬度是16位D位為1,表示默認寬度是32位80486可使用寬度超越前綴來強行指定執(zhí)行16位或32位操作: 操作數(shù)寬度前綴使處理器在默認的16位方式下尋址32位數(shù)據(jù),或者在默認的32位方式下尋址16位數(shù)據(jù)。 地址寬度前綴使處理器在默認的16位方式下進行32位尋址,或者在默認的32位方式下進行16位尋址。672.3.3 操作數(shù)寬度和地址寬度的確定注意: (1)在實地址方式下,使用地址寬度

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

47、址方式和32位操作方式,并且包含全部浮點運算指令。 80486指令的操作數(shù)可以是03個,根據(jù)尋址方式不同,可直接包含在指令中,也可存于寄存器或存儲器中。 每條指令的長度因指令而異,最短1字節(jié),最長16字節(jié),平均3.2字節(jié)。 指令的操作數(shù)寬度可以是8位、16位、32位,尋址寬度可以是16位或32位。702.4.2 80486指令格式 80486和其他80X86系列CPU一樣,采用變字節(jié)的指令格式。指令由116字節(jié)組成,一般格式如下(由6個字段組成):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ù)傳送方向、寄存器編碼或符號擴展等1字節(jié)1字節(jié)寄存器/存儲器尋址方式說明符字段主尋址字節(jié),規(guī)定操作數(shù)的尋址方式,包括操作數(shù)的存放位置和存儲器中操作數(shù)EA的計算方法等比例-變址-基址字節(jié),為第二尋址字節(jié)位移量字段,屬存儲器地址的一部分。位移量足夠小時,通常采用帶符號的8位整數(shù),CPU自動將它擴展到16位或32位立即數(shù)字段8位立即數(shù)與16/32位操作數(shù)一起使用時,CPU自動將其擴展至符號相同的16/32位數(shù)。同理也可將16位立即數(shù)擴展至32位14字節(jié)12字節(jié)

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

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

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

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

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

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

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

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

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

58、S、LES、LFS、LGS、LSS)查表轉(zhuǎn)換指令(XLAT)壓棧/彈棧指令 (PUSH/PUSHA/PUSHAD/POP/POPA/POPAD))擴展傳送指令(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位存儲器SREG段寄存器IMM8/16/32位立即數(shù)912.4.3 80486的指令簡介通用寄存器(EAX、EBX、ECX

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

60、。立即數(shù)不能直接賦給段寄存器。錯。目的操作數(shù)長度不確定。 MOV DATA,1133H MOV CS,AX 依賴于DATA的定義錯。不能用傳送指令改變代碼段寄存器。 MOV AX,0100H+BX+BP錯。地址寄存器不能同為基址寄存器。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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論