計(jì)算機(jī)指令系統(tǒng)_第1頁(yè)
計(jì)算機(jī)指令系統(tǒng)_第2頁(yè)
計(jì)算機(jī)指令系統(tǒng)_第3頁(yè)
計(jì)算機(jī)指令系統(tǒng)_第4頁(yè)
計(jì)算機(jī)指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

第四章計(jì)算機(jī)指令系統(tǒng)對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)信息學(xué)院第一節(jié)指令系統(tǒng)計(jì)算機(jī)指令計(jì)算機(jī)的程序是由一系列機(jī)器指令組成的。指令就是要計(jì)算機(jī)執(zhí)行某種操作的命令。第一節(jié)指令系統(tǒng)計(jì)算機(jī)指令集一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合,稱為這臺(tái)計(jì)算機(jī)的指令系統(tǒng)。第一節(jié)指令系統(tǒng)計(jì)算機(jī)指令系統(tǒng)類型復(fù)雜指令計(jì)算機(jī)系統(tǒng)CISC不斷增加可實(shí)現(xiàn)復(fù)雜功能的指令和多種靈活的編址方式,甚至某些指令可支持高級(jí)語(yǔ)言語(yǔ)句歸類后的復(fù)雜操作。一般CISC計(jì)算機(jī)所含的指令數(shù)目至少300條以上,有的甚至超過(guò)500條。VAX11/780計(jì)算機(jī)有303條指令,18種尋址方式。Pentium機(jī)也有191條指令,9種尋址方式。第一節(jié)指令系統(tǒng)RISC

特點(diǎn)(采用流水線技術(shù))簡(jiǎn)單而統(tǒng)一格式的指令譯碼;大部分指令可以單周期執(zhí)行只有LOAD/STORE可以訪問(wèn)存儲(chǔ)器簡(jiǎn)單的尋址方式采用延遲轉(zhuǎn)移技術(shù)采用LOAD延遲技術(shù)三地址指令格式較多的寄存器對(duì)稱的指令格式第一節(jié)指令系統(tǒng)精簡(jiǎn)指令MIPS所有運(yùn)算使用的數(shù)據(jù)都來(lái)自寄存器;訪問(wèn)存儲(chǔ)器的指令只有讀存儲(chǔ)器數(shù)據(jù)到寄存器和從寄存器寫數(shù)據(jù)到存儲(chǔ)器;指令長(zhǎng)度一致。指令位數(shù)和執(zhí)行周期都相同。第一節(jié)指令系統(tǒng)計(jì)算機(jī)指令系統(tǒng)類型CISC與RISC的比較

RISC和CISC各有優(yōu)勢(shì),而且界限并不那么明顯?,F(xiàn)代的CPU往往采用CISC的外圍,內(nèi)部加入了RISC的特性,如超長(zhǎng)指令集CPU就是融合了RISC和CISC的優(yōu)勢(shì),成為未來(lái)的CPU發(fā)展方向之一。第一節(jié)指令系統(tǒng)指令系統(tǒng)的要求完備性:完備性是指用匯編語(yǔ)言(機(jī)器指令)可以編寫任何種程序。有效性:有效性是指利用該指令系統(tǒng)所編寫的程序能夠高效率地運(yùn)行。兼容性:系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和共同的基本指令集,因而指令系統(tǒng)是兼容的,即各機(jī)種上基本軟件可以通用。指令的表現(xiàn)形式是機(jī)器語(yǔ)言,機(jī)器語(yǔ)言一般通過(guò)匯編來(lái)書寫。第一節(jié)指令系統(tǒng)高級(jí)語(yǔ)言和低級(jí)語(yǔ)言高級(jí)語(yǔ)言如C,Java等,其語(yǔ)句和用法與具體機(jī)器的指令系統(tǒng)無(wú)關(guān)。低級(jí)語(yǔ)言分機(jī)器語(yǔ)言(二進(jìn)制語(yǔ)言)和匯編語(yǔ)言(符號(hào)語(yǔ)言),這兩種語(yǔ)言都是面向機(jī)器的語(yǔ)言,它們和具體機(jī)器的指令系統(tǒng)密切相關(guān)。第一節(jié)指令系統(tǒng)高級(jí)語(yǔ)言和低級(jí)語(yǔ)言比較高級(jí)語(yǔ)言匯編語(yǔ)言MIPSA=b+cAdda,b,cA=b-cSuba,b,cA=b+c-dSubt,c-dAdda,b,t第一節(jié)指令系統(tǒng)指令的三種類型ALU運(yùn)算指令無(wú)論是兩個(gè)寄存器間的運(yùn)算,還是一個(gè)寄存器和一個(gè)立即數(shù)間的運(yùn)算,本質(zhì)上都是兩個(gè)寄存器間的運(yùn)算,結(jié)果存入第三個(gè)寄存器;存取數(shù)據(jù)指令寄存器地址和存儲(chǔ)器地址(間址或變址)轉(zhuǎn)移和跳轉(zhuǎn)指令無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移第一節(jié)指令系統(tǒng)指令的基本結(jié)構(gòu)指令由2部分組成:操作碼和操作數(shù)操作碼——回答作什么指令的操作碼OP表示該指令應(yīng)進(jìn)行什么性質(zhì)的操作,如進(jìn)行加法、減法、乘法、除法、取數(shù)、存數(shù)等等。不同的指令用操作碼的不同編碼來(lái)表示,每一種編碼代表一種指令。如00001表示加法,00010表示作減法運(yùn)算。

