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

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 微處理器和指令系統(tǒng)2.1 Intel系列微處理器概述2.2 8086/8088微處理器2.3 Pentium微處理器2.4 Pentium微處理器指令系統(tǒng)2-12.1.1 Intel 8086/8088 微處理器2.1.2 Intel 80486 微處理器2.1.3 Pentium 微處理器(80586)2.1.4 Pentium Pro 微處理器2.1.5 Pentium 微處理器2.1.6 Pentium 微處理器2.1.7 Pentium 4 微處理器2.1 Intel系列微處理器概述2-22.1.1 Intel 8086/8088 微處理器 8086是1978年推出的全16位微

2、處理器, 8088是1979年推出的準(zhǔn)16位微處理器。二者除外數(shù)據(jù)總線位數(shù)(8086為16位,8088為8位)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同(地址總線20位),指令系統(tǒng)完全兼容。 在8086/8088的設(shè)計(jì)中,引入了兩個(gè)重要的結(jié)構(gòu)概念: 指令流水線 存儲(chǔ)器分段 這兩個(gè)概念在以后升級(jí)的Intel系列微處理器中一直被沿用和發(fā)展。正是這兩個(gè)概念的引入,使8086/8088比原來的8位MPU在運(yùn)行速度、處理能力和對(duì)存儲(chǔ)空間的訪問等性能方面有很大提高。2-32.1.2 80486微處理器 1.內(nèi)部寄存器的容量都擴(kuò)充到了32位或以上,具有全32 位數(shù)據(jù)處理能力,并可進(jìn)行64位的數(shù)據(jù)

3、運(yùn)算。 2.片內(nèi)存儲(chǔ)管理部件可實(shí)現(xiàn)段頁式存儲(chǔ)管理,比80286可 提供更大的虛擬存儲(chǔ)空間和物理存儲(chǔ)空間。 3.新增了一種保護(hù)模式下的工作方式,即虛擬8086方式。 4.指令流水線增加到了6級(jí)。 5.提供了32位外部總線接口,最大數(shù)據(jù)傳輸速率顯著提 高。 80486是繼80386之后推出的第二代32位高性能微處理器,它以提高性能和面向多處理器系統(tǒng)為主要目標(biāo)。80486繼承了80386的各種優(yōu)點(diǎn),表現(xiàn)在以下幾方面:2-4 1.片內(nèi)集成了一個(gè)浮點(diǎn)運(yùn)算單元FPU 。 2.內(nèi)含一個(gè)8KB的數(shù)據(jù)與指令合用的Cache。 3.采用RISC技術(shù)。使芯片內(nèi)的不規(guī)則控制部分減少,同時(shí)常用基本指令采用硬件邏輯控制執(zhí)

4、行,使基本指令可以用一個(gè)時(shí)鐘周期完成。 4.采用一種突發(fā)總線(Burst Bus)的技術(shù)。使取得一個(gè)地址后,與該地址相關(guān)的一組數(shù)據(jù)可以連續(xù)輸入/輸出,有效地解決了微處理器同內(nèi)存儲(chǔ)器之間的數(shù)據(jù)交換問題。 5.面向多處理器結(jié)構(gòu),增加了支持多機(jī)操作的指令。 2.1.2 80486微處理器 除以上80386、80486共有的特點(diǎn)之外,80486也采用了許多新技術(shù): 2-52.1.3 Pentium微處理器(80586) 1.采用超標(biāo)量體系結(jié)構(gòu)。 2.內(nèi)置的浮點(diǎn)運(yùn)算部件采用超流水線技術(shù)。 3.增加了分支指令預(yù)測(cè)。 4.內(nèi)置了指令和數(shù)據(jù)兩個(gè)獨(dú)立的超高速緩存器,避免了預(yù)取指令和數(shù)據(jù)可能發(fā)生的沖突。 Pent

5、ium是一種高性能的32位微處理器。其對(duì)80486作了下列重大改進(jìn):2-6 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ǔ)器頁面管理。2.1.3 Pentium微處理器(80586)2-7精簡(jiǎn)指令集技術(shù)。二級(jí)緩沖結(jié)構(gòu)。亂序執(zhí)行和預(yù)測(cè)執(zhí)行技術(shù)。三級(jí)超標(biāo)量和14級(jí)超流水線結(jié)構(gòu)。寄存器重命名技術(shù) 2.1.4 Pentium Pro微處理器 簡(jiǎn)稱P6,中文名為“高能奔騰”。在體系結(jié)構(gòu)中采用了許多新的思想和新的技術(shù):2-82.1.5

6、 Pentium 微處理器 P6級(jí)微處理器的第二代產(chǎn)品,從系統(tǒng)結(jié)構(gòu)角度看,主要采用了以下幾種先進(jìn)技術(shù):采用了由三種創(chuàng)新處理技巧結(jié)合的動(dòng)態(tài)執(zhí)行技術(shù),即:多分支預(yù)測(cè)、數(shù)據(jù)流分析和推測(cè)執(zhí)行。雙重獨(dú)立總線技術(shù)(DIB, Dual Independent Bus) 多媒體增強(qiáng)技術(shù)(MMX技術(shù)) 采用單指令流多數(shù)據(jù)流SIMD技術(shù) 新增加了57條功能強(qiáng)大的MMX指令2-92.1.6 Pentium 微處理器 Pentium 是第三代P6級(jí)微處理器產(chǎn)品。與Pentium相比,有如下改進(jìn):前端總線的時(shí)鐘頻率為100MHz (采用0.18m新工藝的Pentium ,其前端總線達(dá)到133MHz)。將256KB的L2

7、 Cache集成到了芯片內(nèi)。增加了 70條流式單指令多數(shù)據(jù)擴(kuò)展SSE指令。首次設(shè)置了處理器序列號(hào)PSN。2-102.1.7 Pentium 4微處理器 1.采用了超級(jí)管道技術(shù),使用長(zhǎng)達(dá)20級(jí)的分支預(yù)測(cè)/恢復(fù)管道,而P6只有10級(jí)。 2.它的簡(jiǎn)單算術(shù)邏輯單元(ALU) 采用2倍的處理器核心頻率運(yùn)行。 3.動(dòng)態(tài)執(zhí)行技術(shù)中的指令池能容下126條指令。 4.內(nèi)含一個(gè)4KB的分支目標(biāo)緩沖。 5.增加了由144條新指令組成的SSE2。 它是第一個(gè)非P6核心結(jié)構(gòu)的全新32位微處理器,與P6級(jí)微處理器相比,主要結(jié)構(gòu)特點(diǎn)如下:2-112.2 Intel8086/8088微處理器內(nèi)部結(jié)構(gòu)指令流水線存儲(chǔ)器分段 80

