第3章IA-32微處理器指令系統(tǒng)簡(jiǎn)介_第1頁
第3章IA-32微處理器指令系統(tǒng)簡(jiǎn)介_第2頁
第3章IA-32微處理器指令系統(tǒng)簡(jiǎn)介_第3頁
第3章IA-32微處理器指令系統(tǒng)簡(jiǎn)介_第4頁
第3章IA-32微處理器指令系統(tǒng)簡(jiǎn)介_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 (高職高專教育) (第四版)米昶 孫杰 苑偉 編著大大 連連 理理 工工 大大 學(xué)學(xué) 出出 版版 社社普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 第3章 IA-32微處理器指令系統(tǒng)簡(jiǎn)介 (目錄)3.1 指令系統(tǒng)概述3.1.1 指令系統(tǒng)分類3.1.2 指令格式3.1.3 尋址方式3.2 IA-32指令系統(tǒng)簡(jiǎn)介3.2.1 基本通用指令3.2.2 x87FPU指令3.3 IA-32結(jié)構(gòu)微處理器的指令系統(tǒng)的發(fā)展3.4 匯編語言程序的基本結(jié)構(gòu)3.4.1 匯編語言的語句成分3.4.2 匯編語言的語句類型3.4.

2、3 匯編語言的語句結(jié)構(gòu)普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 第3章 IA-32微處理器指令系統(tǒng)簡(jiǎn)介 (目錄)3.4.4 匯編語言源程序的基本結(jié)構(gòu)本章小結(jié)習(xí)題普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 第3章 IA-32微處理器指令系統(tǒng)簡(jiǎn)介 3.1 指令系統(tǒng)概述CPU依靠指令來計(jì)算和控制系統(tǒng),每款CPU在設(shè)計(jì)時(shí)就規(guī)定了一系列與其硬件電路相配合的指令系統(tǒng)。指令的強(qiáng)弱也是CPU的重要指標(biāo),指令集是提高微處理器效率的最有效工具之一。3.1.1 指令系統(tǒng)分類 從現(xiàn)階段的主流體系結(jié)構(gòu)講,指令集可分為復(fù)雜指令集和精簡(jiǎn)指令集兩部分。1、復(fù)雜指令系統(tǒng)計(jì)算

3、機(jī)(CISC,Complex Instruction Set Computer) 早期的CPU全部是CISC架構(gòu),它的設(shè)計(jì)目的是要用最少的機(jī)器語言指令來完成所需的計(jì)算任務(wù)。大量的復(fù)雜指令、可變的指令長(zhǎng)度、多種的尋址方式是CISC的特點(diǎn),也是CISC的缺點(diǎn)普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.1 指令系統(tǒng)分類 2、精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(RISC,Reduced Instruction Set Computer) RISC體系結(jié)構(gòu)的基本思路是:針對(duì)CISC指令系統(tǒng)指令種類太多、指令格式不規(guī)范、尋址方式太多的缺點(diǎn),通過減少指令種類、規(guī)范指令格式和簡(jiǎn)化尋址方式,提

4、高處理器內(nèi)部的并行處理能力和VLSI器件的使用效率,從而大幅度地提高處理器的性能。 RISC指令集有許多特征,其中最重要的有: 指令種類少,指令格式規(guī)范 尋址方式簡(jiǎn)化 大量利用寄存器間操作 簡(jiǎn)化處理器結(jié)構(gòu) 便于使用VLSI技術(shù) 加強(qiáng)了處理器并行能力普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.2 指令格式 對(duì)于早期的Intel 8086和80286來說,微處理器上運(yùn)行的是16位指令系統(tǒng),而后期的Intel80386至Pentium等IA-32系列CPU上運(yùn)行的是32位指令系統(tǒng)。(1)雙操作數(shù)指令格式為: 標(biāo)號(hào):操作符 目的操作數(shù),源操作數(shù);注釋 目的操作數(shù)和源操

5、作數(shù)應(yīng)具有相同的類型,即必須同時(shí)為字節(jié)類型或 同時(shí)為字類型。 目的操作數(shù)不能是立即數(shù)。 操作結(jié)束后,一般情況其運(yùn)算結(jié)果送入目的地址中,而源操作數(shù)不發(fā)生改變。 目的操作數(shù)和源操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.2 指令格式(2)單操作數(shù)指令格式為: 標(biāo)號(hào):操作符 目的操作數(shù) 相應(yīng)的操作規(guī)定為: 操作對(duì)象為目的地址中的操作數(shù),操作結(jié)束后,其運(yùn)算結(jié)果送入目的地址中。 操作數(shù)不能是立即數(shù)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式 尋址方式指的是在指令中尋找指令的操作數(shù)或操作數(shù)地址的

6、方式。在808680286CPU中,與數(shù)據(jù)有關(guān)的尋址方式主要有:立即尋址、寄存器尋址、直接尋址、寄存器間接尋址、基址變址尋址、寄存器相對(duì)尋址、相對(duì)基址變址尋址等幾種。在80386及更高級(jí)的微處理器中還包括帶比例因子的變址尋址和帶比例因子的基址變址尋址方式。與程序轉(zhuǎn)移地址有關(guān)的尋址方式包括:直接尋址和間接尋址。 1、與數(shù)據(jù)有關(guān)的尋址方式 (1)立即尋址 操作數(shù)直接在指令中提供的尋址方式為立即尋址方式,指令中提供的操作數(shù)也稱作立即數(shù)。比如:MOV AL,80H ; (2)寄存器尋址 操作數(shù)放在微處理器內(nèi)部的寄存器中,在指令中直接指出寄存器的名字。例如:INC CX ;將CX的內(nèi)容加1普通高等教育普

7、通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(3)直接尋址 數(shù)據(jù)在存儲(chǔ)器中,有效地址由指令直接給出。例如: MOVAX,1060H ;其功能是將DS段的1060H和1061H兩單元的內(nèi)容取到AX中。假設(shè)(DS)=2000H,那么存儲(chǔ)單元的物理地址為21060H,如圖3.1所示,將該存儲(chǔ)單元中的數(shù)據(jù)送到寄存器AX中。30505030AHAL21060H21061H結(jié)果為:(AX)=3050H圖3.1直接尋址示例普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(4)寄存器間接尋址 有效地址由指令中的基址寄存器(BX或BP)或