第一節(jié)指令系統(tǒng)操作碼:組成操作碼字段的位數(shù)一般取決于計(jì)算機(jī)指令系統(tǒng)的規(guī)模。較大的指令系統(tǒng)就需要更多的位數(shù)來(lái)表示每條特定的指令如IBM370機(jī),有183條指令;指令的操作碼需要8位。第一節(jié)指令系統(tǒng)指令的基本結(jié)構(gòu)指令由2部分組成:操作碼和操作數(shù)操作數(shù)——存放二進(jìn)制數(shù)的寄存器或存儲(chǔ)器一般指令包括0—3個(gè)操作數(shù)(0,1,2,3),每個(gè)操作數(shù)是由寄存器名或地址數(shù)值組成(與尋址方式有關(guān))為存儲(chǔ)、讀寫方便,指令選擇字節(jié)的整數(shù)倍。第一節(jié)指令系統(tǒng)編碼方式0操作數(shù)指令(只有操作碼)計(jì)算機(jī)重新啟動(dòng)指令reset停機(jī)指令stop,halt,空操作nop指令格式為:操作碼OP1操作數(shù)(地址)指令如自動(dòng)“+1”、“-1”、“求反”,跳轉(zhuǎn)jmp01指令格式為:操作碼OP地址

第一節(jié)指令系統(tǒng)2操作數(shù)指令一個(gè)存儲(chǔ)單元的數(shù)加上另一個(gè)存儲(chǔ)單元addA,B,或addA,10或addA,(10)指令格式操作碼OP第一操作數(shù)A1第二操作數(shù)A2二地址指令在計(jì)算機(jī)中得到了廣泛的應(yīng)用,但是在使用時(shí)有一點(diǎn)必須注意:指令執(zhí)行之后,A1中原存的內(nèi)容已經(jīng)被新的運(yùn)算結(jié)果替換了。第一節(jié)指令系統(tǒng)操作數(shù)類型地址數(shù)據(jù):存儲(chǔ)器地址、寄存器地址,實(shí)際上都是一種形式的數(shù)據(jù)。數(shù)值數(shù)據(jù):計(jì)算機(jī)中使用的數(shù)值數(shù)據(jù)。指令長(zhǎng)度

指令字長(zhǎng)度:一個(gè)指令字包含二進(jìn)制代碼的位數(shù)。單字長(zhǎng)指令,半字長(zhǎng)指令,雙字長(zhǎng)指令機(jī)器字長(zhǎng):計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù)。指令助記符——匯編語(yǔ)言用3~4個(gè)英文字母來(lái)表示操作碼,操作地址可以是部件名,也可以是數(shù)字地址。必須用匯編語(yǔ)言翻譯成二進(jìn)制代碼才能工作Pentium指令格式

指令長(zhǎng)度可變,最短1個(gè)字節(jié),最長(zhǎng)12個(gè)字節(jié),典型的CISC指令系統(tǒng)