8、86是全16位微處理器,8088是準(zhǔn)16位微處理器。二者除了外數(shù)據(jù)總線位數(shù)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同,指令系統(tǒng)完全兼容。 2-121.內(nèi)部結(jié)構(gòu)2.2 Intel 8086/8088微處理器20位ABEU控制電路總線控制電路通用寄存器累加器基址寄存器計(jì)數(shù)寄存器數(shù)據(jù)寄存器堆棧指針基址指針目的變址源變址指針寄存器變址寄存器 地址加法器運(yùn)算暫存器ALU標(biāo)志寄存器指令指針內(nèi)部暫存器指令隊(duì)列總線接口單元(BIU)執(zhí)行單元(EU)外部總線8086/8088DB8088:8位8086:16位CSDSSSESIP1 2 3 4 5 68位80888086AX AH ALBX BH B

9、LCX CH CLDX DH DL SPBPDISIALU DB16位段寄存器2-13 這種流水線操作并沒有減少每條指令的執(zhí)行步驟與時(shí)間,但由于各指令的不同步驟之間并行執(zhí)行,從而極大地提高了指令流(程序)的執(zhí)行速度。 流水線操作的優(yōu)點(diǎn):指令隊(duì)列的存在使EU和BIU并行工作,取指令和分析、執(zhí)行指令操作可重疊進(jìn)行,形成了兩級(jí)指令流水線結(jié)構(gòu),減少了CPU等待時(shí)間,提高了CPU的利用率,加快了整機(jī)運(yùn)行速度,降低了對(duì)存儲(chǔ)器存取速度的要求。2.指令流水線取指令1 取指令2 取數(shù)據(jù)1 取指令3 存結(jié)果1 取指令4 取指令5 等待 譯碼1 執(zhí)行1 譯碼2 執(zhí)行2 譯碼3 BIUEU 8086/8088的指令“

10、流水”操作2.2 Intel 8086/8088微處理器2-14 將1MB的物理存儲(chǔ)空間分成若干個(gè)邏輯段,每段大小為64KB。 64KB30000H(段基址) 段的起始單元地址叫段基址,存放在段寄存器中。通過4個(gè)段寄存器,CPU每次可同時(shí)對(duì)4個(gè)段進(jìn)行尋址。3.存儲(chǔ)器分段2.2 Intel 8086/8088微處理器內(nèi)存 00000H00001H00002H00003HFFFFFH2-15 分段方式不唯一,各段之間可以連續(xù)、分離、部分重疊或完全重疊,這主要取決于對(duì)各個(gè)段寄存器的預(yù)置內(nèi)容。2.2 Intel 8086/8088微處理器1000H2000H3100H3100H代碼段(64KB)堆棧段

11、(64KB)數(shù)據(jù)段與附加數(shù)據(jù)段重疊(64KB)CS10000H20000H31000HSSDSES1FFFFH2FFFFH40FFFH 存儲(chǔ)器分段結(jié)構(gòu)示例2-16 物理地址是1MB存儲(chǔ)空間中的某一單元地址,用20位地址碼表示,CPU訪問存儲(chǔ)器時(shí),地址總線上送出的就是物理地址。 邏輯地址在編程時(shí)采用,由段基址和偏移地址組成,兩者均為16位。內(nèi)存20000H20A00H0A00H物理地址20A00H邏輯地址2000 物理地址和邏輯地址2.2 Intel 8086/8088微處理器2-17邏輯地址與20位物理地址的變換關(guān)系: 物理地址=段基址16+偏移地址偏移地址段基址段基址 000020位物理地址

12、邏輯地址15 0 15 0 左移四位19 0地址加法器 邏輯地址與物理地址的變換2.2 Intel 8086/8088微處理器2-18 2.3 Pentium微處理器2.3.1 內(nèi)部結(jié)構(gòu)與外部引腳2.3.2 內(nèi)部寄存器2.3.3 Pentium的四種工作方式2-19 Pentium在結(jié)構(gòu)上由如下功能部件組成: 整數(shù)執(zhí)行單元 浮點(diǎn)單元 指令Cache和數(shù)據(jù)Cache 指令預(yù)取單元 指令譯碼單元 地址轉(zhuǎn)換與管理單元 總線接口單元 控制單元 這些功能部件除地址轉(zhuǎn)換與管理單元與80386/80486保持兼容外,其他都進(jìn)行了重新設(shè)計(jì)。 2.3.1 內(nèi)部結(jié)構(gòu)和外部引腳2-201. 內(nèi)部結(jié)構(gòu)地址轉(zhuǎn)換與存儲(chǔ)管

13、理單元APICDP邏輯控制ROM浮點(diǎn)單元8KB指令高速緩存TLB預(yù)取地址指令預(yù)取單元指令譯碼單元總線單元8KB數(shù)據(jù)高速緩存TLB控制單元地址生成U流水線地址生成V流水線整數(shù)寄存器組ALUU流水線ALUV流水線控制寄存器組加法除法乘法桶形移位器控制指令指針分支檢驗(yàn)與目標(biāo)地址32位地址總線323232326464位數(shù)據(jù)總線數(shù)據(jù)控制控制64位數(shù)據(jù)總線32位地址總線分支目標(biāo)緩沖器32323280802.2.1 內(nèi)部結(jié)構(gòu)和外部引腳1)總線接口單元 主要用于管理訪問外部存儲(chǔ)器和 I/O端口必須的地址、數(shù)據(jù)和控制總線,完成預(yù)取指令、讀/寫數(shù)據(jù)等總線操作。2) 整數(shù)執(zhí)行單元 由“U”和“V”兩條指令流水線構(gòu)成

14、超標(biāo)量流水線結(jié)構(gòu),其中每條流水線都有自己的ALU、 地址生成邏輯和Cache接口。3)預(yù)取緩沖單元 預(yù)取緩沖單元在總線接口單元空閑時(shí),負(fù)責(zé)提前去內(nèi)存或指令Cache預(yù)取指令。其指令預(yù)取緩沖器在前一條指令執(zhí)行結(jié)束之前可以預(yù)取多達(dá)94個(gè)字節(jié)的指令代碼。4)指令譯碼單元 將預(yù)取的指令譯成Pentium可以執(zhí)行的控制信號(hào)并送控制單元。對(duì)絕大多數(shù)指令來說,Pentium微處理器可以做到每個(gè)時(shí)鐘周期以并行方式完成兩條指令的譯碼操作。 5)控制單元 負(fù)責(zé)解釋來自指令譯碼單元的指令字和控制ROM的微代碼。控制部件的輸出直接控制兩條指令流水線和浮點(diǎn)單元。 6)地址轉(zhuǎn)換與存儲(chǔ)管理單元 Pentium的地址轉(zhuǎn)換與存