8、變址寄存器(SI或DI) 中給出。 例如: MOV AX, BX ;PA = 10H(DS) + (BX) 需要注意的是: 只允許使用BX、BP、SI、DI 存放有效地址。則 MOV AX,CX 是一條錯(cuò)誤的指令。 源操作數(shù)和目的操作數(shù)的長(zhǎng)度必須一致,下面的例子中源操作數(shù)的有效地址雖然都放在BX,但其代表的存儲(chǔ)單元大小是不一樣的。 例如: MOV DL, BX ;BX指示一個(gè)字節(jié)單元 MOV DX, BX ;BX指示一個(gè)字單元 間接尋址時(shí),若有效地址存放在BX中,則默認(rèn)的段寄存器為DS,由于BX稱為基址寄存器,所以這種尋址方式也叫數(shù)據(jù)段基址尋址。例如:普通高等教育普通高等教育“十一五十一五”國(guó)

9、家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式 MOV AX,BX 設(shè)DS6000H,BX3000H,則本指令在執(zhí)行時(shí),將63000H和63001H兩單元的內(nèi)容送AX。 間接尋址時(shí),若有效地址存放在BP中,則默認(rèn)的段寄存器為SS,因?yàn)锽P稱為基址寄存器,所以這種尋址方式通常稱為堆棧段基址尋址。例如: MOV BX,BP 設(shè)SS7000H,BP1000H,則該指令在執(zhí)行時(shí),將71000H和71001H兩單元的內(nèi)容送BX。 SI和DI寄存器分別稱為源變址寄存器和目的變址寄存器,所以用這兩個(gè)寄存器來進(jìn)行間接尋址也叫變址尋址。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.

10、1.3 尋址方式(5)寄存器相對(duì)尋址方式 采用寄存器間接尋址時(shí),允許在指令中指定一個(gè)位移量,這樣有效地址通過將一個(gè)寄存器的內(nèi)容加上一個(gè)位移量來得到。位移量可以為8位,也可以為16位。即: 這種尋址方式可以將位移量看成是一個(gè)相對(duì)值,因此把帶位移量的寄存器間接尋址叫寄存器相對(duì)尋址。指令格式: MOV AX,COUNTSI 或 MOV AX,COUNT+SI 假設(shè) (DS)=3000H,(SI)=2000H,COUNT=3000H,則該存儲(chǔ)單元的物理地址為:35000H ,假設(shè)(35000H)=1234H,那么 (AX)=1234H 。有效地址=(BX)(BP)(SI)(DI)+8位位移量16位位移

11、量普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(6)基址變址尋址方式 將BX,BP和SI,DI寄存器組合起來進(jìn)行的間接尋址稱為基址變址尋址。通常將BX和BP稱為基址寄存器,將SI和DI稱為變址寄存器?;纷冎穼ぶ窌r(shí),操作數(shù)的有效地址是一個(gè)基址寄存器(BX或BP)的內(nèi)容加上一個(gè)變址寄存器(SI或DI)的內(nèi)容。即: 例如:MOV AX,BX+SI 設(shè)DS2000H,BX4000H,SI2000H,則上面指令在執(zhí)行時(shí),有效地址為6000H,本指令將26000H和26001H兩單元的內(nèi)容取到AX中。有效地址=(BX)(BP)(SI)(DI)+普通高等教育普

12、通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(7)相對(duì)基址變址尋址方式 用基址變址的尋址方式時(shí),允許帶一個(gè)8位或16位的位移量。 例如:MOV AX,BX+SI+50H;將BX和SI中的內(nèi)容與50H相加作為有效地址。 基址變址尋址方式中,對(duì)段寄存器的使用有一個(gè)約定規(guī)則,即如果基址寄存器用BX,則默認(rèn)的段寄存器為DS;如果基址寄存器用BP,則默認(rèn)的段寄存器為SS。有效地址=(BX)(BP)(SI)(DI)+8位位移量16位位移量+普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(8)帶有比例因子的變址尋址 在這種格式中,存

13、儲(chǔ)單元的有效地址采用如下形式: 存儲(chǔ)單元的有效地址比例因子*變址寄存器的內(nèi)容位移量 在指令格式中,將段寄存器考慮進(jìn)去時(shí),完整的地址表達(dá)式如下: 段寄存器:比例因子變址寄存器位移量或者 段寄存器:位移量比例因子變址寄存器 需要注意的是,訪問約定的邏輯段,段超越前綴可以省略。其中比例因子可以是1,2,4,8中的1個(gè)數(shù),這是因?yàn)椴僮鲾?shù)的長(zhǎng)度可以是1、2、4、8個(gè)字節(jié);變址寄存器可以EBP是或者EAXEDX,ESI和EDI寄存器。例如: MOV AX,XBX*2SI普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(9)帶有比例因子的基址變址尋址 在這種格式中,

14、存儲(chǔ)單元的有效地址采用如下形式:存儲(chǔ)單元的有效地址基址寄存器內(nèi)容比例因子*變址寄存器的內(nèi)容位移量 將段寄存器考慮進(jìn)去時(shí),可以得到完整的地址表達(dá)式,形式如下: 段寄存器:基址寄存器比例因子*變址寄存器位移量或者:段寄存器:位移量基址寄存器比例因子變址寄存器 或者:段寄存器:位移量基址寄存器比例因子*變址寄存器 需要特別指出的是,在這種尋址方式中基址寄存器和變址寄存器都必須是規(guī)定的32位寄存器,與帶有比例因子的變址尋址一樣這種尋址方式中的比例因子可以是1,2,4,8中的一個(gè)數(shù)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式 2、與程序轉(zhuǎn)移地址有關(guān)的尋址方

15、式(1)段內(nèi)直接尋址 段內(nèi)直接尋址是指轉(zhuǎn)向的有效地址是當(dāng)前IP寄存器的內(nèi)容和指令中指定的8位或16位位移量之和。例如: JMP SHORT PTR PRGA ;位移量為8位的短轉(zhuǎn)移,PRGA為符號(hào)地址 JMP NEAR PRGB ;位移量為16或32位的近轉(zhuǎn)移,PRGB為符號(hào)地址 其中:8位位移量的跳轉(zhuǎn)范圍在-128+127之內(nèi)。 16位位移量的跳轉(zhuǎn)范圍為32K之內(nèi)。 32位位移量的跳轉(zhuǎn)范圍為 2G之內(nèi)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(2)段內(nèi)間接尋址 段內(nèi)間接尋址是指轉(zhuǎn)向有效地址是一個(gè)寄存器或是一個(gè)存儲(chǔ)單元的內(nèi)容。這個(gè)寄存器或存儲(chǔ)單

