計算機(jī)指令系統(tǒng)_第1頁
計算機(jī)指令系統(tǒng)_第2頁
計算機(jī)指令系統(tǒng)_第3頁
計算機(jī)指令系統(tǒng)_第4頁
計算機(jī)指令系統(tǒng)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

XCHG堆棧操作指令:

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

加、減邏輯運算指令:

與、或

移位指令

:左右移

程序控制類指令

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

Reg/Mem,Reg/Mem/Imm

其中:Reg—Register(寄存器),Mem—Memory(存儲器),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)行存儲。第二節(jié)指令與CPU資源一、傳送指令MOV把?送到?1、立即數(shù)尋址方式MOV

Reg/Mem,Imm

例如:MOVAH,80H

ADDAX,1234H

MOVB1,12H

MOVW1,3456H

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

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

Reg,Reg

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

MOVAX,BX

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

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

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

Reg,[SReg]

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

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

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

(2)舉例

MOVAX,[SI]

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

MOV

Reg,[Sreg+Imm]

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

(2)舉例

MOVAX,[SI+100H]

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

XCHG

Reg/Mem,Reg/Mem

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

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

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

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

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

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

Reg,Mem例如:…POINTER

DD

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

Reg/Mem

PUSH

Imm

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

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

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

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

Reg/Mem

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

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

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

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

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

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

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

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

Reg/Mem,Reg/Mem/Imm

受影響的資源寄存器,運算器,存儲器,總線6、邏輯或操作指令OR

指令的格式:OR

Reg/Mem,Reg/Mem/Imm

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

Reg/Mem

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

Reg/Mem,Reg/Mem/Imm9、求補(bǔ)碼指令NEGReg/Mem第二節(jié)指令與CPU資源二、運算指令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資源二、運算指令11、比較運算指令CMP:指令格式CMP

Reg/Mem,Reg/Mem/Imm

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

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

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

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

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

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

XOR AX,AX累加器AX清零

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

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

XOR AX,AX累加器AX清零

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論