指令系統(tǒng)—RISCMIPS指令格式數(shù)據(jù)加載/存儲(chǔ)LDR1,30(R2)雙字載入,偏移30LWR1,60(R2)字載入,偏移60LBR1,40(R3)字節(jié)載入,偏移40LHR1,100(R3)半字載入,偏移100SDR1,500(R4)雙字節(jié)存儲(chǔ)。。。。。。。指令系統(tǒng)—RISCMIPS指令格式運(yùn)算指令(加減與或、移位)DADDUR1,R2,R3無(wú)符號(hào)加,結(jié)果送R1DADDIUR1,R2,#5(R2)+5結(jié)果送到R1DSLLR1,R3,#5(R3)左移5位結(jié)果送到R1。。。。。。。指令系統(tǒng)—RISCMIPS指令格式控制指令Jname無(wú)條件跳轉(zhuǎn),name送PCBEQZR6,nameifR6=0,name送PCBNER7,R3,nameR7!=R3時(shí)name送PCCallret。。。。。。。指令系統(tǒng)——CISCX86指令格式數(shù)據(jù)傳送類指令一般傳送指令:

MOVAX,BX數(shù)據(jù)交換指令:

XCHG堆棧操作指令:

PUSH,POP運(yùn)算類指令算術(shù)運(yùn)算指令:

加、減邏輯運(yùn)算指令:

與、或

移位指令

:左右移

程序控制類指令

程序控制類指令用于控制程序的執(zhí)行方向,并使程序具有測(cè)試、分析與判斷的能力。指令系統(tǒng)指令的使用率Load26%Store10%Add 19%Compare5%Branch12%Or 9%第二節(jié)指令(匯編語(yǔ)言)與CPU資源計(jì)算機(jī)指令要通過(guò)CPU的硬件資源來(lái)實(shí)現(xiàn)其命令,計(jì)算機(jī)CPU的結(jié)構(gòu)與指令密切相關(guān),計(jì)算機(jī)指令是通過(guò)匯編語(yǔ)言表達(dá)的。本節(jié)介紹X86匯編語(yǔ)言與CPU內(nèi)部資源、存儲(chǔ)器的關(guān)系。通用16位寄存器4個(gè)AX、BX、CX和DX通用32位寄存器4個(gè)EAX、EBX、ECX和EDX第二節(jié)指令與CPU資源一、傳送指令傳送指令是使用最頻繁的指令,它相對(duì)于高級(jí)語(yǔ)言里的賦值語(yǔ)句。指令的格式如下:MOV

Reg/Mem,Reg/Mem/Imm

其中:Reg—Register(寄存器),Mem—Memory(存儲(chǔ)器),Imm—Immediate(立即數(shù)),它們可以是8位、16位或32位(特別指出其位數(shù)的除外)。第二節(jié)指令與CPU資源一、傳送指令1、立即數(shù)尋址方式MOV

Reg/Mem,Imm

操作數(shù)作為指令的一部分而直接寫在指令中,這種操作數(shù)稱為立即數(shù),這種尋址方式也就稱為立即數(shù)尋址方式。立即數(shù)可以是8位、16位或32位,該數(shù)值緊跟在操作碼之后。如果立即數(shù)為16位或32位,那么,它將按“高高低低”的原則進(jìn)行存儲(chǔ)。第二節(jié)指令與CPU資源一、傳送指令MOV把?送到?1、立即數(shù)尋址方式MOV

Reg/Mem,Imm

例如:MOVAH,80H

ADDAX,1234H

MOVB1,12H

MOVW1,3456H

其中:B1、W1和D1分別是字節(jié)、字單元。第二操作數(shù)都是立即數(shù),在匯編語(yǔ)言中,規(guī)定:立即數(shù)不能作為指令中的第一操作數(shù)。立即數(shù)尋址方式通常用于對(duì)通用寄存器或內(nèi)存單元賦初值。地址、數(shù)據(jù)總線

。需要這條指令嗎?第二節(jié)指令與CPU資源一、傳送指令2、寄存器尋址方式MOV

Reg,Reg

指令所要的操作數(shù)存儲(chǔ)在cpu內(nèi)部寄存器中。在指令中指出所使用寄存器(即:寄存器的助憶符)的尋址方式稱為寄存器尋址方式。源和目的操作數(shù)都是寄存器尋址方式如:MOVEAX,EBX

MOVAX,BX

MOVDH,BL等。需要寄存器,2條地址總線和數(shù)據(jù)線。第二節(jié)指令與CPU資源一、傳送指令3、直接尋址方式MOV

Reg,Mem指令所要的操作數(shù)存放在內(nèi)存中,在指令中直接給出該操作數(shù)的有效地址,這種尋址方式為直接尋址方式。源操作數(shù)是存儲(chǔ)單元