16、元的內(nèi)容可以用數(shù)據(jù)尋址方式中除立即數(shù)以外的任何一種尋址方式取得,所得到的轉(zhuǎn)向的有效地址用來取代IP寄存器的內(nèi)容。例如: 假設(shè)(DS)=2000H,(BX)=1000H,(SI)=2000H,T1的值為20A1H, (230A1H)=5678H, (240A1H)=1234H。則,執(zhí)行指令 JMP BX ; 執(zhí)行后(IP) = 1000H (3) 段間直接尋址 段間直接尋址是指在指令中直接提供了轉(zhuǎn)向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的內(nèi)容,用指令中指定的段地址取代CS寄存器的內(nèi)容就完成了一個(gè)段到另一個(gè)段的轉(zhuǎn)移操作。例如: JMP FAR PTR NEXTPRG 其中N

17、EXTPRG為轉(zhuǎn)向的符號(hào)地址,F(xiàn)AR PTR則是表示段間轉(zhuǎn)移的操作符。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.1.3 尋址方式(4)段間間接尋址 段間間接尋址是指用存儲(chǔ)器中的兩個(gè)相繼字的內(nèi)容來取代IP和CS寄存器中的原始內(nèi)容,以達(dá)到段間轉(zhuǎn)移的目的。這里,存儲(chǔ)單元的地址是由指令指定除立即數(shù)方式和寄存器方式以外的任何一種數(shù)據(jù)尋址方式取得。例如: JMP DWORD PTR T2+BX 其中T2+BX說明數(shù)據(jù)尋址方式為直接變址尋址方式,DWORD PTR為雙字操作符,說明轉(zhuǎn)向地址需取雙字為段間轉(zhuǎn)移指令。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃

18、教材 3.2 IA-32指令系統(tǒng)簡(jiǎn)介 Intel 8086/8088使用的X86指令集是IA-32指令系統(tǒng)的基礎(chǔ),80X86PENTIUM系列微機(jī)的指令系統(tǒng)在基本指令集的基礎(chǔ)上進(jìn)行了擴(kuò)充, 表3.1 給出的是不同類型的Intel CPU指令條數(shù)。IntelIntelCPUCPU類型類型新增指令條數(shù)新增指令條數(shù)指令總數(shù)指令總數(shù)808680868989條條8989條條808780877777條條166166條條8028680286新增新增2424條條190190條條8038680386新增新增1414條條204204條條8038780387新增新增7 7條條211211條條8048680486新增

19、新增5 5條條216216條條PentiumPentium新增新增6 6條條222222條條PentiumPentiumProPro新增新增8 8條條230230條條PentiumPentiumMMXMMX新增新增5757條條287287條條PentiumPentiumIIII新增新增4 4條條291291條條PentiumPentiumIIIIII新增新增SSE1SSE1指令指令7070條條361361條條PentiumPentium4 4新增新增SSE2SSE2指令指令144144條條505505條條表3.1 Intel CPU的指令條數(shù)普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教

20、材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 8086/8088指令系統(tǒng)是80X86的基本指令集。指令的操作數(shù)寬度是8位或16位,偏移地址寬度是16位。8086/8088微處理器的指令系統(tǒng)可以分為以下六類指令:數(shù)據(jù)傳送指令 算術(shù)運(yùn)算指令位操作指令字符串操作指令控制轉(zhuǎn)移指令處理機(jī)控制指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令指令中的符號(hào)指令中的符號(hào)符號(hào)的含義符號(hào)的含義OPRD操作數(shù)操作數(shù)OPRD1,OPRD2一般在多操作數(shù)指令中,一般在多操作數(shù)指令中,OPRD1為目為目的操作數(shù),的操作數(shù),OPRD2源操作數(shù)源操作數(shù)reg通用寄存器,長(zhǎng)度可以是

21、通用寄存器,長(zhǎng)度可以是8位或位或16位位Sreg段寄存器段寄存器reg88位通用寄存器位通用寄存器reg1616位通用寄存器位通用寄存器mem存儲(chǔ)器,長(zhǎng)度可以是存儲(chǔ)器,長(zhǎng)度可以是8位或位或16位。位。mem88位存儲(chǔ)器位存儲(chǔ)器mem1616位存儲(chǔ)器位存儲(chǔ)器imm立即數(shù),長(zhǎng)度可以是立即數(shù),長(zhǎng)度可以是8位或位或16位。位。imm88位立即數(shù)位立即數(shù)imm1616位立即數(shù)位立即數(shù)表表3.23.2指令中的符號(hào)說明指令中的符號(hào)說明在具體介紹指令之前,我們先將描述指令時(shí)會(huì)用到的一些符號(hào)的含義列出,如在具體介紹指令之前,我們先將描述指令時(shí)會(huì)用到的一些符號(hào)的含義列出,如表表3.2所示。所示。普通高等教育普通高

22、等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第一類指令是數(shù)據(jù)傳送指令,具體見表3.3所示。這類指令主要完成計(jì)算機(jī)系統(tǒng)內(nèi)不同數(shù)據(jù)空間之間的數(shù)據(jù)傳送功能,可實(shí)現(xiàn)的數(shù)據(jù)傳送包括: 存儲(chǔ)器與寄存器之間的數(shù)據(jù)傳送 寄存器與寄存器之間的數(shù)據(jù)傳送 累加器與I/O端口之間的數(shù)據(jù)傳送 立即數(shù)到寄存器或存儲(chǔ)器的數(shù)據(jù)傳送普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 指令類型指令類型功能功能格式格式通用數(shù)據(jù)通用數(shù)據(jù)傳送傳送將源將源操作數(shù)中的操作數(shù)中的字節(jié)或字傳送到字節(jié)或字傳送到目的操作數(shù)目的操作數(shù)MOV目的操作數(shù)目的操作數(shù),源,源操作數(shù)操作數(shù)將源將源操作數(shù)中的

23、操作數(shù)中的字壓入堆棧字壓入堆棧PUSH源源操作數(shù)操作數(shù)將堆棧將堆棧中的中的字彈出并傳送到字彈出并傳送到目的操作數(shù)目的操作數(shù)POP目的操作數(shù)目的操作數(shù)完成目的操作數(shù)完成目的操作數(shù)和源和源操作數(shù)的操作數(shù)的字節(jié)或字交換字節(jié)或字交換XCHG目的操作數(shù)目的操作數(shù),源,源操作數(shù)操作數(shù)字節(jié)翻譯字節(jié)翻譯XLAT地址傳送地址傳送將源將源操作數(shù)的操作數(shù)的有效地址裝入有效地址裝入目的操作數(shù)目的操作數(shù)LEA目的操作數(shù)目的操作數(shù),源,源操作數(shù)操作數(shù)將源將源操作數(shù)的操作數(shù)的有效地址裝入有效地址裝入目的操作數(shù),段目的操作數(shù),段地址地址裝入裝入DS寄存器寄存器LDS目的操作數(shù)目的操作數(shù),源,源操作數(shù)操作數(shù)將源將源操作數(shù)的操作