15、儲(chǔ)管理單元與80386/80486保持完全兼容,由分段和分頁部件組成。Pentium除繼續(xù)支持4KB大小的頁面外,還允許使用高達(dá)4MB的頁面,從而減少了頁面切換的頻率,并加快了某些應(yīng)用程序的執(zhí)行。 7)獨(dú)立的指令Cache和 數(shù)據(jù)Cache Pentium片內(nèi)有兩個(gè)8KB的超高速緩存器,一個(gè)是指令Cache,一個(gè)是數(shù)據(jù)Cache。指令和數(shù)據(jù)分別使用不同的Cache,使Pentium中數(shù)據(jù)和指令的存取減少了沖突,提高了性能。 8) 浮點(diǎn)運(yùn)算單元2-212. Pentium的外部引腳Inter Pentium CPU寫順序控制總線地址總線 CLK PRDY R/SHLDA IBT IV IU 模式

16、探針執(zhí)行跟蹤 TDITMS TRST RESET TCK TDO BUSCHKFRCMCSMI NMI IERR FREE IGNNESMIACT BREQHOLD BOFF INIT INTREWBEWB/WTFLUSHKENPWTPCDNA INVAPCHKPCHKPENW/RM/IOADSD/CSCYCLOCKCACHEBRDYAHOLDEADSHITHITMAP時(shí)鐘 初始化 中斷控制緩存高速內(nèi)部出錯(cuò)浮點(diǎn)錯(cuò)余檢測(cè)功能冗理模式系統(tǒng)管測(cè)試訪問期定義總線周總線仲裁總線周期錯(cuò)數(shù)據(jù)總線偶校驗(yàn)數(shù)據(jù)奇地址屏蔽偶校驗(yàn)地址奇斷點(diǎn)/性能檢測(cè)A31A3BE7BE0A20MD63D0DP7DP0BT3BT0BP

17、3BP2PM1/BP1PM0/BP02-22基本寄存器系統(tǒng)級(jí)寄存器調(diào)試和模型專用寄存器浮點(diǎn)寄存器Pentium的內(nèi)部寄存器,按功能可分為4類:2.3.2 Pentium內(nèi)部寄存器2-232.3.2 Pentium內(nèi)部寄存器標(biāo)志寄存器指令指針寄存器EFLAGSFLAGSEIPIP31 15 031 15 031 16 15 7 0通 用 寄 存 器EAX AH AX ALEBX BH BX BLECX CH CX CLEDX DH DX DLEDI DIESI SIEBP BPESP SP1. 基本寄存器選擇器CSSSDSESFSGS15 0 63 0描述符高速緩存器段 寄 存 器 EIP用于保

18、存下一條待預(yù)取指令相對(duì)于代碼基址的偏移量。它的低16位也可單獨(dú)訪問,稱之為IP。2-24 標(biāo)志寄存器位定義2.3.2 Pentium內(nèi)部寄存器CFEFLAGSFLAGS31 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 0ACVMRF0NTIOPLOFDFIFTFSFZF0AF0P 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表

19、示狀態(tài)標(biāo)志,X表示系統(tǒng)標(biāo)志,C表示控制標(biāo)志X 虛擬中斷標(biāo)志X ID標(biāo)志X 虛擬中斷掛起0 0 0 0 0 0 0 0 0 0VIFVIPID2-25選擇器描述符高速緩存器CSSSDSESFSGS15 0 63 0段寄存器 段寄存器Pentium有6個(gè)段寄存器:2.3.2 Pentium內(nèi)部寄存器CS-指明當(dāng)前的代碼段SS-指明當(dāng)前的堆棧段DSESFS GS決定程序使用存儲(chǔ)器區(qū)域塊指明當(dāng)前的4個(gè)數(shù)據(jù)段編程者可直接訪問的編程者不能訪問的 程序中(或系統(tǒng))裝入段選擇器的也不再是直接的段基址,而是一個(gè)指向某個(gè)段描述符的16位的段選擇符。2-26實(shí)地址方式和虛擬8086方式下相同,段的長(zhǎng)度固定為64KB

20、,段選擇器就是段寄存器,它保存的是邏輯段基址的高16位,將它的內(nèi)容左移4位即可得到實(shí)際段基址,而不必使用描述符高速緩存器。在保護(hù)虛地址方式下,段的長(zhǎng)度可以在1字節(jié)到4G字節(jié)之間變化;為了描述每個(gè)段的基址、屬性和邊界,為每個(gè)段定義了一個(gè)描述符。操作系統(tǒng)使用的和各任務(wù)公用的段描述符放在一起構(gòu)成全局描述符表GDT;某個(gè)任務(wù)專用的段描述符放在一起構(gòu)成局部描述符表LDT。Pentium段的定義與8086有所不同:2.3.2 Pentium內(nèi)部寄存器段 的 類 型存儲(chǔ)段:代碼段、數(shù)據(jù)段和堆棧段.系統(tǒng)段:局部描述符表(LDT)段和任務(wù)狀態(tài)段(TSS).門:調(diào)用門、中斷門、陷進(jìn)門和任務(wù)門 門是保護(hù)模式新增加的

21、。門并不是段,但是,由它可以通向一個(gè)程序的入口或一個(gè)任務(wù)的入口,而程序在存儲(chǔ)器中表現(xiàn)為代碼段,因此,門與代碼段有關(guān),也把它劃歸到系統(tǒng)段這一類。一、 32位微型計(jì)算機(jī)接口技術(shù)及應(yīng)用劉樂善華中科技大學(xué)出版社2006.12二、三 級(jí) 偏 硬 考 試 教 程 江正戰(zhàn)東南大學(xué)出版社2004.62-27 描述符與描述符表GDTLDT描述符0描述符1描述符0描述符1GDTRLDTR+0+1+2+3+4+5+6+7段邊界70位段邊界158位段基址70位段基址158位段基址2316位屬性段邊界4位段基址3124位屬性描述符格式2.3.2 Pentium內(nèi)部寄存器2-28 段的的選擇符 為了說明一個(gè)段的描述符在哪

22、個(gè)表中,表的序號(hào)是多少以及特權(quán)的高低,為每個(gè)段定義了一個(gè)16位的選擇符,存于段選擇器中,其格式為:描述符索引段描述符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í)2.3.2 Pentium內(nèi)部寄存器2-29 將一個(gè)選擇符裝入一個(gè)段選擇器時(shí),處理器將自動(dòng)從GDT或LDT中找到其對(duì)應(yīng)的描述符裝入相應(yīng)描述符高速緩存器中。2.3.2 Pentium內(nèi)部寄存器描述符64基址物理存儲(chǔ)器LDTDS數(shù)據(jù)段0040H界限15 3 2描述符高速緩存器DS選擇符63 0屬性裝