內(nèi)存地址太長(zhǎng),物理地址將由數(shù)據(jù)段寄存器DS和指令中給出的有效地址直接形成。X86系統(tǒng)寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH中的任一個(gè);對(duì)16位操作數(shù),寄存器可以是AX,BX,CX,DX,SI,DI,SP或BP之一。第二節(jié)指令與CPU資源一、傳送指令3、直接尋址方式假設(shè)有指令:MOVBX,[1234H],在執(zhí)行時(shí),(DS)=2000H,內(nèi)存單元21234H的值為5213H。問(wèn)該指令執(zhí)行后,BX的值是什么?寄存器、寄存器、存儲(chǔ)器、2寄存器地址總線,存儲(chǔ)器地址和數(shù)據(jù)總線。第二節(jié)指令與CPU資源一、傳送指令4.間接尋址MOV

Reg,[SReg]

間接尋址方式的操作數(shù)在存儲(chǔ)器中。

操作數(shù)地址的偏移量包含在特殊寄存器BX,BP,SI和DI之一中。

數(shù)據(jù)段寄存器DS加上SI,DI,BX中的偏移量為操作數(shù)的地址。PA=[DS]16+[SI]

(2)舉例

MOVAX,[SI]

寄存器,移位寄存器,加法器,地址總線,數(shù)據(jù)總線第二節(jié)指令與CPU資源一、傳送指令5.相對(duì)尋址方式

MOV

Reg,[Sreg+Imm]

操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)或變址寄存器(SI、DI)的內(nèi)容和指令中的偏移量之和。

(2)舉例

MOVAX,[SI+100H]

寄存器,移位寄存器,加法器,地址總線,數(shù)據(jù)總線第二節(jié)指令與CPU資源一、傳送指令6.交換指令

XCHG

Reg/Mem,Reg/Mem

該指令的功能和MOV指令不同,后者是一個(gè)操作數(shù)的內(nèi)容被修改,而前者是兩個(gè)操作數(shù)都會(huì)發(fā)生改變。

(2)已知:AX=5678H,BX=1234H,指令XCHG

AX,BX執(zhí)行后,AX和BX的值是什么?

解:這是兩個(gè)寄存器內(nèi)容進(jìn)行交換,指令執(zhí)行后,有:(AX)=1234H,(BX)=5678H。

第二節(jié)指令與CPU資源一、傳送指令7.取有效地址指令LEA指令LEA是把一個(gè)內(nèi)存變量的有效地址送給指定的寄存器。其指令格式如下:LEA

Reg,Mem該指令通常用來(lái)對(duì)指針或變址寄存器BX、DI或SI等置初值之用。第二節(jié)指令與CPU資源一、傳送指令8.取段寄存器指令該組指令的功能是把內(nèi)存單元的一個(gè)“低字”傳送給指令中指定的16位寄存器,把隨后的一個(gè)“高字”傳給相應(yīng)的段寄存器(DS、ES、FS、GS和SS)。其指令格式如下:LDS/LES/LFS/LGS/LSS

Reg,Mem例如:…POINTER

DD

12345678H…LDS BX,POINTER…第二節(jié)指令與CPU資源一、傳送指令9.堆棧操作指令堆棧是一個(gè)重要的數(shù)據(jù)結(jié)構(gòu),它具有“先進(jìn)后出”的特點(diǎn),通常用來(lái)保存程序的返回地址。它主要有兩大類操作:進(jìn)棧操作和出棧操作。1)、進(jìn)棧操作、PUSH指令格式:PUSH

Reg/Mem

PUSH

Imm

PUSHA第二節(jié)指令與CPU資源一、傳送指令9.堆棧操作指令2)POP指令格式:POP

Reg/Mem彈出一個(gè)字,系統(tǒng)自動(dòng)完成兩步操作:操作數(shù)←(SP),SP←SP-2;彈出一個(gè)雙字,系統(tǒng)自動(dòng)完成兩步操作:操作數(shù)←(ESP),ESP←ESP-4。、POPA第二節(jié)指令與CPU資源二、運(yùn)算指令1、加法指令指令的格式:操作 目的操作數(shù),源操作數(shù)ADD

Reg/Mem,Reg/Mem/Imm指令的功能是把源操作數(shù)的值加到目的操作數(shù)中,結(jié)果存在目的操作數(shù)中。使用的資源寄存器,運(yùn)算器,存儲(chǔ)器,總線第二節(jié)指令與CPU資源二、運(yùn)算指令2、加1指令I(lǐng)NC

指令的格式:操作 目的操作數(shù)INC

Reg/Mem

指令的功能是把操作數(shù)的值加1