24、數(shù)的有效地址裝入有效地址裝入目的操作數(shù),段目的操作數(shù),段地址地址裝入裝入ES寄存器寄存器LES目的操作數(shù)目的操作數(shù),源,源操作數(shù)操作數(shù)標(biāo)志位標(biāo)志位傳送傳送將標(biāo)志位寄存器將標(biāo)志位寄存器PSW低字節(jié)裝入低字節(jié)裝入AH寄存器寄存器LAHF將將AH內(nèi)容裝入內(nèi)容裝入PSW低字節(jié)低字節(jié)SAHF將將PSW內(nèi)容壓入堆棧內(nèi)容壓入堆棧PUSHF從堆棧彈出從堆棧彈出PSW內(nèi)容內(nèi)容POPFI/O數(shù)據(jù)傳送數(shù)據(jù)傳送從從I/O端口輸入字節(jié)或字到累加器端口輸入字節(jié)或字到累加器IN累加器,端口累加器,端口從累加器輸出字節(jié)或字到從累加器輸出字節(jié)或字到I/O端口端口OUT端口,累加器端口,累加器3.2.1 基本通用指令表表3.33

25、.3數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令1、數(shù)據(jù)傳送指令(1)MOV指令 指令格式:MOV OPRD1,OPRD2 ; 功能 :OPRD2 OPRD1,兩個(gè)操作數(shù)可以是8位或16位,但必須等長(zhǎng)。 MOV指令有以下幾種形式(如圖3.2所示):MOVreg/Sreg,regMOVreg,SregMOVreg/Sreg,memMOVmem, reg/SregMOVreg,immMOVmem, imm通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存儲(chǔ)儲(chǔ)器器立立即即數(shù)數(shù)段寄存器段寄存器(CS,SS,

26、DS,ES)通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存儲(chǔ)儲(chǔ)器器立立即即數(shù)數(shù)段寄存器段寄存器(CS,SS,DS,ES)通用寄存器通用寄存器(AX,BX,CX,DX,BPSP,SI,DI)存存儲(chǔ)儲(chǔ)器器立立即即數(shù)數(shù)段寄存器段寄存器(CS,SS,DS,ES)圖圖3.23.2MOVMOV指令指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令使用MOV指令傳送數(shù)據(jù)時(shí)應(yīng)該注意: 立即數(shù)和段寄存器CS不能作為目標(biāo)操作數(shù); 立即數(shù)不能直接傳送到段寄存器 (如MOV DS,2000H,這將出現(xiàn)語法錯(cuò)誤); 兩個(gè)存儲(chǔ)單元之間不能直接傳送數(shù)

27、據(jù) (一般可通過寄存器實(shí)現(xiàn)二者間的數(shù)據(jù)傳送); 兩個(gè)段寄存器之間不能直接傳送數(shù)據(jù) (如MOV DS,ES語法錯(cuò)誤,可改為 MOV AX,ES 和MOV DS,AX)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令(2)進(jìn)棧/出棧指令 80X86中,用SS段寄存器記錄堆棧段的段地址,用堆棧指針寄存器SP存儲(chǔ)棧頂?shù)刂贰?進(jìn)棧指令指令格式:PUSH OPRD2 功能: SP SP-2; (SP1), (SP) )OPRD2 出棧指令指令格式:POP OPRD1功能: OPRD1SP;SP SP2需要注意的是: 堆棧操作是16位操作; 源操作數(shù):通用Re

28、g,Sreg或mem; 目標(biāo)操作數(shù):通用Reg,Sreg(CS除外)或mem。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令(3)交換指令XCHG 指令格式:XCHG OPRD1,OPRD2; 功能: OPRD1OPRD2;例:XCHG AH,AL XCHG 2123H,BX需要注意的是: 兩個(gè)操作數(shù)可以是reg,mem。 兩個(gè)存儲(chǔ)器操作數(shù)之間不能實(shí)現(xiàn)直接交換。 段寄存器和立即數(shù)不能作為操作數(shù)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令(4)查表轉(zhuǎn)換指令XLAT(或稱換碼指令) 指令格式: XL

29、AT 或 XLAT OPRD; 功能: AL BX+AL需要注意的是: 代碼表必須建立在數(shù)據(jù)段。 代碼表長(zhǎng)度不超過256字節(jié)。 執(zhí)行指令前,BX 表首址,AL 查找對(duì)象在表中距首址的偏移量。 XLAT中的操作數(shù)通常為碼表首地址的名稱。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令2、地址傳送指令(1)有效地址傳送指令LEA 指令格式:LEA OPRD1, OPRD2 功能:取存儲(chǔ)器操作數(shù)在當(dāng)前段內(nèi)的有效地址送至16位通用寄存器中。例如,LEA AX,1234H ;AX=1234H需要注意的是: 指令中的源操作數(shù)必須是存儲(chǔ)單元,目的操作數(shù)應(yīng)為16位

30、通用寄存器; MOV指令與LEA的不同,前者傳送操作數(shù)的內(nèi)容,后者傳送操作數(shù)的地址。(2)地址指針傳送指令LDS和LES 指令格式:LDS(LES) OPRD1, OPRD2 功能:reg16mem,DS(ES)mem+2 該指令將由源操作數(shù)偏移地址確定的雙字單元中的第一個(gè)字的內(nèi)容送入指令指定的16位通用寄存器,第二個(gè)字的內(nèi)容傳送給段寄存器DS或ES。 例如:LDS DI,1000H注:指令中的源操作數(shù)必須是存儲(chǔ)單元,目的操作數(shù)應(yīng)為16位通用寄存器;普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令3、 標(biāo)志位傳送指令標(biāo)志位傳送指令專門用于對(duì)標(biāo)志寄存

31、器(PSW)的保護(hù)和更新操作。(1)LAHF/SAHF(讀寫標(biāo)志寄存器)指令LAHF用于將PSW的低8位(含SF、ZF、AF、PF和CF)讀出后傳送到AH寄存器。這條指令本身不影響標(biāo)志位。SAHF與LAHF的操作相反。將寄存器AH中的內(nèi)容寫入PSW的低8位,而高8位保持不變。(2)PUSHF/POPF (標(biāo)志寄存器入棧/出棧) PUSHF:將PSW內(nèi)容壓入堆棧,同時(shí)修改堆棧指針。 POPF:將當(dāng)前棧頂?shù)囊粋€(gè)字 PSW,同時(shí)修改堆棧指針。例如,如果要將0FEBH存入FLAGS,可用以下指令實(shí)現(xiàn):MOV AX ,0FEBH ;將常量0FEBH存入AX中PUSH AX ;AX入棧POPF ; 0FE

