已閱讀5頁(yè),還剩168頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2-1,第二章 微處理器和指令系統(tǒng),重點(diǎn): 1.Intel系列微處理器的演變歷史; 2.Pentium的內(nèi)部基本寄存器功能及應(yīng)用; 3.操作數(shù)尋址方式; 4.通用整數(shù)指令,2-2,第二章 微處理器和指令系統(tǒng),2.1 Intel系列微處理器概述 2.2 8086/8088微處理器 2.3 Pentium微處理器 2.4 Pentium微處理器指令系統(tǒng),2-3,2.1.1 8086/8088 微處理器 2.1.2 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-4,2.1.1 8086/8088 微處理器,8086是1978年推出的全16位微處理器, 8088是1978年推出的準(zhǔn)16位微處理器。二者除外數(shù)據(jù)總線位數(shù)(8086為16位,8088為8位)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同,指令系統(tǒng)完全兼容。,在8086/8088的設(shè)計(jì)中,引入了兩個(gè)重要的結(jié)構(gòu)概念: 指令流水線 存儲(chǔ)器分段,這兩個(gè)概念在以后升級(jí)的Intel系列微處理器中一直被沿用和發(fā)展。正是這兩個(gè)概念的引入,使8086/8088比原來(lái)的8位MPU在運(yùn)行速度、處理能力和對(duì)存儲(chǔ)空間的訪問(wèn)等性能方面有很大提高。,2-5,2.1.2 80486微處理器,1.內(nèi)部寄存器的容量都擴(kuò)充到了32位或以上,具有全32 位數(shù)據(jù)處理能力,并可進(jìn)行64位的數(shù)據(jù)運(yùn)算。 2.片內(nèi)存儲(chǔ)管理部件可實(shí)現(xiàn)段頁(yè)式存儲(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-6,2.1.2 80486微處理器,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í)行,使基本指令可以用一個(gè)時(shí)鐘周期完成。 4.采用一種突發(fā)總線(Burst Bus)的技術(shù)。使取得一個(gè)地址后,與該地址相關(guān)的一組數(shù)據(jù)可以連續(xù)輸入/輸出,有效地解決了微處理器同內(nèi)存儲(chǔ)器之間的數(shù)據(jù)交換問(wèn)題。 5.面向多處理器結(jié)構(gòu),增加了支持多機(jī)操作的指令。,除以上80386、80486共有的特點(diǎn)之外,80486也采用了許多新技術(shù):,2-7,2.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ā)生的沖突。,Pentium是一種高性能的32位微處理器。其對(duì)80486作了下列重大改進(jìn):,2-8,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ǔ)器頁(yè)面管理。,2.1.3 Pentium微處理器(80586),2-9,精簡(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)稱(chēng)P6,中文名為“高能奔騰”。在體系結(jié)構(gòu)中采用了許多新的思想和新的技術(shù):,2-10,2.1.5 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-11,2.1.6 Pentium 微處理器,Pentium 是第三代P6級(jí)微處理器產(chǎn)品。與Pentium相比,有如下改進(jìn):,前端總線的時(shí)鐘頻率為100MHz (采用0.18m新工藝的Pentium ,其前端總線達(dá)到133MHz)。,將256KB的L2 Cache集成到了芯片內(nèi)。 增加了 70條流式單指令多數(shù)據(jù)擴(kuò)展SSE指令。 首次設(shè)置了處理器序列號(hào)PSN。,2-12,2.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-13,2.2 8086/8088微處理器,內(nèi)部結(jié)構(gòu) 指令流水線 存儲(chǔ)器分段,8086是全16位微處理器,8088是準(zhǔn)16位微處理器。二者除了外數(shù)據(jù)總線位數(shù)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同,指令系統(tǒng)完全兼容。,2-14,1.內(nèi)部結(jié)構(gòu),2.2 8086/8088微處理器,2-15,EU( Execution Unit),2-16,(2)功能,BIU(Bus Interface Unit),完成所有外部總線的操作,提供總線控制信號(hào)。 具體地完成:取指、指令排隊(duì)、讀寫(xiě)操作數(shù)、地址轉(zhuǎn)換(將兩個(gè)16位地址相加 20位物理地址),總線控制。,2-17,(3)指令隊(duì)列,BIU使用指令隊(duì)列實(shí)現(xiàn)流水線操作。 當(dāng)指令隊(duì)列中有2個(gè)或2個(gè)(1個(gè))以上的字節(jié)空間,且EU未申請(qǐng)讀寫(xiě)存儲(chǔ)器,則BIU順序預(yù)取后續(xù)指令代碼 Queue。,2-18,EU的工作過(guò)程,2-19,2.指令流水線,指令隊(duì)列的存在使EU和BIU并行工作,取指令和分析、執(zhí)行指令操作可重疊進(jìn)行,形成了兩級(jí)指令流水線結(jié)構(gòu),減少了CPU等待時(shí)間,提高了CPU的利用率,加快了整機(jī)運(yùn)行速度,降低了對(duì)存儲(chǔ)器存取速度的要求。,2.2 8086/8088微處理器,2-20,2-21,將1MB的物理存儲(chǔ)空間分成若干個(gè)邏輯段,每段大小為64KB。,段的起始單元地址叫段基址,存放在段寄存器中。通過(guò)4個(gè)段寄存器,CPU每次可同時(shí)對(duì)4個(gè)段進(jìn)行尋址。,3.存儲(chǔ)器分段,2.2 8086/8088微處理器,2-22,分段方式不唯一,各段之間可以連續(xù)、分離、部分重疊或完全重疊,這主要取決于對(duì)各個(gè)段寄存器的預(yù)置內(nèi)容。,2.2 8086/8088微處理器, 存儲(chǔ)器分段結(jié)構(gòu)示例,2-23,物理地址是1MB存儲(chǔ)空間中的某一單元地址,用20位地址碼表示,CPU訪問(wèn)存儲(chǔ)器時(shí),地址總線上送出的就是物理地址。 邏輯地址在編程時(shí)采用,由段基址和偏移地址組成,兩者均為16位。, 物理地址和邏輯地址,2.2 8086/8088微處理器,2-24,邏輯地址與20位物理地址的變換關(guān)系: 物理地址=段基址16+偏移地址, 邏輯地址與物理地址的變換,2.2 8086/8088微處理器,2-25,例:已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,DS段有一操作數(shù),其偏移地址=0204H, 1)畫(huà)出各段在內(nèi)存中的分布 2)指出各段首地址 3)該操作數(shù)的物理地址=?,解:各段在內(nèi)存中的分布右圖所示。 操作數(shù)的物理地址為: 250AH10H+0204H = 252A4H,2-26,2.3 Pentium微處理器,2.3.1 內(nèi)部結(jié)構(gòu)與外部引腳 2.3.2 內(nèi)部寄存器 2.3.3 Pentium的四種工作方式,2-27,Pentium在結(jié)構(gòu)上由如下功能部件組成: 整數(shù)執(zhí)行單元 浮點(diǎn)單元 指令Cache和數(shù)據(jù)Cache 指令預(yù)取單元 指令譯碼單元 地址轉(zhuǎn)換與管理單元 總線接口單元 控制單元(核心,又叫運(yùn)算器) 這些功能部件除地址轉(zhuǎn)換與管理單元與80386/80486保持兼容外,其他都進(jìn)行了重新設(shè)計(jì)。,2.3.1 內(nèi)部結(jié)構(gòu)和外部引腳,2-28,1. 內(nèi)部結(jié)構(gòu),2.2.1 內(nèi)部結(jié)構(gòu)和外部引腳,1)總線接口單元 主要用于管理訪問(wèn)外部存儲(chǔ)器和 I/O端口必須的地址、數(shù)據(jù)和控制總線,完成預(yù)取指令、讀/寫(xiě)數(shù)據(jù)等總線操作。,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ù)指令來(lái)說(shuō),Pentium微處理器可以做到每個(gè)時(shí)鐘周期以并行方式完成兩條指令的譯碼操作。,5)控制單元 負(fù)責(zé)解釋來(lái)自指令譯碼單元的指令字和控制ROM的微代碼??刂撇考妮敵鲋苯涌刂苾蓷l指令流水線和浮點(diǎn)單元。,6)地址轉(zhuǎn)換與存儲(chǔ)管理單元 Pentium的地址轉(zhuǎn)換與存儲(chǔ)管理單元與80386/80486保持完全兼容,由分段和分頁(yè)部件組成。Pentium除繼續(xù)支持4KB大小的頁(yè)面外,還允許使用高達(dá)4MB的頁(yè)面,從而減少了頁(yè)面切換的頻率,并加快了某些應(yīng)用程序的執(zhí)行。,8) 浮點(diǎn)運(yùn)算單元,2-29,2. Pentium的外部引腳,2-30,2-31,2-32,Pentium微處理器總線周期,2-33,基本寄存器 系統(tǒng)級(jí)寄存器 調(diào)試和模型專(zhuān)用寄存器 浮點(diǎn)寄存器,Pentium的內(nèi)部寄存器,按功能可分為4類(lèi):,2.3.2 Pentium內(nèi)部寄存器,2-34,2.3.2 Pentium內(nèi)部寄存器,1. 基本寄存器,EIP用于保存下一條待預(yù)取指令相對(duì)于代碼基址的偏移量。它的低16位也可單獨(dú)訪問(wèn),稱(chēng)之為IP。,2-35, 標(biāo)志寄存器位定義,2.3.2 Pentium內(nèi)部寄存器,2-36,在調(diào)試程序時(shí),DEBUG提供了測(cè)試標(biāo)志位的手段, 用符號(hào)表示標(biāo)志位的值,每種標(biāo)志位的符號(hào)如右表,2-37,標(biāo)志: 運(yùn)算結(jié)果最高位為0 SF=0 運(yùn)算結(jié)果0 ZF=0 低8位中1的個(gè)數(shù)為奇數(shù)個(gè) PF=0 最高位有進(jìn)位 CF=1 第三位向第四位無(wú)進(jìn)位 AF=0 次高位向最高位沒(méi)有進(jìn)位 ,最高位向前進(jìn)位 , OF=1,例:執(zhí)行兩個(gè)數(shù)的加法,分析對(duì)標(biāo)志位的影響。,2-38, 段寄存器,Pentium有6個(gè)段寄存器:,2.3.2 Pentium內(nèi)部寄存器,編程者可直接訪問(wèn)的,編程者不能訪問(wèn)的,2-39,實(shí)地址方式和虛擬8086方式下相同,段的長(zhǎng)度固定為64KB,段選擇器就是段寄存器,它保存的是邏輯段基址的高16位,將它的內(nèi)容左移4位即可得到實(shí)際段基址,而不必使用描述符高速緩存器。,在保護(hù)虛地址方式下,段的長(zhǎng)度可以在1字節(jié)到4G字節(jié)之間變化;為了描述每個(gè)段的基址、屬性和邊界,為每個(gè)段定義了一個(gè)描述符。操作系統(tǒng)使用的各任務(wù)公用的段描述符放在一起構(gòu)成全局描述符表GDT;某個(gè)任務(wù)專(zhuān)用的段描述符放在一起構(gòu)成局部描述符表LDT。,Pentium段的定義與8086有所不同:,2.3.2 Pentium內(nèi)部寄存器,2-40, 描述符與描述符表,2.3.2 Pentium內(nèi)部寄存器,2-41, 段的的選擇符,為了說(shuō)明一個(gè)段的描述符在哪個(gè)表中,表的序號(hào)是多少以及特權(quán)的高低,為每個(gè)段定義了一個(gè)16位的選擇符,存于段選擇器中,其格式為:,2.3.2 Pentium內(nèi)部寄存器,2-42,將一個(gè)選擇符裝入一個(gè)段選擇器時(shí),處理器將自動(dòng)從GDT或LDT中找到其對(duì)應(yīng)的描述符裝入相應(yīng)描述符高速緩存器中。,2.3.2 Pentium內(nèi)部寄存器,以后,每當(dāng)訪問(wèn)存儲(chǔ)器時(shí),與所用段相關(guān)的段描述符高速緩沖器就自動(dòng)參與該次存儲(chǔ)器訪問(wèn)操作。轉(zhuǎn)換關(guān)系: 線性地址 = 段描述符高速緩存器中段基址 + 偏移地址,2-43,例題 有一個(gè)描述符表存放在全局描述符表的第63個(gè)表項(xiàng)中,訪問(wèn)該描述符的請(qǐng)求特權(quán)級(jí)為2,請(qǐng)寫(xiě)出該描述符的選擇符。 已知段描述符中有基址=56780000H,界限=10,G=1。求該描述符定義的存儲(chǔ)段的線性地址范圍。,2-44,例:假設(shè)虛擬地址為0100:00000200H,禁止分頁(yè)。如果描述符中讀出的段基址為00030000H,那么操作數(shù)的物理地址是什么?,解:將此虛擬地址轉(zhuǎn)換成物理地址為,基地址+偏移量,=00030000H+00002000H,=00032000H,2-45,Pentium微處理器中包含一組系統(tǒng)級(jí)寄存器:即5個(gè)控制寄存器CR0CR4和4個(gè)系統(tǒng)地址寄存器。這些寄存器只能由在特權(quán)級(jí) 0上運(yùn)行的程序(一般是操作系統(tǒng))訪問(wèn)。,2.2.2 Pentium內(nèi)部寄存器, 控制寄存器,Pentium在80486控制寄存器CR0CR3的基礎(chǔ)上新增了一個(gè)控制寄存器CR4,這些寄存器用來(lái)存放全局特性的機(jī)器狀態(tài)和實(shí)現(xiàn)對(duì)80X86/ Pentium微處理器的多種功能的控制與選擇。,2.系統(tǒng)級(jí)寄存器,2-46,2.3.2 Pentium內(nèi)部寄存器,CR0,CR4,CR3,CR2,CR1, 控制寄存器格式:,2-47, 系統(tǒng)地址寄存器,2.3.2 Pentium的內(nèi)部寄存器,系統(tǒng)地址寄存器,其中GDTR和LDTR分別用來(lái)存放GDT和LDT的32位線性基地址等內(nèi)容;IDTR用來(lái)存放中斷描述符表的基址和界限;TR用來(lái)存放任務(wù)狀態(tài)段(TSS)的基址、界限和其他屬性。,只在保護(hù)方式下使用,所以又叫保護(hù)方式寄存器。用于把在保護(hù)方式下常用的數(shù)據(jù)基地址、界限和其他屬性保存起來(lái),以確保其快速性。,2-48,圖2.14 GDTR與它定義的全局描述符表,2-49,例:(GDTR)=001000000FFFH,求GDT在物理存儲(chǔ)器中的起始地址,結(jié)束地址, 表的大小,表中可以存放多少個(gè)描述符?,解:GDT的起始地址為: 00100000H 結(jié)束地址為: 00100000H+0FFFH=00100FFFH 表的大小為: 0FFFH+1=4096字節(jié) 表中可以存放4096/8=512個(gè)描述符,2-50,2-51,圖2.15 LDTR和它定義的局部描述符表,2-52,例:設(shè)LDT的基址為00120000H,GDT的基址為 00100000H, (CS)=1007H,那么: 請(qǐng)求的特權(quán)級(jí)是多少? 段描述符位于GDT還是LDT中? 段描述符的地址是什么?,2-53,解:(CS)=1007H=0001 0000 0000 0111B, RPL=3,申請(qǐng)的特權(quán)級(jí)為3,TI=1,描述符位于LDT中,描述符相對(duì)于LDT基址的偏移量,段描述符的地址為0,0001000000000B8=512 8=4096=1000H,00120000H+1000H=00121000H,2-54,2-55,圖2.16 任務(wù)寄存器和任務(wù)切換機(jī)制,2-56,Pentium處理器中提供了一組調(diào)試寄存器和一組模型專(zhuān)用寄存器,用于排除故障和用于執(zhí)行跟蹤、性能監(jiān)測(cè)、測(cè)試及機(jī)器檢查錯(cuò)誤。,2.3.2 Pentium的內(nèi)部寄存器,3.調(diào)試和模型專(zhuān)用寄存器,2-57,Pentium處理器取消了80386/80486中的測(cè)試寄存器TR,其功能由一組“模型專(zhuān)用寄存器” MSR(Model Special Register)來(lái)實(shí)現(xiàn),這一組MSR用于執(zhí)行跟蹤、性能監(jiān)測(cè)、測(cè)試和機(jī)器檢查錯(cuò)誤。 Pentium處理器采用兩條指令RDMSR(讀MSR)和WRMSR(寫(xiě)MSR)來(lái)訪問(wèn)這些寄存器,ECX中的值(8位值)確定將訪問(wèn)該組寄存器中哪一個(gè)MSR。,2.3.2 Pentium的內(nèi)部寄存器,(2) 模型專(zhuān)用寄存器,2-58,2.3.3 Pentium的四種工作方式,2-59,2.4 Pentium微處理器指令系統(tǒng),2.4.1 基本數(shù)據(jù)類(lèi)型 2.4.2 操作數(shù)尋址方式 2.4.3 Pentium指令系統(tǒng)概貌 2.4.4 數(shù)據(jù)傳送類(lèi)指令 2.4.5 算術(shù)運(yùn)算類(lèi)指令 2.4.6 邏輯運(yùn)算和移位指令 2.4.7 串操作類(lèi)指令 2.4.8 控制轉(zhuǎn)移類(lèi)指令,2-60,Pentium在其內(nèi)部定點(diǎn)處理單元CPU和浮點(diǎn)處理單元FPU的支持下,共可處理7類(lèi)數(shù)據(jù):,1. 無(wú)符號(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ù)類(lèi)型,2-61,2.4.1 基本數(shù)據(jù)類(lèi)型,這類(lèi)數(shù)不帶任何符號(hào)信息,只含有量值域,僅CPU支持。分為三類(lèi):, 字節(jié): 字: 雙字:,任何邏輯地址上的8位相鄰位串。,任何字節(jié)地址開(kāi)始的2個(gè)相鄰字節(jié)。低字節(jié)地址為該字地址。,任何字節(jié)地址開(kāi)始的2個(gè)相鄰字,即4個(gè)相鄰字節(jié)。最小字節(jié)地址為雙字的地址。,1.無(wú)符號(hào)二進(jìn)制數(shù)(序數(shù)),2-62,這類(lèi)數(shù)均以補(bǔ)碼表示,有8位數(shù)(字節(jié))、16位數(shù)(字)、32位數(shù)(雙字)、64位數(shù)(4字)四種。,CPU支持前3種,F(xiàn)PU支持后3種。,2.4.1 基本數(shù)據(jù)類(lèi)型,2.帶符號(hào)的二進(jìn)制定點(diǎn)整數(shù)(整數(shù)),2-63,2.4.1 基本數(shù)據(jù)類(lèi)型,這類(lèi)數(shù)由FPU支持,有單精度、雙精度和擴(kuò)展精度三種形式:, 單精度數(shù), 雙精度數(shù), 擴(kuò)展精度數(shù),3.浮點(diǎn)數(shù)(實(shí)數(shù)),2-64,BCD碼數(shù)有壓縮BCD碼數(shù)和非壓縮BCD碼數(shù)兩種。 CPU兩種數(shù)都支持;FPU只支持壓縮BCD碼數(shù),且最大長(zhǎng)度為80位,最多可處理20位BCD碼數(shù)。,2.4.1 基本數(shù)據(jù)類(lèi)型,5.串?dāng)?shù)據(jù),這類(lèi)數(shù)據(jù)僅CPU支持。包括: 位串: 字節(jié)/字/雙字串:,是從任何字節(jié)的任何位開(kāi)始的相鄰位的序列,最長(zhǎng)可達(dá)232-1位。,是字節(jié)/字/雙字的相鄰序列,最長(zhǎng)可達(dá)232-1字節(jié)。,4.BCD碼數(shù),2-65,2.4.1 基本數(shù)據(jù)類(lèi)型,包括ASCII碼字符串和ASCII碼數(shù)(0F)兩種。,7.指針數(shù)據(jù),包括近指針和遠(yuǎn)指針兩種:,近指針即32位指針,是一個(gè)32位的段內(nèi)偏移量,段內(nèi)尋址用。 遠(yuǎn)指針即48位指針,由16位選擇符和32位偏移量組成,用于跨段訪問(wèn)。,6.ASCII碼數(shù)據(jù),2-66,關(guān)于數(shù)據(jù)類(lèi)型的兩點(diǎn)說(shuō)明:,(1)在上述各類(lèi)型數(shù)據(jù)中,基本的數(shù)據(jù)類(lèi)型仍是字節(jié)、字和雙字。一般應(yīng)盡可能將字操作對(duì)準(zhǔn)于偶地址,將雙字操作對(duì)準(zhǔn)于4的整數(shù)倍地址。但也允許不對(duì)準(zhǔn)操作,以便在數(shù)據(jù)結(jié)構(gòu)的處理上和存儲(chǔ)器的有效利用上給系統(tǒng)設(shè)計(jì)人員和用戶提供最大的靈活性。不過(guò),對(duì)準(zhǔn)和不對(duì)準(zhǔn)獲得的數(shù)據(jù)傳遞速度不一樣:對(duì)準(zhǔn)的字和雙字可一次傳遞完,而未對(duì)準(zhǔn)的字和雙字需幾次才能傳遞完。 (2)對(duì)于字和雙字?jǐn)?shù)據(jù),80X86是采用低端低地址方式來(lái)存儲(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ù)類(lèi)型,2-67,2.4.2 操作數(shù)尋址方式,1. 尋址方式和有效地址概念 2. 11種尋址方式 3. 存儲(chǔ)器尋址時(shí)的段約定 4. 應(yīng)用舉例,2-68,2.4.2 尋址方式,尋址方式就是尋找指令中操作數(shù)地址的方式。操作數(shù)所在地址有三種可能:,直接包含在指令中,即指令的操作數(shù)部分就是操作 數(shù)本身。這種操作數(shù)叫立即數(shù),對(duì)應(yīng)的指令尋址方 式稱(chēng)為立即數(shù)尋址。,包含在CPU 的某個(gè)內(nèi)部寄存器中。這時(shí)指令中的操 作數(shù)部分是CPU的一個(gè)寄存器,這種指令尋址方式稱(chēng) 為寄存器尋址。,在內(nèi)存儲(chǔ)器中。這時(shí)指令的操作數(shù)部分包含著該操 作數(shù)所在的內(nèi)存地址。這種指令尋址方式稱(chēng)為存儲(chǔ) 器尋址。,1.尋址方式和有效地址概念, 尋址方式,2-69,在Pentium系列MPU中,內(nèi)存實(shí)際地址(PA)由段基地址和段內(nèi)偏移地址兩部分組成。 段內(nèi)偏移地址可由以下幾部分組合而成:,基址寄存器內(nèi)容 變址寄存器內(nèi)容 比例因子 位移量,這四個(gè)基本部分稱(chēng)為偏移地址四元素,一般又將由這四種元素組合形成的偏移地址稱(chēng)為有效地址EA。,EA=基址+(變址比例因子)+位移量, 有效地址EA,2.4.2 尋址方式,2-70,2.4.2 尋址方式,16位和32位尋址時(shí)的四元素定義,2-71, 保護(hù)方式下的尋址過(guò)程(地址轉(zhuǎn)換過(guò)程),2.4.2 尋址方式,2-72,2.4.2 尋址方式,偏移地址四元素可優(yōu)化組合出9種存儲(chǔ)器尋址方式,加上立即數(shù)尋址和寄存器尋址,Pentium共有11種尋址方式:,(1) 立即數(shù)尋址 (2) 寄存器尋址 (3) 直接尋址 (4) 寄存器間接尋址 (5) 基址尋址,(6) 變址尋址 (7) 比例變址尋址 (8) 基址加變址尋址 (9) 基址加比例變址尋址 (10)帶位移的基址加變址尋址 (11)帶位移的基址加比例變址尋址,2. 11種尋址方式,2-73,2.4.2 尋址方式,在這種尋址方式下,操作數(shù)作為立即數(shù)直接存在指令中,可為8位、16位或32位。,MOV AX,4567H MOV BL,78H MOV ECX,12345678H,(1)立即數(shù)尋址,動(dòng)畫(huà)演示,2-74,2.4.2 尋址方式,在這種方式下,操作數(shù)包含在指令規(guī)定的8位、16位或32位寄存器中。,這種尋址方式指令編碼短,無(wú)需從存儲(chǔ)器取操作數(shù),故執(zhí)行速度快。,(2)寄存器尋址(寄存器直接尋址),2-75,2.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寄存器,直接尋址方式的執(zhí)行過(guò)程動(dòng)畫(huà)演示。,(3)直接尋址(存儲(chǔ)器直接尋址),2-76,2.4.2 尋址方式,實(shí)際中對(duì)于直接尋址,如操作數(shù)在DS段中,則可直接寫(xiě)成:,MOV AX,3000H,如操作數(shù)在DS之外的其他段(CS,SS,ES,FS,GS)中,指令中則必須用段寄存器名前綴(稱(chēng)為段超越前綴)予以指明。,MOV AX,FS:3000H,直接尋址主要用于單個(gè)操作數(shù)的相對(duì)尋址場(chǎng)合(如簡(jiǎn)單的標(biāo)量操作數(shù)尋址和靜態(tài)分配數(shù)組的起始地址尋址等)。,2-77,2.4.2 尋址方式,在這種方式下,操作數(shù)放在存儲(chǔ)器中,但其有效地址EA放在寄存器中,即: EA=寄存器 寄存器的使用規(guī)定在16位尋址和32位尋址時(shí)不一樣。,(4)寄存器間接尋址,2-78,2.4.2 尋址方式,若以SI、DI、BX間接尋址,則默認(rèn)操作數(shù)在DS段中。 MOV AX,SI ;默認(rèn)DS為段基址 若以BP間接尋址,則默認(rèn)操作數(shù)在SS段中。 MOV AX,BP ;默認(rèn)SS為段基址 動(dòng)畫(huà)演示,如果操作數(shù)不在上述規(guī)定的默認(rèn)段,而是在其他段,則必須在指令中相應(yīng)的操作數(shù)前加上段超越前綴。,MOV AX,ES:SI MOV AX,DS:BP, 16位尋址時(shí),偏移地址放在SI、DI、BP或BX中。兩種段默認(rèn)情況:,2-79,2.4.2 尋址方式,MOV EBX,EAX ;默認(rèn)DS為段基址,傳送雙字給EBX MOV DX,EBX ;默認(rèn)DS為段基址,傳送字給DX MOV CH,EAX ;默認(rèn)DS為段基址,傳送字節(jié)給CH,除ESP、EBP默認(rèn)段寄存器為SS外,其余6個(gè)通用寄存器均默認(rèn)段寄存器為DS。如操作數(shù)在默認(rèn)段之外,指令中必須加段超越前綴。,寄存器間接尋址的應(yīng)用場(chǎng)合與直接尋址的應(yīng)用場(chǎng)合相似,但更靈活。,32位尋址時(shí),8個(gè)32位通用寄存器均可作寄存器間接尋址。,2-80,2.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位。,MOV EAX,BX+24 ;也可寫(xiě)成MOV EAX,24BX MOV ECX,EBP+50 ;也可寫(xiě)成MOV ECX,50EBP MOV DX,EAX+1500H;也可寫(xiě)成MOV DX,1500HEAX,(5)基址尋址,2-81,2.4.2 尋址方式,EA=變址寄存器+位移量 指令書(shū)寫(xiě)格式和尋址執(zhí)行過(guò)程與基址尋址相同,區(qū)別僅在于將基址寄存器改成變址寄存器。,(6)變址尋址,2-82,2.4.2 尋址方式,MOV AX,COUNTSI,MOV EAX,5EBP MOV ECX,DATAEAX,基址、變址尋址適于對(duì)一維數(shù)組的數(shù)組元素進(jìn)行檢索操作。位移量表示數(shù)組起始地址偏移量;基址/變址表示數(shù)組元素的下標(biāo),可變。, 16位尋址時(shí),僅SI、DI可作變址寄存器,且默認(rèn)DS作為段基址寄存器。, 32位尋址時(shí),除ESP外的任何通用寄存器均可作變址寄存器,且默認(rèn)EBP以SS作段基址寄存器,其余均以DS作段基址寄存器。,2-83,2.4.2 尋址方式,EA=變址寄存器比例因子+位移量,這種尋址方式只適于32位尋址一種情況。,MOV EAX,TABLEESI*4 ;TABLE是位移量,4是比例因子,比例變址尋址和基址/變址尋址的作用相似,也適用于對(duì)一維數(shù)組元素的檢索。但當(dāng)數(shù)組元素大小為2/4/8字節(jié)時(shí),用它更方便、更高效。,(7)比例變址尋址,2-84,2.4.2 尋址方式,EA=基址寄存器+變址寄存器,MOV AX,BX+SI ;或?qū)懗蒑OV AX,BXSI 動(dòng)畫(huà)演示,它有16位尋址和32位尋址兩種情況,每種情況下基址、變址寄存器的使用規(guī)定和段寄存器的默認(rèn)規(guī)定與前面所述相同,但一種尋址方式中既有基址寄存器又有變址寄存器,而兩個(gè)寄存器默認(rèn)的段寄存器又不相同時(shí),一般規(guī)定由基址寄存器來(lái)決定默認(rèn)哪一個(gè)段寄存器作段基址指針。,基址加變址尋址主要用于二維數(shù)組元素的檢索和二重循環(huán)等。,(8)基址加變址尋址,2-85,2.4.2 尋址方式,EA=變址寄存器比例因子+基址寄存器,它只有32位尋址一種情況。,MOV ECX,EDX*8EAX ;或MOV ECX,EDX*8+EAX MOV AX,EBX*4ESI ;或MOV AX,EBX*4+ESI,這種方式主要用于數(shù)組元素大小為2/4/8字節(jié)時(shí)的二維數(shù)組檢索操作等場(chǎng)合。,(9)基址加比例變址尋址,2-86,2.4.2 尋址方式,在這種方式下:,EA=變址寄存器+基址寄存器+位移量,這種方式也分16位尋址和32位尋址兩種情況。變址、基址寄存器的使用約定和對(duì)段寄存器的默認(rèn)約定與前面所述相同。,MOV AX,BX+DI+MASK 或 MOVAX,MASKBXDI ADD EDX,ESIEBP+0FFFF000H 或 ADD EDX,0FFFF000HESIEBP,這種尋址方式也是主要用于二維數(shù)組操作,位移量即為數(shù)組起始地址。,(10)帶位移的基址加變址尋址,動(dòng)畫(huà)演示,2-87,2.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-88,2.4.2 尋址方式,3.存儲(chǔ)器尋址時(shí)的段約定,2-89,4.應(yīng)用舉例,例2.1 已知Pentium工作在實(shí)地址方式下,其中一些寄存器的內(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,SI,2.4.2 尋址方式,2-90,2.4.2 尋址方式,例2.2 假定Pentium工作在實(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,TABLEBPSI,2-91,Pentium的指令系統(tǒng)是在80X86系列指令系統(tǒng)的基礎(chǔ)上逐步發(fā)展而形成的,在代碼級(jí)具有向上兼容性。它增加了指令的種類(lèi),增強(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位。 Pentium指令系統(tǒng)的突出特點(diǎn)是:功能強(qiáng)、靈活性高,給編譯程序和匯編語(yǔ)言程序的設(shè)計(jì)人提供了很寬的選擇余地。,2.4.3 Pentium指令系統(tǒng)概貌,2-92,1. 指令格式,2.4.3 Pentium指令系統(tǒng)概貌,2-93,Pentium指令系統(tǒng)分為:,整數(shù)指令-最常用部分 浮點(diǎn)數(shù)指令 操作系統(tǒng)型指令,2. 指令分類(lèi),2.4.3 Pentium指令系統(tǒng)概貌,2-94,數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最常用、最重要的一類(lèi)操作。如:,這類(lèi)指令尋址方式最豐富,除POPF外,均不影響標(biāo)志寄存器的標(biāo)志位。,在實(shí)際程序中,它的使用頻率最高。, 各種初始化操作 取操作數(shù) 保存結(jié)果,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-95,通用數(shù)據(jù)傳送指令。如數(shù)據(jù)傳送指令(MOV)、裝入有效地址指令(LEA) 、段裝入指令、交換類(lèi)指令(XCHG和BSWAP)、查表轉(zhuǎn)換指令(XLAT)等。 堆棧指令。如PUSH類(lèi)/POP類(lèi)指令等。 數(shù)據(jù)類(lèi)型變換指令。如數(shù)據(jù)寬度變換指令,帶符號(hào)數(shù)符號(hào)位擴(kuò)展/無(wú)符號(hào)數(shù)位擴(kuò)展指令等。 I/O指令。如IN類(lèi)/OUT類(lèi)指令等。 標(biāo)志寄存器傳送指令,2.4.4 數(shù)據(jù)傳送類(lèi)指令,數(shù)據(jù)傳送指令主要包括:,2-96,1. 傳送指令MOV,指令操作:(源操作數(shù))目的操作數(shù),指令格式:MOV 目的操作數(shù),源操作數(shù),尋址規(guī)定: REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-97,2.3.4 數(shù)據(jù)傳送類(lèi)指令,2-98,MOV指令使用說(shuō)明:,源操作數(shù)和目的操作數(shù)的類(lèi)型必須一致。 目的操作數(shù)不能為立即數(shù)。 CS和(E)IP均不能用作指令的目的寄存器。 段寄存器間不能直接傳送,也不能直接將立即數(shù)送給段寄存器。 源操作數(shù)為立即數(shù),而目的操作數(shù)類(lèi)型不確定時(shí),要給目的操作數(shù)加類(lèi)型說(shuō)明。,源操作數(shù)和目的操作數(shù)不能同為存儲(chǔ)器操作數(shù)。,2.4.4 數(shù)據(jù)傳送類(lèi)指令,目的操作數(shù), 源操作數(shù) REG/MEM/SREG,REG REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM,2-99, MOV DS,100, MOV 1000H,23H,錯(cuò)。源、目的操作數(shù)不能同為存儲(chǔ)器尋址。, MOV 1000H,2000H,錯(cuò)。立即數(shù)不能直接賦給段寄存器。,錯(cuò)。目的操作數(shù)長(zhǎng)度不確定。, MOV DATA,1133H, MOV CS,AX,依賴(lài)于DATA的定義,錯(cuò)。不能用傳送指令改變代碼段寄存器。, MOV AX,0100H+BX+BP,錯(cuò)。地址寄存器不能同為基址寄存器。,例2.3 識(shí)別下列指令的正確性,對(duì)錯(cuò)誤的指令,說(shuō)明錯(cuò)誤的原因。,MOV AX,100 MOV DS,AX,MOV WORD PTR 1000H,23H,MOV AX,2000H MOV 1000H,AX,2.3.4 數(shù)據(jù)傳送類(lèi)指令,2-100,2. 交換指令,操作: (目的操作數(shù)) (源操作數(shù)),格式:XCHG 目的操作數(shù),源操作數(shù) REG/MEM, REG REG, MEM,說(shuō)明: 基本用法同MOV指令; 當(dāng)源或目的操作數(shù)為MEM操作數(shù)時(shí),會(huì)自動(dòng) 激活LOCK信號(hào),該特性常用于多機(jī)、多任務(wù) 或多用戶系統(tǒng)中的臨界段(共享資源)訪問(wèn)。,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-101,例2.4 臨界段訪問(wèn)(測(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ù)傳送類(lèi)指令,2-102,說(shuō)明: XLAT是一條隱含尋址的指令。隱含兩個(gè)操作數(shù):DS:(E)BX存放表基址,AL存放查表參數(shù)。使用前要給隱含操作數(shù)賦初值。,3. 查表指令,格式: XLAT 操作: (EBX)+(AL)AL (BX)+(AL)AL,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-103,例2.5 內(nèi)存中自TABLE開(kāi)始的16個(gè)單元連續(xù)存放著自然數(shù)0到15的平方值(構(gòu)成一個(gè)平方表),任給一整數(shù)M在XX單元中(該數(shù)為0M15),查表求M的平方值,并將結(jié)果存入YY單元中。,解: LEA BX,TABLE MOV AL,XX XLAT MOV YY,AL,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-104,4. 堆棧指令PUSH/POP,格式:PUSH 源操作數(shù) REG16/MEM16/IMM16/SREG REG32/MEM32/IMM32/SREG 操作: (E)SP)-2/4(E)SP (源操作數(shù))(SS:(E)SP),(1) 壓棧指令,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-105,格式:POP 目的操作數(shù) MEM16/MEM32/REG16/REG32/SREG 操作:(SS:(E)SP)目的操作數(shù) (E)SP)+ 2/4(E)SP,(2) 彈棧指令,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-106,堆棧指令的操作數(shù)只能為字或雙字。 PUSH和POP要成對(duì)出現(xiàn),以保持堆棧平衡 堆棧指令也隱含了一個(gè)目的/源操作數(shù)堆棧。 壓棧順序是先壓高字節(jié)后壓低字節(jié),彈棧則是先彈低字節(jié)后彈高字節(jié)。,(3)堆棧指令使用說(shuō)明:,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-107,例2.6 用堆棧操作指令將BX和CX中的兩個(gè)16位數(shù)(其中BX是高16位)組成32位數(shù)傳送到EAX寄存器中。,PUSH BX ;先壓高16位 PUSH CX ;后壓低16位 POP EAX,解:,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-108,說(shuō)明: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ù)傳送類(lèi)指令,2-109,(2) 輸出指令,格式:OUT 端口,累加器 IMM8, AL/AX/EAX DX , AL/AX/EAX 操作:(AL/AX/EAX)I/O端口,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-110,例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ù)傳送類(lèi)指令,2-111,1. MOV BX, OFFSET NAMES MOV AL,BX+5,(AL)=NAMES+5=20,2. MOV AX, NAMES,錯(cuò),源與目的操作數(shù)類(lèi)型不一致,3. MOV AX, WORD PTR NAMES+1,(AX)=NAMES+1=MO=4D4FH,4. MOV BX,6 MOV SI,5 MOV AX,NAMESBXSI,前兩條指令正確,第三條錯(cuò),源與目的操作數(shù)類(lèi)型不一致,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-112,5. MOV BX, 6*2 MOV SI,5 MOV AX,OFFSET NAMESBXSI INC AX,6. MOV BX, 6 MOV SI,5 LEA DI,NAMESBXSI MOV AL,DI,(DI)=NAMES偏移地址+(BX)+(SI) =NAMES偏移地址+11 (AL)=NAMES+11=K=4BH,前兩條指令正確,第三條錯(cuò),OFFSET只能取直接變量的偏移地址;第四條錯(cuò),非法尋址。,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-113,例2.8 80486工作在實(shí)地址方式時(shí),(DS)=091DH,(BX)=0024H,有關(guān)存儲(chǔ)器的內(nèi)容如圖所示。求指令LES DI,32HBX執(zhí)行后的結(jié)果。,LES DI,32HBX,2.4.4 數(shù)據(jù)傳送類(lèi)指令,2-114,這類(lèi)指令支持加、減、乘、除四種基本算術(shù)運(yùn)算,其操作對(duì)象可以是字節(jié)、字、雙字的無(wú)符號(hào)和有符號(hào)的二進(jìn)制整數(shù);也可以是無(wú)符號(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等。,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-115,算術(shù)運(yùn)算指令有:,雙操作數(shù)指令,如加、減、比較等。,單操作數(shù)指令,如增/減、整數(shù)變反、乘除法指令等。,無(wú)操作數(shù)指令,如十進(jìn)制運(yùn)算調(diào)整和符號(hào)位擴(kuò)展等。,三操作數(shù)指令,如有符號(hào)整數(shù)乘法指令I(lǐng)MUL等。,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-116,1. 加法/減法指令,操作: ADD:(目的)+(源) 目的 SUB: (目的)-(源) 目的 ADC:(目的)+(源)+CF目的 SBB: (目的)-(源)-CF目的,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-117,加法/減法指令使用說(shuō)明:,ADD/SUB指令用于單個(gè)字節(jié)/字/雙字?jǐn)?shù)的加/減法運(yùn)算; ADC/SBB指令則常用于多精度或多字節(jié)/多字/多雙字?jǐn)?shù)的加/減法運(yùn)算。 INC/DEC REG/MEM 與 ADD/SUB REG/MEM,1指令的異同:兩者都執(zhí)行加1/減1操作,但前者不影響進(jìn)位,而后者影響。,2-118,解: 用8086指令 MOV AX,Y SUB X,AX ;低16位字?jǐn)?shù)據(jù)相減 MOV AX,2Y SBB 2X,AX ;高16位字?jǐn)?shù)據(jù)相減, 用80386/486指令 MOV EAX,DWORD PTR Y SUB DWORD PTR X,EAX,兩個(gè)32位雙字?jǐn)?shù)據(jù)X、Y定義如下: X DW 1234H,5678H Y DW 3FEAH,A033H 請(qǐng)編寫(xiě)計(jì)算X=XY的程序段(低位在前),例2.9,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-119,2. 整數(shù)變反指令(求補(bǔ)),格式: NEG 目的操作數(shù) REG/MEM 操作: 0-(目的操作數(shù)) 目的操作數(shù) 應(yīng)用: 常用于求負(fù)數(shù)的絕對(duì)值。,解: TEST AX,8000H ;測(cè)試符號(hào)位 JZ NEXT NEG AX NEXT:HLT,例2.10 求AX中存放的有符號(hào)數(shù)的絕對(duì)值。,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-120,3. 比較指令,格式: CMP 目的操作數(shù),源操作數(shù) REG, REG/MEM/IMM MEM, REG/IMM,CMP與SUB指令都執(zhí)行減法操作,但前者不因操作結(jié)果改變目標(biāo)操作數(shù)值,而后者改變。,操作:(目的操作數(shù))(源操作數(shù)),根據(jù)操作結(jié)果修改狀態(tài)標(biāo)志,但不改變目標(biāo)操作數(shù)值。,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-121,表2.8 狀態(tài)標(biāo)志反映的兩數(shù)關(guān)系,2-122,乘法指令分為有符號(hào)數(shù)和無(wú)符號(hào)數(shù)乘法指令(IMUL/MUL)。 無(wú)符號(hào)數(shù)乘法指令只有單操作數(shù)格式一種; 有符號(hào)數(shù)乘法指令則有單操作數(shù)、雙操作數(shù)和三操作數(shù)三種格式。,4. 乘法指令,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-123,1) 單操作數(shù)乘法指令,格式:MUL/IMUL 源操作數(shù) REG/MEM,操作:MUL和IMUL分別為有符號(hào)數(shù)和無(wú)符號(hào)數(shù)乘法指令,兩種指令除操作數(shù)類(lèi)型不同外,操作完全相同:,字: (AX)(源操作數(shù))DX:AX,雙字:(EAX)(源操作數(shù))EDX:EAX,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-124,單操作數(shù)乘法指令的被乘數(shù)是隱含的(在AL/AX/EAX中),而結(jié)果長(zhǎng)度一定是被乘數(shù)/乘數(shù)的二倍(在AX/DX:AX/EDX:EAX中)。 源操作數(shù)不能為立即數(shù)。 源操作數(shù)為存儲(chǔ)器操作數(shù),且類(lèi)型不能確定時(shí),要顯式說(shuō)明操作數(shù)類(lèi)型。 要根據(jù)是有符號(hào)數(shù)還是無(wú)符號(hào)數(shù),分別選用IMUL或MUL指令 指令執(zhí)行影響CF和OF標(biāo)志,若指令執(zhí)行后,結(jié)果的高一半是有效數(shù)值位,則CF=OF=1,否則CF=OF=0。,乘法指令使用說(shuō)明:,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-125,例2.11,解: MUL BL指令完成AL和BL中的兩個(gè)無(wú)符號(hào)數(shù)相乘:,AH含有效數(shù)字, OF=1、CF=1。,(AX)=0A8CH,12C,+ 96,若(AL)=96H,(BL)=12H,求分別執(zhí)行MUL BL和IMUL BL指令后的結(jié)果及OF、CF狀態(tài)。,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-126,AH含有效數(shù)字, OF=1、CF=1。,解: IMUL 執(zhí)行有符號(hào)數(shù)乘法,此時(shí)AL中的數(shù)是負(fù)數(shù),真值為-6AH,即:,用補(bǔ)碼表示: (AX)= F88CH,(AX)= -774H,D4,+ 6A,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-127,格式: IMUL 目的操作數(shù),源操作數(shù) REG, REG/MEM/IMM 操作:(目的操作數(shù))(源操作數(shù))目的操作數(shù),3)三操作數(shù)乘法指令 格式:IMUL 目的操作數(shù),源操作數(shù),立即數(shù) REG, REG/MEM, IMM 操作:(源操作數(shù))(立即數(shù))目的操作數(shù),2) 雙操作數(shù)乘法指令,2.4.5 算術(shù)運(yùn)算類(lèi)指令,2-128,5. 除法指令,格式:D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校宿舍樓清潔外包合同
- 進(jìn)口合同在海關(guān)清關(guān)中的作用
- 長(zhǎng)期租賃搬家協(xié)議書(shū)
- 全鎮(zhèn)不文明行為專(zhuān)項(xiàng)治理工作方案樣本(3篇)
- 2025年醫(yī)院科室年度工作計(jì)劃(二篇)
- 企業(yè)人力資源年度工作計(jì)劃
- 簡(jiǎn)易版房屋租賃合同樣板
- 攝影行業(yè)安全生產(chǎn)培訓(xùn)
- 城市房屋租賃合同范本模
- 承包車(chē)位租賃合同范本
- 公司解散清算的法律意見(jiàn)書(shū)、債權(quán)處理法律意見(jiàn)書(shū)
- 公路橋梁工程施工安全風(fēng)險(xiǎn)評(píng)估指南
- 2024-2030年全球及中國(guó)通過(guò)硅通孔(TSV)技術(shù)行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 2024年秋季學(xué)期新Join In劍橋版(三年級(jí)起)英語(yǔ)三年級(jí)上冊(cè)課件 Supplementary activities Unit 6
- 2024年新人教版道德與法治七年級(jí)上冊(cè)全冊(cè)教案(新版教材)
- 初中物理期末復(fù)習(xí)+專(zhuān)題5+綜合能力題+課件++人教版物理九年級(jí)全一冊(cè)
- 2024年國(guó)開(kāi)電大 統(tǒng)計(jì)學(xué)原理 形成性考核冊(cè)答案
- Unit13 同步教學(xué)設(shè)計(jì)2023-2024學(xué)年人教版九年級(jí)英語(yǔ)全冊(cè)
- 合伙經(jīng)營(yíng)合作社協(xié)議書(shū)
- 廊坊市區(qū)普通住宅區(qū)物業(yè)服務(wù)等級(jí)標(biāo)準(zhǔn)
- 超聲引導(dǎo)下疼痛治療
評(píng)論
0/150
提交評(píng)論