23、入DS段描述符TI=1指示LDT13位索引指向LDT的第64個(gè)段描述符1310 以后,每當(dāng)訪問存儲(chǔ)器時(shí),與所用段相關(guān)的段描述符高速緩沖器就自動(dòng)參與該次存儲(chǔ)器訪問操作。轉(zhuǎn)換關(guān)系: 線性地址 = 段描述符高速緩存器中段基址 + 偏移地址 圖2.11和2.152-30 Pentium微處理器中包含一組系統(tǒng)級(jí)寄存器:即5個(gè)控制寄存器CR0CR4和4個(gè)系統(tǒng)地址寄存器。這些寄存器只能由在特權(quán)級(jí) 0上運(yùn)行的程序(一般是操作系統(tǒng))訪問。 2.2.2 Pentium內(nèi)部寄存器 控制寄存器 Pentium在80486控制寄存器CR0CR3的基礎(chǔ)上新增了一個(gè)控制寄存器CR4,這些寄存器用來存放全局特性的機(jī)器狀態(tài)和實(shí)

24、現(xiàn)對(duì)80X86/ Pentium微處理器的多種功能的控制與選擇。 2.系統(tǒng)級(jí)寄存器2-31數(shù)字運(yùn)算錯(cuò)頁Fault線性地址保 留31 30 29 7 6 5 4 3 2 1 0頁管理 使能Cache不使能不通寫對(duì)準(zhǔn)標(biāo)志寫保護(hù)保護(hù)允許監(jiān)視FPU仿真FPU任務(wù)轉(zhuǎn)換FPU類型PGCDNW保留AMWP保留NEETTSEMMPPEVMEPVITSDPCDMCE0PWTPSEDE0 0 0 0 頁目錄基址2.3.2 Pentium內(nèi)部寄存器CR0CR4CR3CR2CR1 控制寄存器格式:2-32 系統(tǒng)地址寄存器2.3.2 Pentium的內(nèi)部寄存器系統(tǒng)地址寄存器 其中GDTR和LDTR分別用來存放GDT和L

25、DT的32位線性基地址等內(nèi)容;IDTR用來存放中斷描述符表的基址和界限;TR用來存放任務(wù)狀態(tài)段(TSS)的基址、界限和其他屬性。 只在保護(hù)方式下使用,所以又叫保護(hù)方式寄存器。用于把在保護(hù)方式下常用的數(shù)據(jù)基地址、界限和其他屬性保存起來,以確保其快速性。32位基地址16位界限GDTRIDTR16位選擇符32位基地址16位界限16位其他屬性LDTRTR2-33 Pentium處理器中提供了一組調(diào)試寄存器和一組模型專用寄存器,用于排除故障和用于執(zhí)行跟蹤、性能監(jiān)測(cè)、測(cè)試及機(jī)器檢查錯(cuò)誤。 2.3.2 Pentium的內(nèi)部寄存器31 0 線性斷點(diǎn)地址0線性斷點(diǎn)地址1線性斷點(diǎn)地址2線性斷點(diǎn)地址3DR6的別名D

26、R6的別名斷點(diǎn)狀態(tài)斷點(diǎn)控制調(diào)試寄存器DR0DR1DR2DR3DR4DR5DR6DR7 (1) 調(diào)試寄存器 調(diào)試寄存器如圖所示,這是一組32位的寄存器,是程序員可訪問的,提供片上支持調(diào)試。3.調(diào)試和模型專用寄存器2-34 Pentium處理器取消了80386/80486中的測(cè)試寄存器TR,其功能由一組“模型專用寄存器” MSR(Model Special Register)來實(shí)現(xiàn),這一組MSR用于執(zhí)行跟蹤、性能監(jiān)測(cè)、測(cè)試和機(jī)器檢查錯(cuò)誤。 Pentium處理器采用兩條指令RDMSR(讀MSR)和WRMSR(寫MSR)來訪問這些寄存器,ECX中的值(8位值)確定將訪問該組寄存器中哪一個(gè)MSR。 2.

27、3.2 Pentium的內(nèi)部寄存器(2) 模型專用寄存器2-352.3.3 Pentium的四種工作方式CPU復(fù)位RSM復(fù)位或RSMVM=0VM=1復(fù)位復(fù)位或PE=0使CR0的PE=1系統(tǒng)管理方式保護(hù)方式虛擬8086方式RSMSMI實(shí)地址方式SMISMI實(shí)地址方式實(shí)地址方式:工作原理與8086基本相同,主要區(qū)別是借助操作數(shù)長(zhǎng)度前綴能處理32位數(shù)據(jù),運(yùn)行速度也更高,且可使用4個(gè)數(shù)據(jù)段。保護(hù)方式保護(hù)方式:CPU可訪問的物理存儲(chǔ)空間為232= 4GB;程序可用的虛擬地址空間為246=64TB。段長(zhǎng)度在啟動(dòng)頁功能時(shí)是4GB,不啟動(dòng)頁功能時(shí)是1MB。可支持多用戶和單用戶的多任務(wù)操作,并對(duì)各任務(wù)提供了多方

28、面的保護(hù)機(jī)制。虛擬8086方式虛擬8086方式:既有保護(hù)功能又能執(zhí)行8086代碼的工作方式,是保護(hù)方式的一種子方式。CPU的工作原理與保護(hù)虛地址方式下相同,但程序指定的邏輯地址解釋與8086相同。系統(tǒng)管理方式系統(tǒng)管理方式:使設(shè)計(jì)者實(shí)現(xiàn)高級(jí)管理功能,如對(duì)電源的管理以及為操作系統(tǒng)和正在運(yùn)行的程序提供安全性。2-362.4 Pentium微處理器指令系統(tǒng)2.4.1 基本數(shù)據(jù)類型2.4.2 操作數(shù)尋址方式2.4.3 Pentium指令系統(tǒng)概貌2.4.4 數(shù)據(jù)傳送類指令2.4.5 算術(shù)運(yùn)算類指令2.4.6 邏輯運(yùn)算和移位指令2.4.7 串操作類指令2.4.8 控制轉(zhuǎn)移類指令2-37 Pentium在其內(nèi)