32、BH存入FLAGS普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令4、 輸入/輸出數(shù)據(jù)傳送指令I(lǐng)N/OUT 輸入指令用來控制從外部設(shè)備向計(jì)算機(jī)傳送信息,輸出指令用來控制從計(jì)算機(jī)向外部設(shè)備傳送信息。(1)輸入指令 指令格式: IN 累加器,外設(shè)端口地址 功能:從外設(shè)端口讀取數(shù)據(jù)并輸入到累加器中。 輸入指令有以下4中形式:INAL,PORT; (PORT) AL,PORT為8位的端口地址INAX,PORT; (PORT) AX,PORT為8位的端口地址INAL,DX; (DX) AL,DX中為大于8位的端口地址INAX,DX; (DX) AX,DX中為

33、大于8位的端口地址普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令(2)輸出指令 指令格式:OUT 外設(shè)端口地址,累加器 功能:將累加器中的數(shù)據(jù)輸出到指定的外設(shè)端口。 輸入指令有以下4中形式:OUTPORT,ALOUTPORT,AXOUTDX, ALOUTDX, AX需要注意的是: I/O指令只能使用累加器,不能使用其它寄存器; I/O指令可以傳送字/字節(jié)兩種長(zhǎng)度的數(shù)據(jù),選用哪一種取決于外設(shè)端口寬度。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第二類指令是算術(shù)運(yùn)算指令,該類指令分為二進(jìn)制算術(shù)運(yùn)算指

34、令和BCD碼算術(shù)運(yùn)算調(diào)整指令,二進(jìn)制算術(shù)運(yùn)算指令如表3.4所示(不含BCD碼算術(shù)運(yùn)算調(diào)整指令)。指令類型指令類型名稱名稱說明說明加法指令加法指令A(yù)DDADD不帶進(jìn)位的加法指令不帶進(jìn)位的加法指令A(yù)DCADC帶進(jìn)位的加法指令帶進(jìn)位的加法指令I(lǐng)NCINC加加1 1指令指令減法指令減法指令SUBSUB不帶借位的減法指令不帶借位的減法指令SBBSBB帶借位的減法指令帶借位的減法指令DECDEC減減1 1指令指令NEGNEG求補(bǔ)指令求補(bǔ)指令CMPCMP比較指令比較指令乘法指令乘法指令MULMUL不帶符號(hào)數(shù)的乘法指令不帶符號(hào)數(shù)的乘法指令I(lǐng)MULIMUL帶符號(hào)數(shù)的乘法指令帶符號(hào)數(shù)的乘法指令除法指令除法指令DI

35、VDIV不帶符號(hào)數(shù)的除法指令不帶符號(hào)數(shù)的除法指令I(lǐng)DIVIDIV帶符號(hào)數(shù)的除法指令帶符號(hào)數(shù)的除法指令表表3.43.4二進(jìn)制算術(shù)運(yùn)算指令二進(jìn)制算術(shù)運(yùn)算指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第三類指令是位操作指令,8086微處理器的位操作指令分為邏輯運(yùn)算指令和移位指令,它們都可以直接對(duì)寄存器或存儲(chǔ)器進(jìn)行位操作,有關(guān)指令如表3.5所示。類型類型指令名稱指令名稱說明說明邏輯運(yùn)算指令邏輯運(yùn)算指令NOTNOT與運(yùn)算指令與運(yùn)算指令A(yù)NDAND或運(yùn)算指令或運(yùn)算指令TESTTEST測(cè)試指令測(cè)試指令(兩操作數(shù)做與兩操作數(shù)做與運(yùn)算運(yùn)算,僅修改標(biāo)志位僅修改

36、標(biāo)志位,不回送結(jié)果不回送結(jié)果)OROR或運(yùn)算指令或運(yùn)算指令XORXOR異或運(yùn)算指令異或運(yùn)算指令移位移位指令指令算術(shù)移位算術(shù)移位SALSAL算術(shù)左移指令算術(shù)左移指令SARSAR算術(shù)右移指令算術(shù)右移指令邏輯移位邏輯移位SHLSHL邏輯左移指令邏輯左移指令SHRSHR邏輯右移指令邏輯右移指令不帶進(jìn)位的不帶進(jìn)位的循環(huán)移位循環(huán)移位ROLROL循環(huán)左移指令循環(huán)左移指令RORROR循環(huán)右移指令循環(huán)右移指令帶進(jìn)位的循帶進(jìn)位的循環(huán)移位環(huán)移位RCLRCL帶進(jìn)位的循環(huán)左移指令帶進(jìn)位的循環(huán)左移指令RCRRCR帶進(jìn)位的循環(huán)右移指令帶進(jìn)位的循環(huán)右移指令表表3.53.5位操作指令位操作指令普通高等教育普通高等教育“十一五十