。使用的資源寄存器,運(yùn)算器,存儲(chǔ)器,總線第二節(jié)指令與CPU資源二、運(yùn)算指令例3已知有二個(gè)16位數(shù)d1和d2(用數(shù)據(jù)類型DD說(shuō)明),編寫程序片段把d2的值加到d1中。MOV AX,d1ADD AX,d2MOV d1,AX第二節(jié)指令與CPU資源二、運(yùn)算指令3、減法指令指令的格式:操作 目的操作數(shù),源操作數(shù)SUB

Reg/Mem,Reg/Mem/Imm指令的功能是從目的操作數(shù)中減去源操作數(shù),結(jié)果放在目的操作數(shù)中。

第二節(jié)指令與CPU資源二、運(yùn)算指令4、減1指令DEC指令的格式:

操作 目的操作數(shù)DEC

Reg/Mem指令的功能是從目的操作數(shù)中減去1。

第二節(jié)指令與CPU資源二、運(yùn)算指令例

已知有二個(gè)數(shù)d1和d2,編寫程序片段從d1中減去d2的值。MOV AX,d1SUB AX,d2MOV d1,AX第二節(jié)指令與CPU資源二、運(yùn)算指令5、邏輯與操作指令指令的格式:AND

Reg/Mem,Reg/Mem/Imm

受影響的資源寄存器,運(yùn)算器,存儲(chǔ)器,總線6、邏輯或操作指令OR

指令的格式:OR

Reg/Mem,Reg/Mem/Imm

第二節(jié)指令與CPU資源二、運(yùn)算指令7、邏輯非操作指令指令的格式:NOT

Reg/Mem

受影響的資源寄存器,存儲(chǔ)器,總線8、邏輯異或操作指令指令的格式:XOR

Reg/Mem,Reg/Mem/Imm9、求補(bǔ)碼指令NEGReg/Mem第二節(jié)指令與CPU資源二、運(yùn)算指令10、算術(shù)移位指令:算術(shù)左移SAL(ShiftAlgebraicLeft)和算術(shù)右移SAR(ShiftAlgebraicRight)。它們的指令格式如下:SAL/SAR

Reg/Mem,CL/Imm

最低/高位補(bǔ)0。操作數(shù)的初值執(zhí)行的指令執(zhí)行后操作數(shù)的內(nèi)容(AH)=12HSAL

AH,1(AH)=24H(AH)=12HSAR

AH,1(AH)=09H第二節(jié)指令與CPU資源二、運(yùn)算指令11、比較運(yùn)算指令CMP:指令格式CMP

Reg/Mem,Reg/Mem/Imm

指令的功能:用第二個(gè)操作數(shù)去減第一個(gè)操作數(shù),并根據(jù)所得的差設(shè)置有關(guān)標(biāo)志位,為隨后的條件轉(zhuǎn)移指令提供條件。但并不保存該差,所以,不會(huì)改變指令中的操作數(shù)。

第二節(jié)指令與CPU資源三、控制指令(轉(zhuǎn)移指令)1、循環(huán)指令循環(huán)指令LOOP格式:LOOP標(biāo)號(hào)

標(biāo)號(hào)是指令地址的標(biāo)志符號(hào)。有了標(biāo)號(hào),當(dāng)程序中的其他語(yǔ)句跳轉(zhuǎn)該語(yǔ)句時(shí)就不需要寫具體語(yǔ)句地址了。

循環(huán)指令的功能描述:循環(huán)指令LOOP的功能

(CX)=(CX)-1或(ECX)=(ECX)-1;如果(CX)≠0或(ECX)≠0,轉(zhuǎn)向“標(biāo)號(hào)”所指向的指令,否則,終止循環(huán),執(zhí)行該指令下面的指令。第二節(jié)指令與CPU資源三、控制指令(轉(zhuǎn)移指令)例

編寫一段程序,求1+2+…+1000之和,并把結(jié)果存入AX中。解:方法1:因?yàn)橛?jì)數(shù)器CX只能遞減,所以,可把求和式子改變?yōu)椋?000+…+1。

XOR AX,AX累加器AX清零

MOVCX,1000Dagain:ADDAX,CX;計(jì)算過(guò)程:1000+…+1LOOPagain第二節(jié)指令與CPU資源三、控制指令(轉(zhuǎn)移指令)例

編寫一段程序,求1+2+…+1000之和,并把結(jié)果存入AX中。解:方法2:不用循環(huán)計(jì)數(shù)器進(jìn)行累加,求和式子仍為:1+2+…+999+1000。

XOR AX,AX累加器AX清零

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論