29、部定點(diǎn)處理單元CPU和浮點(diǎn)處理單元FPU的支持下,共可處理7類數(shù)據(jù):1. 無符號(hào)二進(jìn)制數(shù)2. 帶符號(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ù)2.4.1 基本數(shù)據(jù)類型2-382.4.1 基本數(shù)據(jù)類型 這類數(shù)不帶任何符號(hào)信息,只含有量值域,僅CPU支持。分為三類: 字節(jié): 字: 雙字: 任何邏輯地址上的8位相鄰位串。任何字節(jié)地址開始的2個(gè)相鄰字節(jié)。低字節(jié)地址為該字地址。任何字節(jié)地址開始的2個(gè)相鄰字,即4個(gè)相鄰字節(jié)。最小字節(jié)地址為雙字的地址。1.無符號(hào)二進(jìn)制數(shù)(序數(shù))2-39 這類數(shù)均以補(bǔ)碼表示,有8位數(shù)(字節(jié))、16位數(shù)(字)、32位數(shù)(雙字)、

30、64位數(shù)(4字)四種。CPU支持前3種,F(xiàn)PU支持后3種。2.4.1 基本數(shù)據(jù)類型2.帶符號(hào)的二進(jìn)制定點(diǎn)整數(shù)(整數(shù))2-402.4.1 基本數(shù)據(jù)類型 這類數(shù)由FPU支持,有單精度、雙精度和擴(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 03.浮點(diǎn)數(shù)(實(shí)數(shù))2-41 BCD碼數(shù)有壓縮BCD碼數(shù)和非壓縮BCD碼數(shù)兩種。 CPU兩種數(shù)都支持;FPU只支持壓縮BCD碼數(shù),且最大長(zhǎng)度為80位,最多可處理20位BCD碼數(shù)。2.4.1 基本數(shù)據(jù)類型5.串

31、數(shù)據(jù) 這類數(shù)據(jù)僅CPU支持。包括: 位串: 字節(jié)/字/雙字串:是從任何字節(jié)的任何位開始的相鄰位的序列,最長(zhǎng)可達(dá)232-1位。是字節(jié)/字/雙字的相鄰序列,最長(zhǎng)可達(dá)232-1字節(jié)。4.BCD碼數(shù)2-422.4.1 基本數(shù)據(jù)類型包括ASCII碼字符串和ASCII碼數(shù)(0F)兩種。7.指針數(shù)據(jù)包括近指針和遠(yuǎn)指針兩種: 近指針即32位指針,是一個(gè)32位的段內(nèi)偏移量,段內(nèi)尋址用。 遠(yuǎn)指針即48位指針,由16位選擇符和32位偏移量組成,用于跨段訪問。6.ASCII碼數(shù)據(jù)2-43關(guān)于數(shù)據(jù)類型的兩點(diǎn)說明: (1)在上述各類型數(shù)據(jù)中,基本的數(shù)據(jù)類型仍是字節(jié)、字和雙字。一般應(yīng)盡可能將字操作對(duì)準(zhǔn)于偶地址,將雙字操作對(duì)

32、準(zhǔn)于4的整數(shù)倍地址。但也允許不對(duì)準(zhǔn)操作,以便在數(shù)據(jù)結(jié)構(gòu)的處理上和存儲(chǔ)器的有效利用上給系統(tǒng)設(shè)計(jì)人員和用戶提供最大的靈活性。不過,對(duì)準(zhǔn)和不對(duì)準(zhǔn)獲得的數(shù)據(jù)傳遞速度不一樣:對(duì)準(zhǔn)的字和雙字可一次傳遞完,而未對(duì)準(zhǔn)的字和雙字需幾次才能傳遞完。 (2)對(duì)于字和雙字?jǐn)?shù)據(jù),80X86是采用低端低地址方式來存儲(chǔ)的。即字?jǐn)?shù)據(jù)被存儲(chǔ)在兩個(gè)相鄰的字節(jié)單元之中,低位字節(jié)在低地址單元,高位字節(jié)在高地址單元;雙字?jǐn)?shù)據(jù)存儲(chǔ)在四個(gè)連續(xù)字節(jié)單元中,最低位字節(jié)在最低地址單元,最高字節(jié)在最高地址單元。而字或雙字?jǐn)?shù)據(jù)的地址是指最低位字節(jié)所在的單元地址。2.4.1 基本數(shù)據(jù)類型2-442.4.2 操作數(shù)尋址方式1. 尋址方式和有效地址概念2

33、. 11種尋址方式3. 存儲(chǔ)器尋址時(shí)的段約定4. 應(yīng)用舉例2-452.4.2 尋址方式 尋址方式就是尋找指令中操作數(shù)地址的方式。操作數(shù)所在地址有三種可能: 直接包含在指令中,即指令的操作數(shù)部分就是操作 數(shù)本身。這種操作數(shù)叫立即數(shù),對(duì)應(yīng)的指令尋址方 式稱為立即數(shù)尋址。包含在CPU 的某個(gè)內(nèi)部寄存器中。這時(shí)指令中的操 作數(shù)部分是CPU的一個(gè)寄存器,這種指令尋址方式稱 為寄存器尋址。在內(nèi)存儲(chǔ)器中。這時(shí)指令的操作數(shù)部分包含著該操 作數(shù)所在的內(nèi)存地址。這種指令尋址方式稱為存儲(chǔ) 器尋址。1.尋址方式和有效地址概念 尋址方式2-46 在Pentium系列MPU中,內(nèi)存實(shí)際地址(PA)由段基地址和段內(nèi)偏移地址

34、兩部分組成。 為了適應(yīng)處理各種數(shù)據(jù)結(jié)構(gòu)的需要,段內(nèi)偏移地址可由以下幾部分組合而成: 基址寄存器內(nèi)容 變址寄存器內(nèi)容 比例因子 位移量 這四個(gè)基本部分稱為偏移地址四元素,一般又將由這四種元素組合形成的偏移地址稱為有效地址EA。EA=基址+(變址比例因子)+位移量 有效地址EA2.4.2 尋址方式2-47有效地址元素16位尋址32位尋址基址寄存器 BX,BP 任何32位通用寄存器變址寄存器 SI,DI 除ESP外的任何32位通用寄存器比例因子 無(或1) 1,2,4,8位移量 0,8,16位 0,8,32位2.4.2 尋址方式16位和32位尋址時(shí)的四元素定義2-48 保護(hù)方式下的尋址過程(地址轉(zhuǎn)換

35、過程)2.4.2 尋址方式有效地址計(jì)算變址位移基址比例因子+32位有效地址31 0BE7BE0A31A332 位32 位13位描述符變址段寄存器選擇符TIRPL15 3 2 1 0分段部件線性地址物理存儲(chǔ)器分頁部件(可選)物理地址邏輯地址(虛擬)(CS,DS,ES,SS, FS,GS)不分頁2-492.4.2 尋址方式 偏移地址四元素可優(yōu)化組合出9種存儲(chǔ)器尋址方式,加上立即數(shù)尋址和寄存器尋址,Pentium共有11種尋址方式:(1) 立即數(shù)尋址(2) 寄存器尋址(3) 直接尋址(4) 寄存器間接尋址(5) 基址尋址(6) 變址尋址(7) 比例變址尋址(8) 基址加變址尋址(9) 基址加比例變址