37、一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第四類指令是字符串操作指令,串是地址連續(xù)的字節(jié)或字存儲(chǔ)單元,通常用于存放同一類數(shù)據(jù)?;敬僮髦噶钣形鍡l,即傳送(MOVS)、比較(CMPS)、搜索(SCAS)、取(LODS和存(STOS)等。串操作重復(fù)前綴是加在基本串操作指令之前,根據(jù)不同條件判斷是否重復(fù)執(zhí)行串操作。串操作重復(fù)前綴包括REP、REPE、REPZ、REPNE和REPNZ,它們用來控制后面緊隨的串操作指令是否重復(fù)。運(yùn)行時(shí)分下面兩種情況:(1)與REP相配合工作的為MOVS、STOS、LODS指令。 格式:REP MOVS/LODS/STOS 功能:重復(fù)串操作直到 CX

38、 = 0為止。(2)與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的為CMPS和SCAS指令。 格式:REPE/REPZ CMPS/SCAS REPNE/REPNZ CMPS/SCAS 功能:當(dāng)相等/為零時(shí)重復(fù)串操作; 當(dāng)不相等/不為零時(shí)重復(fù)串操作。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第五類指令是控制轉(zhuǎn)移指令,控制轉(zhuǎn)移指令用于控制程序的執(zhí)行流程。這類指令包括:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、子程序調(diào)用和返回指令、循環(huán)指令、中斷和中斷返回指令。1、無條件轉(zhuǎn)移指令JMP 指令格式:JMPOPRD 功能:按照不同的操作數(shù)給出方式,找出目

39、標(biāo)地址,用它代替原指令指針??蓪?shí)現(xiàn)全部存儲(chǔ)空間內(nèi)的轉(zhuǎn)移。 根據(jù)指令的尋址方式不同又可分為:段內(nèi)直接短轉(zhuǎn)移、段內(nèi)直接近轉(zhuǎn)移、段內(nèi)間接轉(zhuǎn)移、段間直接轉(zhuǎn)移和段間間接轉(zhuǎn)移。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令2、條件轉(zhuǎn)移指令 指令格式:指令助記符 目標(biāo)地址 功能:根據(jù)當(dāng)前各標(biāo)志位狀態(tài)進(jìn)行判斷,如果滿足指令所指定的條件,則轉(zhuǎn)移至目標(biāo)地址處(IP IP 當(dāng)前值 + 位移量) ;否則順序執(zhí)行(IP 不變)。條件轉(zhuǎn)移指令如表3.6、表3.7和表3.8所示。指令名稱指令名稱測(cè)試條件測(cè)試條件操作說明操作說明JZJZ(或(或JEJE)ZF=1ZF=1結(jié)果為零

40、(或相等)則結(jié)果為零(或相等)則轉(zhuǎn)移轉(zhuǎn)移JNZJNZ(或(或JNEJNE)ZF=0ZF=0結(jié)果不為零(或不相等)結(jié)果不為零(或不相等)則轉(zhuǎn)移則轉(zhuǎn)移JSJSSF=1SF=1結(jié)果為負(fù)則轉(zhuǎn)移結(jié)果為負(fù)則轉(zhuǎn)移JNSJNSSF=0SF=0結(jié)果為正則轉(zhuǎn)移結(jié)果為正則轉(zhuǎn)移JOJOOF=1OF=1結(jié)果溢出則轉(zhuǎn)移結(jié)果溢出則轉(zhuǎn)移JNOJNOOF=0OF=0結(jié)果無溢出則轉(zhuǎn)移結(jié)果無溢出則轉(zhuǎn)移JPJP(或(或JPEJPE)PF=1PF=1奇偶位為奇偶位為1 1則轉(zhuǎn)移則轉(zhuǎn)移JNPJNP(或(或JPOJPO)PF=0PF=0奇偶位為奇偶位為0 0則轉(zhuǎn)移則轉(zhuǎn)移JCJC(或(或JNAEJNAE或或JBJB)CF=1CF=1有進(jìn)位則

41、轉(zhuǎn)移有進(jìn)位則轉(zhuǎn)移JNCJNC(或(或JAEJAE或或JNBJNB)CF=0CF=0無進(jìn)位則轉(zhuǎn)移無進(jìn)位則轉(zhuǎn)移表表3.63.6簡(jiǎn)單條件轉(zhuǎn)移指令表簡(jiǎn)單條件轉(zhuǎn)移指令表普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令指令名稱指令名稱測(cè)試條件測(cè)試條件操作說明操作說明JBJB(或(或JNAEJNAE或或JCJC)CF=1CF=1低于,或不高于或等于,或進(jìn)位位為低于,或不高于或等于,或進(jìn)位位為1 1則轉(zhuǎn)移則轉(zhuǎn)移JNBJNB(或(或JAEJAE或或JNCJNC)CF=0CF=0不低于,或高于或等于,或進(jìn)位位為不低于,或高于或等于,或進(jìn)位位為0 0則轉(zhuǎn)移則轉(zhuǎn)移JAJA

42、(或(或JNBEJNBE)CFZF=0CFZF=0高于,或不低于或等于則轉(zhuǎn)移高于,或不低于或等于則轉(zhuǎn)移JNAJNA(或(或JBEJBE)CFZF=1CFZF=1不高于,或低于或等于則轉(zhuǎn)移不高于,或低于或等于則轉(zhuǎn)移指令名稱指令名稱測(cè)試條件測(cè)試條件操作說明操作說明JLJL(或(或JNGEJNGE)SFOF=1SFOF=1小于,或不大于或等于則轉(zhuǎn)移小于,或不大于或等于則轉(zhuǎn)移JNLJNL(或(或JGEJGE)SFOF=0SFOF=0不小于,或大于或等于則轉(zhuǎn)移不小于,或大于或等于則轉(zhuǎn)移JGJG(或(或JNLEJNLE)(SFOFSFOF)ZF=0ZF=0大于,或不小于或等于則轉(zhuǎn)移大于,或不小于或等于則轉(zhuǎn)

43、移JNGJNG(或(或JLEJLE)(SFOFSFOF)ZF=1ZF=1不大于,或小于或等于則轉(zhuǎn)移不大于,或小于或等于則轉(zhuǎn)移表表3.73.7無符號(hào)數(shù)比較條件轉(zhuǎn)移指令表無符號(hào)數(shù)比較條件轉(zhuǎn)移指令表表表3.83.8有符號(hào)數(shù)比較條件轉(zhuǎn)移指令有符號(hào)數(shù)比較條件轉(zhuǎn)移指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令3、子程序調(diào)用和返回指令子程序調(diào)用CALL調(diào)用指令有四種:段內(nèi)直接調(diào)用、段間直接調(diào)用、段內(nèi)間接調(diào)用和段間間接調(diào)用。RET返回指令執(zhí)行的操作如表3.9示。返回返回指令指令段內(nèi)返回段內(nèi)返回段間返回段間返回段內(nèi)帶立即數(shù)返回段內(nèi)帶立即數(shù)返回段間帶立即數(shù)返回段

44、間帶立即數(shù)返回匯編匯編格式格式RETRETRETRETRET RET 表達(dá)式表達(dá)式RETRET表達(dá)式表達(dá)式執(zhí)行執(zhí)行操作操作(IPIP)(SPSP)+1+1, (SPSP)(SPSP)(SPSP)+2+2(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(CSCS)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(SPSP)(SPSP)+16+16位表達(dá)式位表達(dá)式(IPIP)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(

45、CSCS)(SPSP) +1 +1,(,(SPSP)(SPSP)(SPSP)+2+2(SPSP)(SPSP)+16+16 位表達(dá)式位表達(dá)式普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令4、 循環(huán)指令 循環(huán)指令共有3條: LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE,如表3-10所示。 指令格式:指令名循環(huán)入口的地址標(biāo)號(hào) 指令的功能:(CX)(CX)-1判斷測(cè)試條件,若條件成立,則:(IP)(IP)+8位位移量指令名指令名測(cè)試條件測(cè)試條件功能功能LOOPLOOP(CXCX)0 0無條件循環(huán)無條件循環(huán)LOOPNZ/LOOPNELOOP

46、NZ/LOOPNE(CXCX)0 0且且ZF=1ZF=1當(dāng)為零或相等時(shí)循環(huán)當(dāng)為零或相等時(shí)循環(huán)LOOPNZLOOPNZ(CXCX)0 0且且ZF=0ZF=0當(dāng)不為零或不相等時(shí)循環(huán)當(dāng)不為零或不相等時(shí)循環(huán)表表3-103-10循環(huán)指令測(cè)試條件循環(huán)指令測(cè)試條件普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 5、 中斷指令和中斷返回指令中斷是當(dāng)系統(tǒng)運(yùn)行或程序運(yùn)行期間遇到某些特殊情況,需要計(jì)算機(jī)自動(dòng)執(zhí)行一組專門的例行程序來進(jìn)行處理。所執(zhí)行的這組例行程序稱為中斷子程序。 中斷指令格式:INT n ;中斷調(diào)用,n 是中斷類型碼,取值范圍為0255 中斷返回指令格式

47、: IRET ;中斷返回 指令功能:實(shí)現(xiàn)對(duì)n號(hào)中斷的服務(wù)程序的調(diào)用及返回。中斷指令的基本操作如表3.11所示。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令指令格式指令格式INTINTn nINTOINTOIRETIRET執(zhí)行操作執(zhí)行操作(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(PSWPSW)IF=0IF=0,TF=0TF=0(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(CSCS)(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(IPIP)(IPIP)(n n4 4)(

48、CSCS)(n n4+24+2)若若OF=1OF=1則:則:(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(PSWPSW)IF=0IF=0,TF=0TF=0(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(CSCS)(SPSP)(SPSP)-2-2(SPSP)+1+1,(,(SPSP)(IPIP)(IPIP)(0010H0010H)(CSCS)(0012H0012H)(IPIP)(SPSP)+1+1,(SPSP)(SPSP)(SPSP)+2+2(CSCS)(SPSP)+1+1,(SPSP)(SPSP)(SPSP)+2+2(PSWPSW)(SPSP)

49、+1+1,(SPSP)(SPSP)(SPSP)+2+2說明說明中斷指令除把中斷指令除把IFIF和和TFTF位置位置0 0外,外,不影響其余的標(biāo)志位。不影響其余的標(biāo)志位。溢出中斷指令除把溢出中斷指令除把IFIF和和TFTF位置位置0 0外,不影響其余的標(biāo)志位。外,不影響其余的標(biāo)志位。中斷返回指令中斷返回指令表表3.113.11中斷指令中斷指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 第六類指令是處理器控制指令,處理器控制指令專門用于處理器的控制,指令格式上都不帶操作數(shù)。 1、標(biāo)志設(shè)置指令 標(biāo)志設(shè)置指令是設(shè)置和清除標(biāo)志的指令,只影響指令指定的標(biāo)

50、志,如表3.12所示。 2、其它處理機(jī)控制指令 NOP ;無操作指令 HLT ;停機(jī)指令 WAIT ;等待指令 LOCK ;總線封鎖指令 ESC ;交權(quán)指令指令指令格式格式指令功能指令功能執(zhí)行的操作執(zhí)行的操作CLCCLCSTCSTCCMCCMC進(jìn)位位置進(jìn)位位置0 0指令指令進(jìn)位位置進(jìn)位位置1 1指令指令進(jìn)位位求反指令進(jìn)位位求反指令CFOCFOCF1CF1CFCFCLDCLDSTDSTD方向標(biāo)志位置方向標(biāo)志位置0 0指令指令方向標(biāo)志位置方向標(biāo)志位置1 1指令指令DF0DF0DF1DF1CLICLISTISTI中斷標(biāo)志位置中斷標(biāo)志位置0 0指令指令中斷標(biāo)志位置中斷標(biāo)志位置1 1指令指令I(lǐng)F0IF0

51、IF1IF1表表3.123.12標(biāo)志設(shè)置指令標(biāo)志設(shè)置指令CF普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.1 基本通用指令 80 x86 80 x86PentiumPentiumCPUCPU在基本指令的基礎(chǔ)上進(jìn)行了擴(kuò)充和增加。在基本指令的基礎(chǔ)上進(jìn)行了擴(kuò)充和增加。下面將部分?jǐn)U充和增加的指令做一簡(jiǎn)單介紹。下面將部分?jǐn)U充和增加的指令做一簡(jiǎn)單介紹。 第一類數(shù)據(jù)傳送指令的擴(kuò)充主要是對(duì)通用傳送類指令、輸入輸出指令和地址傳送指令三類指令的擴(kuò)充。 第二類算術(shù)運(yùn)算指令的擴(kuò)充主要是對(duì)加、減、乘、除和符號(hào)擴(kuò)展指令的擴(kuò)充。 第三類邏輯運(yùn)算和移位指令對(duì)邏輯運(yùn)算、移位和位掃描指令進(jìn)行了擴(kuò)充

52、。 第四類串操作指令的擴(kuò)充,允許進(jìn)行雙字?jǐn)?shù)據(jù)操作。 第五類控制轉(zhuǎn)移指令的擴(kuò)充,對(duì)位移量進(jìn)行了擴(kuò)大。 第六類處理器控制指令的擴(kuò)充。 普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.2 x87FPU指令 協(xié)處理器指令分成六組:數(shù)據(jù)傳送、非超越、比較、超越、常數(shù)和處理器控制。所有協(xié)處理器指令操作碼都以字母F開始,以使它們同CPU指令區(qū)分開來。1、數(shù)據(jù)傳送指令 數(shù)據(jù)傳送指令有三種基本類型,即浮點(diǎn)數(shù)傳送、帶符號(hào)整數(shù)傳送和BCD數(shù)傳送。 浮點(diǎn)數(shù)傳送有4條指令:FLD(裝入實(shí)型數(shù))、FST(存儲(chǔ)實(shí)型數(shù))、FSTP(存儲(chǔ)實(shí)型數(shù)并出棧)和FXCH(寄存器內(nèi)容交換)。 整數(shù)傳送有3條

53、指令:FILD(裝入整型數(shù))、FIST(存儲(chǔ)整型數(shù))和FISTP(存儲(chǔ)整型數(shù)并出棧)。 BCD數(shù)傳送有2條指令:FBLD(裝入BCD碼)和FBSTP(存儲(chǔ)BCD碼并出棧)。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.2 x87FPU指令2、非超越指令 非超越操作包括四個(gè)基本算數(shù)操作(加、減、乘、除法)和一系列其它標(biāo)準(zhǔn)算數(shù)函數(shù)(如平方根、部分余數(shù)、絕對(duì)值等)。算數(shù)運(yùn)算的尋址方式包括堆棧尋址、寄存器尋址、寄存器彈出尋址和存儲(chǔ)器尋址等。 函數(shù)操作包括:FSQRT(平方根)、FPREM FPREM1(求部分余數(shù))、FSCALE(比例運(yùn)算)、FRUNDINT(舍入為整數(shù)

54、)、FXTRACT(提取階碼和有效數(shù)字)、FABC (絕對(duì)值)和FCHS(改變符號(hào))等。3、比較指令 比較指令用來比較棧頂寄存器的數(shù)據(jù)與另一個(gè)寄存器單元的內(nèi)容,并將比較結(jié)果返回到狀態(tài)寄存器中。協(xié)處理器包括的比較指令有: FCOM (實(shí)數(shù)比較)、FCOMP(實(shí)數(shù)比較并出棧)、FCOMPP(實(shí)數(shù)比較并兩次出棧)、FICOM (整數(shù)比較)、FICOMP (整數(shù)比較并出棧)、FSTS(測(cè)試)、FXAM (檢查)、FUCOM(無序?qū)崝?shù)比較)、FUCOMP(無序?qū)崝?shù)比較并出棧)和FUCOMPP(無序?qū)崝?shù)比較并出棧兩次)等。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.2 x

55、87FPU指令4、超越指令 超越指令包括:FSIN(正弦)、FCOS(余弦)、FSINCOS(正弦和余弦)、FPTAN(部分正切)、FPATAN(部分反正切)、FYL2X(計(jì)算y1og 2X)、FYL2XP1(計(jì)算ylog 2 (X+1))和F2XM1(計(jì)算2X-1)。5、常數(shù)指令 每一個(gè)常數(shù)指令將所表示的常數(shù)裝入棧頂寄存器中,這些指令如表3-14所示。指令指令指令功能指令功能FLDZFLDZ裝入常數(shù)裝入常數(shù)+0.0+0.0FLD1FLD1裝入常數(shù)裝入常數(shù)+1.0+1.0FLDPIFLDPI裝入常數(shù)裝入常數(shù)FLDL2TFLDL2T裝入常數(shù)裝入常數(shù)loglog2 21010FLDL2EFLDL2

56、E裝入常數(shù)裝入常數(shù)loglog2 2e eFLDLG2FLDLG2裝入常數(shù)裝裝入常數(shù)裝loglog10102 2FLDLN2FLDLN2裝入常數(shù)裝入常數(shù)logloge e2 2表表3-143-14常數(shù)指令常數(shù)指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.2.2 x87FPU指令6、處理器控制指令 處理器控制指令是用來控制協(xié)處理器動(dòng)作的指令,如表3.15所示。 指令指令指令功能指令功能FNINITFNINIT/FNINIT/FNINIT協(xié)處理器初始化處理協(xié)處理器初始化處理FSETPMFSETPM改變尋址和保護(hù)方式改變尋址和保護(hù)方式FLDCWFLDCW裝入控制字裝入

57、控制字FSTCW/FSTCW/FNSTCWFNSTCW存儲(chǔ)控制字存儲(chǔ)控制字FSTSWFSTSWAX/FNSTSWAX/FNSTSWAXAX將狀態(tài)字存入將狀態(tài)字存入AXAX寄存器寄存器FCLEX/FCLEX/FNCLEXFNCLEX清除狀態(tài)寄存器的清除狀態(tài)寄存器的“忙忙”和和“錯(cuò)誤錯(cuò)誤”標(biāo)志標(biāo)志FSAVE/FSAVE/FNSAVEFNSAVE將全部狀態(tài)寫入內(nèi)存將全部狀態(tài)寫入內(nèi)存FRSTORFRSTOR從內(nèi)存復(fù)原機(jī)器狀態(tài)從內(nèi)存復(fù)原機(jī)器狀態(tài)FSTENV/FSTENV/FNSTENVFNSTENV存儲(chǔ)協(xié)處理器環(huán)境存儲(chǔ)協(xié)處理器環(huán)境FLDENVFLDENV裝入由裝入由FSTENV/FSTENV/FNSTE

58、NVFNSTENV保存的環(huán)境保存的環(huán)境FINCSTFINCST堆棧棧頂指針增值堆棧棧頂指針增值FDECSTPFDECSTP堆棧棧頂指針減值堆棧棧頂指針減值FFREEFFREE釋放浮點(diǎn)寄存器釋放浮點(diǎn)寄存器FNOPFNOP空操作空操作FWAITFWAIT使微處理器等待協(xié)處理器完成一個(gè)操作使微處理器等待協(xié)處理器完成一個(gè)操作表表3.153.15處理器控制指令處理器控制指令普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.3 IA-32結(jié)構(gòu)微處理器的指令系統(tǒng)的發(fā)展 IA-32(Intel Architechure-32 英特爾32位體系架構(gòu))的X86系列處理器是采用了Intel

59、X86指令集的處理器,X86指令集是Intel公司為其第一塊16位處理器Intel 8086所專門開發(fā)的。Intel和AMD的桌面級(jí)處理器在X86指令集的基礎(chǔ)上,為了提升處理器各方面的性能,所以又各自開發(fā)和擴(kuò)展了新的指令集。 MMX指令集 MMX(Multi Media eXtension 多媒體擴(kuò)展指令)指令集是Intel公司在1996年為Pentium系列處理器所開發(fā)的多媒體指令增強(qiáng)技術(shù)。MMX指令集中包括了57條多媒體指令。 SSE指令集 SSE指令集是Intel在Pentium III處理器平臺(tái)上為提高處理器浮點(diǎn)性能而開發(fā)的擴(kuò)展指令集,該指令集共有70條指令。普通高等教育普通高等教育“

60、十一五十一五”國(guó)家級(jí)規(guī)劃教材國(guó)家級(jí)規(guī)劃教材 3.3 IA-32結(jié)構(gòu)微處理器的指令系統(tǒng)的發(fā)展 SSE2指令集 SSE2指令集是Intel在SSE的基礎(chǔ)上所推出的一組更先進(jìn)的指令集。SSE2包含了144條指令,由兩個(gè)部分組成:SSE部分和MMX部分。 SSE3指令集 SSE3指令是目前規(guī)模最小的指令集,它只有13條指令?;赑rescott核心的Intel Pentium 4支持該指令集。 SSE4指令集 SSE4指令集是Intel為酷睿2架構(gòu)處理器所引入的新指令集。SSE4指令集共包括16條指令,支持高級(jí)解碼、擁有預(yù)處理和增強(qiáng)型3D處理能力。普通高等教育普通高等教育“十一五十一五”國(guó)家級(jí)規(guī)劃教材

溫馨提示

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