36、尋址(10)帶位移的基址加變址尋址(11)帶位移的基址加比例變址尋址2. 11種尋址方式2-502.4.2 尋址方式 在這種尋址方式下,操作數(shù)作為立即數(shù)直接存在指令中,可為8位、16位或32位。例:MOV AX,4567HMOV BL,78HMOV ECX,12345678H 以第3條指令為例,給出了立即數(shù)尋址方式的執(zhí)行過程的動(dòng)畫演示。(1)立即數(shù)尋址2-512.4.2 尋址方式 在這種方式下,操作數(shù)包含在指令規(guī)定的8位、16位或32位寄存器中。例:MOV EAX,EDXINC CLMOV DS,AX 這種尋址方式指令編碼短,無需從存儲(chǔ)器取操作數(shù),故執(zhí)行速度快。(2)寄存器尋址(寄存器直接尋址

37、)2-522.4.2 尋址方式 在這種方式下,指令中的操作數(shù)部分直接給出操作數(shù)有效地址EA,它和操作碼一起放在存儲(chǔ)器代碼段中,可以是16位或32位整數(shù)。但操作數(shù)一般在數(shù)據(jù)段DS中。例: MOV AX,DS:3000H 將DS段中3000H和3OO1H單元的內(nèi)容送到AX中。假設(shè)DS=5000H,則此指令是將物理地址為53000H單元的內(nèi)容送到AL寄存器,將53001H單元的內(nèi)容送到AH寄存器,詳情請(qǐng)看直接尋址方式的執(zhí)行過程的動(dòng)畫演示。(3)直接尋址(存儲(chǔ)器直接尋址)2-532.4.2 尋址方式 實(shí)際中對(duì)于直接尋址,如操作數(shù)在DS段中,則可直接寫成:MOV AX,3000H 如操作數(shù)在DS之外的其

38、他段(CS,SS,ES,FS,GS)中,指令中則必須用段寄存器名前綴(稱為段超越前綴)予以指明。例如:MOV AX,FS:3000H 直接尋址主要用于單個(gè)操作數(shù)的相對(duì)尋址場(chǎng)合(如簡(jiǎn)單的標(biāo)量操作數(shù)尋址和靜態(tài)分配數(shù)組的起始地址尋址等)。2-542.4.2 尋址方式 在這種方式下,操作數(shù)放在存儲(chǔ)器中,但其有效地址EA放在寄存器中,即: EA=寄存器 寄存器的使用規(guī)定在16位尋址和32位尋址時(shí)不一樣。(4)寄存器間接尋址2-552.4.2 尋址方式 16位尋址時(shí),偏移地址放在SI、DI、BP或BX中。這時(shí)又有兩種段默認(rèn)情況:若以SI、DI、BX間接尋址,則默認(rèn)操作數(shù)在DS段中。 例如: MOV AX,

39、SI ;默認(rèn)DS為段基址若以BP間接尋址,則默認(rèn)操作數(shù)在SS段中。 例如: MOV AX,BP ;默認(rèn)SS為段基址 動(dòng)畫演示 如果操作數(shù)不在上述規(guī)定的默認(rèn)段,而是在其他段,則必須在指令中相應(yīng)的操作數(shù)前加上段超越前綴。例如:MOV AX,ES:SIMOV AX,DS:BP2-562.4.2 尋址方式 32位尋址時(shí),8個(gè)32位通用寄存器均可作寄存器間接尋址。 例如:MOV EBX,EAX ;默認(rèn)DS為段基址,傳送雙字給EBXMOV DX,EBX ;默認(rèn)DS為段基址,傳送字給DXMOV CH,EAX ;默認(rèn)DS為段基址,傳送字節(jié)給CH 除ESP、EBP默認(rèn)段寄存器為SS外,其余6個(gè)通用寄存器均默認(rèn)段

40、寄存器為DS。如操作數(shù)在默認(rèn)段之外,指令中必須加段超越前綴。 寄存器間接尋址的應(yīng)用場(chǎng)合與直接尋址的應(yīng)用場(chǎng)合相似,當(dāng)更靈活。2-572.4.2 尋址方式 在這種方式下, EA=基址寄存器+位移量。 其中位移量一定要為常數(shù),且跟隨在操作碼之后,與操作碼一起存放在代碼段中。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位。例如: 動(dòng)畫演示MOV EA

41、X,BX+24 ;也可寫成MOV EAX,24BXMOV ECX,EBP+50 ;也可寫成MOV ECX,50EBPMOV DX,EAX+1500H;也可寫成MOV DX,1500HEAX(5)基址尋址2-582.4.2 尋址方式 在這種方式下, EA=變址寄存器+位移量 指令書寫格式和尋址執(zhí)行過程與基址尋址相同,區(qū)別僅在于將基址寄存器改成變址寄存器。(6)變址尋址2-592.4.2 尋址方式 16位尋址時(shí),僅SI、DI可作變址寄存器,且默認(rèn)DS作為段基址寄存器。如:MOV AX,COUNTSI 32位尋址時(shí),除ESP外的任何通用寄存器均可作變址寄存器,且默認(rèn)EBP以SS作段基址寄存器,其余均

42、以DS作段基址寄存器。 如:MOV EAX,5EBPMOV ECX,DATAEAX 基址、變址尋址適于對(duì)一維數(shù)組的數(shù)組元素進(jìn)行檢索操作。位移量表示數(shù)組起始地址偏移量;基址/變址表示數(shù)組元素的下標(biāo),可變。2-602.4.2 尋址方式在這種方式下:EA=變址寄存器比例因子+位移量這種尋址方式只適于32位尋址一種情況。例如:MOV EAX,TABLEESI*4 ;TABLE是位移量,4是比例因子 比例變址尋址和基址/變址尋址的作用相似,也適用于對(duì)一維數(shù)組元素的檢索。但當(dāng)數(shù)組元素大小為2/4/8字節(jié)時(shí),用它更方便、更高效。比例變址尋址方式的執(zhí)行過程的動(dòng)畫演示。(7)比例變址尋址2-612.4.2 尋址

43、方式在這種尋址方式下,EA=基址寄存器+變址寄存器例如:MOV AX,BX+SI ;或?qū)懗蒑OV AX,BXSI 動(dòng)畫演示 它有16位尋址和32位尋址兩種情況,每種情況下基址、變址寄存器的使用規(guī)定和段寄存器的默認(rèn)規(guī)定與前面所述相同,但一種尋址方式中既有基址寄存器又有變址寄存器,而兩個(gè)寄存器默認(rèn)的段寄存器又不相同時(shí),一般規(guī)定由基址寄存器來決定默認(rèn)哪一個(gè)段寄存器作段基址指針。 基址加變址尋址主要用于二維數(shù)組元素的檢索和二重循環(huán)等。(8)基址加變址尋址2-622.4.2 尋址方式在這種方式下,EA=變址寄存器比例因子+基址寄存器它只有32位尋址一種情況。格式舉例:MOV ECX,EDX*8EAX ;

44、或MOV ECX,EDX*8+EAXMOV AX,EBX*4ESI ;或MOV AX,EBX*4+ESI 這種方式主要用于數(shù)組元素大小為2/4/8字節(jié)時(shí)的二維數(shù)組檢索操作等場(chǎng)合。(9)基址加比例變址尋址2-632.4.2 尋址方式在這種方式下:EA=變址寄存器+基址寄存器+位移量 這種方式也分16位尋址和32位尋址兩種情況。變址、基址寄存器的使用約定和對(duì)段寄存器的默認(rèn)約定與前面所述相同。格式舉例:MOV AX,BX+DI+MASK 或 MOVAX,MASKBXDIADD EDX,ESIEBP+0FFFF000H 或ADD EDX,0FFFF000HESIEBP 以第1條指令為例,給出了帶位移的

45、基址加變址尋址方式的執(zhí)行過程的動(dòng)畫演示。 這種尋址方式也是主要用于二維數(shù)組操作,位移量即為數(shù)組起始地址。(10)帶位移的基址加變址尋址2-642.4.2 尋址方式這種方式將偏移地址四元素都用上了,即: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ù)組檢索操作。(11)帶位移的基址加比例變址尋址2-652.4.2 尋址方式3.存儲(chǔ)器尋址時(shí)的段約定訪存操作類型 默認(rèn)段寄存器 允許

46、超越的段寄存器 偏移地址寄存器堆棧操作 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 偏移地址SSCS、DS、ES、FS、GS偏移地址以(E)BP、(E)SP間接尋址的指令2-664.應(yīng)用舉例 CPUBX 0100HSI 0002HDS 3000H30100H 12H30101H 34H30102H 56H30103H 78H31200H 2AH31201H 4CH31202H B7H31203H 65HM 例2.1 已知80486工作在實(shí)地址

47、方式下,其中一些寄存器的內(nèi)容和一些存儲(chǔ)單元的內(nèi)容如圖所示,試指出下列各條指令執(zhí)行后,AX中的內(nèi)容。 MOV AX,2010H MOV AX,BX MOV AX,1200H MOV AX,BX MOV AX,1100HBX MOV AX,BXSI MOV AX,1100HBX+SI LEA AX,SI2.4.2 尋址方式2-672.4.2 尋址方式 例2.2 假定80486工作在實(shí)模式下,已知:(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,變量TABLE的偏移地址為0100H。請(qǐng)指出下列指令的源操作數(shù)字段是什么尋址方式?它的有效地址

48、(EA)和物理地址(PA)分別是多少? MOV AX,1234H MOV AX,TABLE MOV AX,BX+100H MOV AX,TABLEBPSI2-68 Pentium的指令系統(tǒng)是在80X86系列指令系統(tǒng)的基礎(chǔ)上逐步發(fā)展而形成的,在代碼級(jí)具有向上兼容性。它增加了指令的種類,增強(qiáng)了一些指令的功能,提供了32位尋址方式和32位操作方式,并且包含全部浮點(diǎn)運(yùn)算指令。 Pentium指令的操作數(shù)可以是03個(gè),根據(jù)尋址方式不同,可直接包含在指令中,也可存于寄存器或存儲(chǔ)器中。每條指令的長(zhǎng)度因指令而異,平均指令長(zhǎng)度為3.2字節(jié)。指令的操作數(shù)寬度可以是8位、16位、32位,尋址寬度可以是16位或32位

49、。 Pentium指令系統(tǒng)的突出特點(diǎn)是:功能強(qiáng)、靈活性高,給編譯程序和匯編語言程序的設(shè)計(jì)人提供了很寬的選擇余地。2.4.3 Pentium指令系統(tǒng)概貌 2-691. 指令格式2.4.3 Pentium指令系統(tǒng)概貌字段1字段2字段3mod r/m字段4s-i-b字段5displ字段6data1字節(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/

50、32位操作數(shù)一起使用時(shí),CPU自動(dòng)將其擴(kuò)展至符號(hào)相同的16/32位數(shù)。同理也可將16位立即數(shù)擴(kuò)展至32位14字節(jié)12字節(jié)前綴Prefix操作碼OP code0,1,2,4字節(jié)0,1,2,4字節(jié)規(guī)定指令的操作性質(zhì),包括操作數(shù)類型、操作數(shù)傳送方向、寄存器編碼或符號(hào)擴(kuò)展等用于修改指令操作的某些屬性,有5類前綴:段超越前綴操作數(shù)寬度 前綴地址寬度前 綴重復(fù)前綴總線鎖定前 綴2-70Pentium指令系統(tǒng)分為:整數(shù)指令-最常用部分浮點(diǎn)數(shù)指令操作系統(tǒng)型指令2. 指令分類2.4.3 Pentium指令系統(tǒng)概貌2-71數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最常用、最重要的一類操作。如:這類指令尋址方式最豐富,除POPF外

51、,均不影響標(biāo)志寄存器的標(biāo)志位。在實(shí)際程序中,它的使用頻率最高。 各種初始化操作 取操作數(shù) 保存結(jié)果2.4.4 數(shù)據(jù)傳送類指令2-72通用數(shù)據(jù)傳送指令。如數(shù)據(jù)傳送指令(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類指令等。標(biāo)志寄存器傳送指令2.4.4 數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送指令主要包括:2-731. 傳送指令MOV指令操作:(源操作數(shù))目的操作數(shù) 指令格式:MOV 目的操作數(shù),源

52、操作數(shù)尋址規(guī)定: REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMMIMM8/16/32位立即數(shù)REG8/16/32位通用寄存器MEM8/16/32位存儲(chǔ)器SREG段寄存器2.4.4 數(shù)據(jù)傳送類指令 2-74立即數(shù)通用寄存器(EAX、EBX、ECX、EDX、 EBP、ESP、ESI、EDI)CS存儲(chǔ)器段寄存器(SS、DS、ES、FS、GS)MOV指令允許的傳送關(guān)系2.3.4 數(shù)據(jù)傳送類指令 2-75 MOV指令使用說明:源操作數(shù)和目的操作數(shù)的類型必須一致。目的操作數(shù)不能為立即數(shù)。CS和(E)IP均不能用作指令的目的寄存器。段寄存器

53、間不能直接傳送,也不能直接將立即數(shù)送給段寄存器。源操作數(shù)為立即數(shù),而目的操作數(shù)類型不確定時(shí),要給目的操作數(shù)加類型說明。源操作數(shù)和目的操作數(shù)不能同為存儲(chǔ)器操作數(shù)。2.4.4 數(shù)據(jù)傳送類指令 目的操作數(shù), 源操作數(shù) REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM2-76 MOV DS,100 MOV 1000H,23H錯(cuò)。源、目的操作數(shù)不能同為存儲(chǔ)器尋址。 MOV 1000H,2000H錯(cuò)。立即數(shù)不能直接賦給段寄存器。錯(cuò)。目的操作數(shù)長(zhǎng)度不確定。 MOV DATA,1133H MOV CS,AX 依賴于DATA的定義錯(cuò)。不能用傳送指

54、令改變代碼段寄存器。 MOV AX,0100H+BX+BP錯(cuò)。地址寄存器不能同為基址寄存器。 例2.3 識(shí)別下列指令的正確性,對(duì)錯(cuò)誤的指令,說明錯(cuò)誤的原因。MOV AX,100MOV DS,AXMOV WORD PTR 1000H,23HMOV AX,2000HMOV 1000H,AX2.3.4 數(shù)據(jù)傳送類指令 2-772. 交換指令操作: (目的操作數(shù)) (源操作數(shù))格式:XCHG 目的操作數(shù),源操作數(shù)REG/MEM, REG REG, MEM說明: 基本用法同MOV指令; 當(dāng)源或目的操作數(shù)為MEM操作數(shù)時(shí),會(huì)自動(dòng) 激活LOCK信號(hào),該特性常用于多機(jī)、多任務(wù) 或多用戶系統(tǒng)中的臨界段(共享資源

55、)訪問。2.4.4 數(shù)據(jù)傳送類指令 2-78 例2.4 臨界段訪問(測(cè)試與置位操作)TEST_SET:MOV AL,0FFH XCHG AL,SEMAPHORE ;讀信號(hào)燈并置位 AND AL,AL ;產(chǎn)生條件碼 JNZ TEST_SET ;忙時(shí)等待 (臨界段程序) MOV AL,0 MOV SEMAPHORE,AL ;清信號(hào)燈2.4.4 數(shù)據(jù)傳送類指令 2-79說明: XLAT是一條隱含尋址的指令。隱含兩個(gè)操作數(shù):DS:(E)BX存放表基址,AL存放查表參數(shù)。使用前要給隱含操作數(shù)賦初值。3. 查表指令 格式: XLAT 操作: (EBX)+(AL)AL (BX)+(AL)AL2.4.4 數(shù)據(jù)

56、傳送類指令 2-80 例2.5 內(nèi)存中自TABLE開始的16個(gè)單元連續(xù)存放著自然數(shù)0到15的平方值(構(gòu)成一個(gè)平方表),任給一整數(shù)M在XX單元中(該數(shù)為0M15),查表求M的平方值,并將結(jié)果存入YY單元中。解:LEA BX,TABLEMOV AL,XX XLAT MOV YY,ALTABLE 0+1 1+2 4+3 9+15 225XX 52.4.4 數(shù)據(jù)傳送類指令 2-814. 堆棧指令PUSH/POP格式:PUSH 源操作數(shù)REG16/MEM16/IMM16REG32/MEM32/IMM32操作: (E)SP)-2/4(E)SP (源操作數(shù))(SS:(E)SP)(1) 壓棧指令2.4.4 數(shù)

57、據(jù)傳送類指令 2-82格式:POP 目的操作數(shù) MEM16/MEM32/REG16/REG32操作:(SS:(E)SP)目的操作數(shù) (E)SP)+ 2/4(E)SP(2) 彈棧指令2.4.4 數(shù)據(jù)傳送類指令 2-83堆棧指令的操作數(shù)只能為字或雙字。PUSH和POP要成對(duì)出現(xiàn),以保持堆棧平衡堆棧指令也隱含了一個(gè)目的/源操作數(shù)堆棧。壓棧順序是先壓高字節(jié)后壓低字節(jié),彈棧則是先彈低字節(jié)后彈高字節(jié)。(3)堆棧指令使用說明:2.4.4 數(shù)據(jù)傳送類指令 2-84 例2.6 用堆棧操作指令將BX和CX中的兩個(gè)16位數(shù)(其中BX是高16位)組成32位數(shù)傳送到EAX寄存器中。 PUSH BX ;先壓高16位PUS

58、H CX ;后壓低16位 POP EAX解:2.4.4 數(shù)據(jù)傳送類指令 2-85說明:I/O端口有兩種尋址方式 直接尋址,尋址范圍為0255; 間接尋址,尋址范圍為0216-1。(1) 輸入指令 格式:IN 累加器, 端口 AL/AX/EAX,IMM8 AL/AX/EAX,DX 操作: AL/AX/EAX(I/O端口)直接尋址: 指令給出的立即數(shù)是I/O端口地址間接尋址:DX寄存器給出的是I/O端口地址5. I/O指令2.4.4 數(shù)據(jù)傳送類指令 2-86(2) 輸出指令格式:OUT 端口, 累加器 IMM8, AL/AX/EAX DX , AL/AX/EAX操作:(AL/AX/EAX)I/O端

59、口2.4.4 數(shù)據(jù)傳送類指令 2-87 T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS 例2.7 設(shè)程序在數(shù)據(jù)段中定義的數(shù)組如下: NAMES DB TOM. DB 20 DB ROSE DB 30 DB KATE. DB 25 請(qǐng)指出下列指令是否正確,如正確,A累加器中的結(jié)果是多少?6. 傳送指令應(yīng)用舉例2.4.4 數(shù)據(jù)傳送類指令 2-881. MOV BX, OFFSET NAMES MOV AL,BX+5(AL)=NAMES+5=202. MOV AX, NAMES 錯(cuò),

60、源與目的操作數(shù)類型不一致3. MOV AX, WORD PTR NAMES+1 (AX)=NAMES+1=MO=4D4FH4. MOV BX,6 MOV SI,5 MOV AX,NAMESBXSI前兩條指令正確,第三條錯(cuò),源與目的操作數(shù)類型不一致 T+1 O+2 M+3 .+4 .+5 20+6 R+7 O+8 S+9 E+10 30+11 K+12 A+13 T+14 E+15 .+16 25NAMESDS2.4.4 數(shù)據(jù)傳送類指令 2-895. MOV BX, 6*2 MOV SI,5 MOV AX,OFFSET NAMESBXSI INC AX6. MOV BX, 6 MOV SI,5

溫馨提示

  • 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)論