指令系統(tǒng)課件_第1頁
指令系統(tǒng)課件_第2頁
指令系統(tǒng)課件_第3頁
指令系統(tǒng)課件_第4頁
指令系統(tǒng)課件_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章指令系統(tǒng)5.1指令系統(tǒng)的發(fā)展5.2指令格式5.3數(shù)據(jù)表示5.4尋址方式(編址方式)5.5指令類型5.6指令系統(tǒng)的兼容性(略)5.7RISC和CISC(略)5.8指令系統(tǒng)舉例(略)5.9機器語言、匯編語言和高級語言(略)第5章指令系統(tǒng)5.1指令系統(tǒng)的發(fā)展1學(xué)習(xí)目的1.了解指令格式、數(shù)據(jù)表示。2.掌握不同尋址方式(編址方式)中部件之間的動作關(guān)系,可能的時間分配。3.了解指令類型、指令系統(tǒng)的兼容性和精簡指令系統(tǒng)計算機(RISC)、復(fù)雜指令系統(tǒng)計算機(CISC)的有關(guān)概念、特性等。學(xué)習(xí)目的2本章重難點1、指令系統(tǒng)的定義、作用2、指令格式3、尋址方式本章重難點1、指令系統(tǒng)的定義、作用35.1指令系統(tǒng)的發(fā)展

計算機系統(tǒng):硬件(hardware)+軟件(software)

硬件:中央處理機(CPU)、存儲器、外部設(shè)備軟件:程序(最終轉(zhuǎn)換成一系列機器指令后在計算機上執(zhí)行)指令系統(tǒng)的定義:一臺計算機能直接識別并執(zhí)行的機器指令的集合。指令系統(tǒng)的作用:指令系統(tǒng)是硬件設(shè)計的任務(wù)書,是軟件設(shè)計的基礎(chǔ),與計算機的性能有密切關(guān)系。計算機系統(tǒng):硬件(hardware)+軟件(so4

1.20世紀50年代和60年代早期:

指令系統(tǒng)一般只有定點加減、邏輯運算、數(shù)據(jù)傳送和轉(zhuǎn)移等十幾至幾十條最基本的指令,而且尋址方式簡單。2.到60年代中、后期:

除了具有以上最基本的指令以外,還設(shè)置了乘除法運算指令、浮點運算指令、十進制運算指令以及字符串處理指令等,指令數(shù)多達一、二百條,尋址方式也趨于多樣化。3.

60年代出現(xiàn)了系列(series)計算機。

原因:為了繼承已有的軟件,減少軟件的開發(fā)費用.

系列計算機:是指基本指令系統(tǒng)相同,基本體系結(jié)構(gòu)相同的一系列計算機。

如IBM370系列,VAX—11系列,IBMPC(XT/AT/286/386/486/Pentium)微機系列等。優(yōu)點:在舊機種上運行各種軟件可以不加任何修改地在新機種上運行。(向下兼容)1.20世紀50年代和60年代早期:5隨著VLSI技術(shù)的發(fā)展,硬件結(jié)構(gòu)越來越復(fù)雜,所支持的指令系統(tǒng)也趨于多用途、強功能化。指令系統(tǒng)的改進是圍繞著縮小指令與高級語言的語義差異以及有利于操作系統(tǒng)的優(yōu)化而進行的。

CISC(復(fù)雜指令系統(tǒng)計算機)的問題:

(1)設(shè)計周期長,正確性難以保證且不易維護等;(2)需要大量硬件支持的大多數(shù)較復(fù)雜的指令卻利用率很低,造成硬件資源的極大浪費。

為了解決這個問題,在70年代末人們提出了便于VLSI實現(xiàn)的精簡指令系統(tǒng)計算機,簡稱RISC(精簡指令系統(tǒng)計算機)。

CISC:ComplexinstructionsetcomputerRISC:reduced

instructionsetcomputer隨著VLSI技術(shù)的發(fā)展,硬件結(jié)構(gòu)越來越復(fù)雜,所支持的指令65.2指令格式

計算機的指令格式與機器的字長、存儲器的容量及指令的功能都有很大的關(guān)系。

設(shè)計指令格式的要求:

(1)使指令能給出足夠的信息(2)其長度又盡可能地與機器的字長相匹配,以便節(jié)省存儲空間,縮短取指時間,提高機器的性能。5.2指令格式計算機的指令格式與機器的字7

5.2.1指令格式一條指令就是要機器語言的一個語句,它是一組有意義的二進制代碼,通常提供兩方面的信息:一是指明操作的性質(zhì)及功能,這一部分稱為操作碼。二是給出與操作數(shù)有關(guān)的信息,如:直接給出操作數(shù)本身或指明操作數(shù)的地址等。因為大多數(shù)情況下,指令中給出的是操作數(shù)的地址,因此,這一部分稱為地址碼。

指令的基本格式為:

操作碼字段地址碼字段5.2.1指令格式一8二.地址碼結(jié)構(gòu)計算機執(zhí)行一條指令所需要的全部信息都必須包含在指令中,對于一般的指令來說,除去操作碼(OP)之外,指令還應(yīng)包含以下信息:(1)第一操作數(shù)地址,用A1表示(2)第二操作數(shù)地址,用A2表示(3)操作結(jié)果存放地址,用A3表示(4)下條將要執(zhí)行指令的地址,用A4表示這些信息可以在指令中明顯給出,稱為顯地址,也可依照某種事先的約定,用隱含方式給出,稱為隱地址。下面介紹幾種指令格式。二.地址碼結(jié)構(gòu)91.四地址指令

前述的四個地址信息在地址碼字段中明顯給出。格式:含義:(A1)OP(A2)A3(A4)=下一條將要執(zhí)行指令的地址說明:(Ai)表示存放在一地址Ai中的內(nèi)容優(yōu)點:直觀,下條指令的地址明顯,不適合轉(zhuǎn)移指令缺點:指令太長,因為直接給出了后繼指令地址,程序不能根據(jù)操作結(jié)果靈活轉(zhuǎn)移,這種格式不切實際。OPA1A2A3A41.四地址指令前述的四個地址信息在地址碼字段中明顯給出。102.三地址指令

執(zhí)行程序時,大多數(shù)指令按順序從主存中逐條取出執(zhí)行,只有遇到轉(zhuǎn)移指令時,程序的執(zhí)行順序才會改變。為了壓縮指令的長度,要以用一個程序計數(shù)器PC(programcounter)來存放指令地址。每執(zhí)行一條指令,PC就自動加1(該指令只占一個主存單元),指出將要執(zhí)行的下一條指令,當遇到執(zhí)行轉(zhuǎn)移指令時,則用轉(zhuǎn)移地址修改PC的內(nèi)容,這樣,指令中就不必給出A4了。

格式:

含義:(A1)OP(A2)A3(PC)+1PC(隱含)

特點:指令仍然很長,只在字長較長的大、中型機中使用,而小型、微型機中很少使用。OPA1A2A32.三地址指令執(zhí)行程序時,大多數(shù)指令按順113.二地址指令三地址指令執(zhí)行完后,主存的兩個操作數(shù)均不會被破壞,可供再次使用,然而通常不一定要完全保留兩個操作數(shù)。例:把第一操作數(shù)地址同時兼作存放結(jié)果的地址,這樣即可得到二地址指令。

格式:

含義:(A1)OP(A2)A1(PC)+1PC(隱含)A1:目的操作數(shù)地址A2:源操作數(shù)地址特點:二地址指令在計算機中得到廣泛的應(yīng)用,但要注意:指令執(zhí)行之后,目的操作數(shù)地址中原存的內(nèi)容已被破壞了。例:MOVAL,BLOPA1A23.二地址指令三地址指令執(zhí)行完后,主存的兩個操作數(shù)均不會被124.一地址指令(1)格式:(2)功能:1)單操作數(shù)運算A1既是操作數(shù)的地址,又是結(jié)果存放的地址。例:+1、-1、求反等

含義:OP(A1)A1(PC)+1

PC(隱含)例:INCALDECCL2)雙操作數(shù)約定:隱含的一個操作數(shù)放在一個專用寄存中(AC-累加器)

含義:(AC)OP(A1)(AC)(PC)+1

PC(隱含)例:MULBL((AL)*(BL)(AX))OPA14.一地址指令(1)格式:OPA1135.零地址指令格式:無操作數(shù):如空操作NOP、停機指令HLT

默認操作數(shù):如讀取標志指令LAHF,將標志寄存器FLAG的低8位送到AH寄存器中。

OP5.零地址指令格式:OP14

適應(yīng)范圍:零地址、一地址和兩地址指令具有指令短,執(zhí)行速度快,硬件實現(xiàn)簡單等特點,多為結(jié)構(gòu)較簡單,字長較短的小型、微型機所采用;而兩地址、三地址和多地址指令具有功能強,便于編程等特點,多為字長較長的大、中型機所采用。指令和數(shù)據(jù)的聯(lián)系和區(qū)別:聯(lián)系:都是以二進制碼的形式存儲的。區(qū)別:指令的地址是由程序計數(shù)器(PC)規(guī)定的,而數(shù)據(jù)的地址是由指令規(guī)定的。在程序執(zhí)行過程中,要避免修改指令,但可以修改數(shù)據(jù)。適應(yīng)范圍:指令和數(shù)據(jù)的聯(lián)系和區(qū)別:15一.指令字長定長指令:便于控制變長指令:合理利用存儲空間二.操作碼格式

指令系統(tǒng)中的每一條指令都有一個唯一確定的操作碼,指令不同,其操作碼的編碼也不同。為了能表示整個指令系統(tǒng)的全部指令,指令的操作碼字段應(yīng)當具有足夠的位數(shù)。假定:指令系統(tǒng)有m條指令,指令的操作碼字段的位數(shù)有N位,則m2N,即Nlog2m.我們希望用盡可能短的操作碼字段來表達全部的指令。指令操作碼的編碼可以分為以下兩種形式。5.2.2指令操作碼的擴展技術(shù)5.2.2指令操作碼的擴展技術(shù)161.定長操作碼各指令的操作碼的位置、位數(shù)固定相同(即操作碼的長度固定,且集中放在指令字的一個字段中)。

特點:這種格式對于簡化硬件設(shè)計,減少指令譯碼時間非常有利,在字長較長的大、中型機和超級小型機以及RISC上廣泛采用。2.擴展操作碼(變長)

各指令操作碼的位置、位數(shù)不固定,根據(jù)需要變化(即操作碼的長度可變,且分散得放在指令字的不同字段中)。特點:這種格式能夠有效地壓縮程序中操作碼的平均長度,在字長較短的微型機上廣泛采用。如Z80、Intel8086/Pentium等,操作碼的長度都是可變的。1.定長操作碼2.擴展操作碼(變長)17例.(方法一)指令字長16位,可含有3、2、1或0個地址,每個地址占4位。(見教材P130~131)操作碼地址碼15~1211~87~43~00000X

YZ

1110XYZ............11110000Y

Z1111

1110Y

Z............三地址指令15條二地址指令15條1111

11110000Z111111111110Z............一地址指令15條1111

1111

1111000011111111

11111111............零地址指令16條可表示61條指令例.(方法一)指令字長16位,可含有3、2、1或0個地址,18例.(方法二)指令字長16位,可含有3、2、1或0個地址,每個地址占4位。(見教材P130~131)操作碼地址碼15~1211~87~43~00000X

YZ

1110XYZ............11110000Y

Z1111

1101Y

Z............三地址指令15條二地址指令14條1111

11100000Z111111111110Z............一地址指令31條1111

1111

1111000011111111

11111111............零地址指令16條可表示76條指令例.(方法二)指令字長16位,可含有3、2、1或0個地址,19

可變長度的指令系統(tǒng)的設(shè)計,到底使用何種擴展方法有一個重要的原則:

就是使用頻度(即指令在程序中的出現(xiàn)概率)高的指令應(yīng)分配短的操作碼;使用頻度低的指令相應(yīng)地分配較長的操作碼。(霍夫曼編碼法)

作用:有效地縮短操作碼在程序中的平均長度,節(jié)省存儲器空間,縮短了經(jīng)常使用的指令的譯碼時間,因而可以提高程序的運行速度??勺冮L度的指令系統(tǒng)的設(shè)計,到底使用何種擴展20假某計算機模型:7條指令(I1~I7),程序中出現(xiàn)的概率用Pi表示,則可考慮表5.1所示的方案,這就是擴展操作碼,使用頻率高的指令的操作碼為2位,低的用4位。這不是壓縮到最小代碼的方案,因為在計算機中的操作碼還是希望有一定的規(guī)整性,否則會引起硬件實現(xiàn)的復(fù)雜化。另外,內(nèi)存中存放的指令長度一般是字節(jié)的整數(shù)倍,所以操作碼與地址碼兩部分長度之和是字節(jié)的整數(shù)倍。在考慮OP長度時還要考慮地址碼的要求。假某計算機模型:7條指令(I1~I7),程序中出現(xiàn)的概率用P21由此可見,操作碼擴展技術(shù)是一種重要的指令優(yōu)化技術(shù),它可以縮短指令的平均長度,減少程序的總位數(shù)以及增加指令字所能表示的操作信息。當然,擴展操作碼比固定操作碼譯碼復(fù)雜,使控制器的設(shè)計難度增大,且需更多的硬件來支持。由此可見,操作碼擴展技術(shù)是一種重要的指令優(yōu)化技術(shù),它可以225.2.3指令長度與字長的關(guān)系

字長:指計算機能直接處理的二進制數(shù)據(jù)的位數(shù),它是計算機的一個重要技術(shù)指標。作用:字長決定了計算機的運算精度,字長越長,計算機的運算精度越高。一般機器的字長都是字節(jié)長度(即8位)的l,2,4或8倍數(shù),也就是8,16,32或64位。如80年代微型機的字長多為8位,16位和32位,大中型機的字長多為32位和64位,因此,一個字中可以存儲1,2,4或8個字符。隨著集成度的提高,機器字長也在增長,16位微機已趨于淘汰。5.2.3指令長度與字長的關(guān)系字長:指23

指令的長度:主要取決于操作碼的長度、操作數(shù)地址的長度和操作數(shù)地址的個數(shù)。各指令的長度不是固定的,但也不是任意的。

指令的長度通常為字節(jié)的整數(shù)倍。地址碼長度決定了指令直接尋址能力。這對于字長較短(8位或16位)的微型機來說,遠遠滿足不了實際需求。擴大尋址能力的方法:1)增加機器字長來增加地址碼的長度;2)采用地址擴展技術(shù),把存儲空間分成若干段,用基址加位移量的方法來增加地址碼的長度。指令的長度:主要取決于操作碼的長度、操作數(shù)地址的長度和24

指令的長度與機器的字長沒有固定的關(guān)系,它既可以小于或等于機器的字長,也可以大于機器的字長。前者稱為短格式指令,后者稱為長格式指令,一條指令存放在地址連續(xù)的存儲單元中。

在同一臺計算機中可能既有短格式指令又有長格式指令,但通常是把最常用的指令(如算術(shù)邏輯運算指令、數(shù)據(jù)傳送指令)設(shè)計成短格式指令,以便節(jié)省存儲空間和提高指令的執(zhí)行速度。

指令的長度與機器的字長沒有固定的關(guān)系,它既可以小255.3數(shù)據(jù)表示1.操作數(shù)的類型

邏輯(布爾)數(shù)、定點數(shù)(整數(shù))、浮點數(shù)(實數(shù))、十進制數(shù)、字符串、數(shù)組等2.操作數(shù)的存儲方式

一個數(shù)據(jù)的位數(shù)>1字節(jié)或1個字的寬度,這個數(shù)據(jù)就需要存儲在相鄰的多個字節(jié)的位置上。按照高位數(shù)據(jù)和低位數(shù)據(jù)在存儲器中的存儲次序,可分為大數(shù)端(bigendian)和小數(shù)端(littleendian)兩種存儲方式。

將最低字節(jié)存儲在最小地址位置的存儲方式稱為小數(shù)端方式。將最低字節(jié)存儲在最大地址位置的存儲方式稱為大數(shù)端方式。許多新型計算機系統(tǒng)結(jié)構(gòu)都同時支持大數(shù)端和小數(shù)端數(shù)據(jù)存儲方式。5.3數(shù)據(jù)表示1.操作數(shù)的類型26例:十進制數(shù)1000000,用十六進制數(shù)據(jù)表示為:F4240H,在32位數(shù)據(jù)類型中存儲為000F4240H。(1)小數(shù)端存放

40420F000123存儲器地址編號(2)大數(shù)端存放

000F42400123例:十進制數(shù)1000000,用十六進制數(shù)據(jù)表示為:F424027

目前計算機所用數(shù)據(jù)字長一般為32位。存儲器的地址,一般按字節(jié)表示。計算機的指令系統(tǒng)可支持對字節(jié)、半字、字、雙字的運算,有些計算機有位處理指令。為便于硬件實現(xiàn),一般要求多字節(jié)數(shù)據(jù)對準邊界,如P132圖5.2(a)所示。當所存數(shù)據(jù)不能滿足此要求時,則填充一個至多個空白字節(jié)。也有的計算機不要求對準邊界,但可能增加訪問存儲器次數(shù),而且還有可能要對高低字節(jié)的位置進行調(diào)整。目前計算機所用數(shù)據(jù)字長一般為32位。存儲器的地址283.數(shù)據(jù)對齊方式

在數(shù)據(jù)對齊存儲方式下,要求一個數(shù)據(jù)字占據(jù)完整的一個字的存儲位置。而不能分成兩部分。例:一個32位的字在按字對齊方式下,它的地址應(yīng)當是4的倍數(shù),即其地址的二進制碼的最低兩位為00,這樣它占據(jù)的存儲器位置是地址為:4n、4n+1、4n+2、4n+3(n為自然數(shù))。在32位寬的存儲中,這個字可以一次讀取或?qū)懭?。在不按字對齊方式下,它的地址就如出現(xiàn):4n-1、4n、4n+1、4n+2的情況。這樣的數(shù)據(jù)在32位寬的存儲中,需要分兩次讀取或?qū)懭搿?.數(shù)據(jù)對齊方式在數(shù)據(jù)對齊存儲方式下,要求一個數(shù)據(jù)字占據(jù)29例:0481216字節(jié)地址3210數(shù)據(jù)字的存儲地址為80481216字節(jié)地址3210數(shù)據(jù)字的存儲地址為9分兩次讀/寫例:0481216字節(jié)地址3210數(shù)據(jù)字的存305.4尋址方式(P133)

存放操作數(shù)的部件:ALU的某個寄存器、存儲器、指令

程序的指令代碼:一般在存儲器中尋址方式:根據(jù)指令中給出的地址碼字段尋找真實的操作數(shù)以及下一條要執(zhí)行的指令地址的方式。5.4尋址方式(P133)存放操作數(shù)的部件:ALU的311.直接尋址操作數(shù)的地址直接在指令中給出,操作數(shù)在存儲器中例:MOVAX,[2000]尋址方式字段A—有效地址1.直接尋址操作數(shù)的地址直接在指令中給出,操作數(shù)在存儲器中322.寄存器尋址操作數(shù)在寄存器中,寄存器號在指令中給出。例:MOVAX,BX優(yōu)點:地址碼短,從寄存器中存取數(shù)據(jù)比從存儲器中存取快得多.寄存器尋址方式可以縮短指令長度、節(jié)省存儲空間,提高指令的執(zhí)行速度,在計算機中得到廣泛應(yīng)用。

OPR指令操作數(shù)寄存器R2.寄存器尋址操作數(shù)在寄存器中,寄存器號在指令中給出。OP333.基址尋址

在計算機中設(shè)置一個專用的基址寄存器,或由指令指定一個通用寄存器為基址寄存器,操作數(shù)的地址由基址寄存器的內(nèi)容和指令的地址碼A相加得到,地址碼A通常被稱為位移量(disp),也可用其他方法獲得位移量。例:MOVAX,50[BX]在MASM中這叫寄存器相對尋址3.基址尋址在計算機中設(shè)置一個專用的基址寄34指令系統(tǒng)課件35注1:基址尋址主要用以解決程序在存儲器中的定位(邏輯地址物理地址)和擴大尋址空間(基址+位移量)等問題。注2:通?;芳拇嫫髦械闹抵荒苡上到y(tǒng)程序設(shè)定,由特權(quán)指令執(zhí)行,而不能被一般用戶指令所修改,因此確保了系統(tǒng)的安全性。注1:基址尋址主要用以解決程序在存儲器中的定位(邏輯地址364.變址尋址

指令地址碼部分給出的地址A和指定的變址寄存器X的內(nèi)容通過加法器相加,所得的和作為地址從存儲器中讀出所需的操作數(shù)。這是幾乎所有計算機都采用的一種尋址方式,當計算機中還有基址寄存器時,那么在計算有效地址時還要加上基址寄存器的內(nèi)容。例:MOVAX,table[SI]4.變址尋址指令地址碼部分給出的地址A和指定的變址寄37變址寄存器的值為:1~m該圖表示變址操作對處理一維數(shù)組的支持。利用變址操作與循環(huán)執(zhí)行程序的方法對整個數(shù)組進行運算,在整個執(zhí)行過程中,不改變原程序,因此對實現(xiàn)程序的重入性時有好處的。二維數(shù)組也可用變址操作實現(xiàn),需要兩個變址寄存器。有些計算機的指令系統(tǒng)的變址寄存器由自動增量或自動減量功能。變址寄存器的值為:1~m該圖表示變址操作對處理一維數(shù)組的支持385.間接尋址

根據(jù)指令的地址碼所取出的內(nèi)容是操作數(shù)的地址或指令的地址,這種方式稱為間接尋址或間址。根據(jù)地址碼取出的是寄存器地址還是存儲器地址,間接尋址又可分為寄存器間接尋址和存儲器間接尋址兩種方式。例:MOVAX,[BX]間接尋址有一次間址和多次間址兩種情況。

對于存儲器一次間址情況,需訪問兩次存儲器才能取得數(shù)據(jù),第一次從存儲器讀出操作數(shù)地址,第二次讀出操作數(shù)。5.間接尋址根據(jù)指令的地址碼所取出的內(nèi)容是39例:MOVAX,[BX]int*p;(一級間址)int**p;(二級間址)例:MOVAX,[BX]40例:直接尋址:JMPnearptrA1間接尋址:JMPdwordptr[2000]例:直接尋址:JMPnearptrA1416.相對尋址

把程序計數(shù)器PC的內(nèi)容(即當前執(zhí)行指令的地址)與指令的地址碼部分給出的位移量(disp)之和作為操作數(shù)的地址或轉(zhuǎn)移地址,稱為相對尋址。主要用于轉(zhuǎn)移指令,執(zhí)行本條指令后,將轉(zhuǎn)移到(PC)+disp,(PC)為程序計數(shù)器的內(nèi)容。例:JMPSHORTPTRL1相對尋址有兩個特點:

(1)轉(zhuǎn)移地址不是固定的,它隨著PC值的變化而變化,并且總是與PC相差一個固定值disp,因此無論程序裝入存儲器的任何地方,均能正確運行,對浮動程序很適用。(2)位移量可正、可負,通常用補碼表示。如果位移量為n位,則這種方式的尋址范圍在(PC)-2(n-1)到(PC)+2(n-1)-1之間。計算機的程序和數(shù)據(jù)一般是分開存放的,程序區(qū)在程序執(zhí)行過程中不允許修改。在程序與數(shù)據(jù)分區(qū)存放的情況下,不用相對尋址方式來確定操作數(shù)地址。6.相對尋址把程序計數(shù)器PC的內(nèi)容(即當前執(zhí)行42指令系統(tǒng)課件43PC的內(nèi)容為1000,指令的位移量(相對距離)為35。故其相對地址為1035。這個地址是不固定的,隨PC的值變化而變化,并且相對地差一個固定值。因此,無論程序裝入存儲器的任何區(qū)域,只要這個差值不變,程序均能正確運行。由于程序在內(nèi)存空間里是浮動的,又稱浮動尋址。例如:OPX735操作碼尋址特征位移量DPC:相對距離=35內(nèi)存OPX735300010351000PC的內(nèi)容為1000,指令的位移量(相對距離)為3447.立即數(shù)

所需的操作數(shù)由指令的地址碼部分直接給出,就稱為立即數(shù)(或直接數(shù))尋址方式。例:

其匯編符號記為:MOVRi,#1536這種方式的特點是取指時,操作碼和一個操作數(shù)同時被取出,不必再次訪問存儲器,提高了指令的執(zhí)行速度,但不能修改,通常用于寄存器或存儲單元賦初值或提供一個常數(shù)等。操作碼寄存器號立即數(shù)RiMOVRi153615367.立即數(shù)所需的操作數(shù)由指令的地址碼部45

8.堆棧尋址:堆棧操作使用一種特殊的數(shù)據(jù)傳送指令,即壓入指令(PUSH)和彈出指令(POP)。

若采用“向上生成”的堆棧,其操作過程如下:

?

壓入指令:PUSHOPR,是把OPR(設(shè)長度為一個字節(jié))壓入堆棧。其操作是:(SP)-1→SP;OPR→(SP)

。?彈出指令:POPOPR,是從堆棧彈出一個數(shù)據(jù)(長度為一個字節(jié))送OPR,操作是:((SP))→OPR;(SP)+1→SP。8.堆棧尋址:46

以上這些尋址方式,在計算機中可以組合使用。例如在一條指令中可以同時實現(xiàn)基址尋址與變址尋址,其有效地址為:基址寄存器內(nèi)容+變址寄存器內(nèi)容+指令地址碼A

假如用戶用高級語言編程,根本不用考慮尋址方式,因為這是編譯程序的事。但若用匯編語言編程,則應(yīng)對它有確切的了解,才能編出正確而又高效的程序。此時應(yīng)認真閱讀指令系統(tǒng)的說明書,因為不同計算機采用的尋址方式是不同的,即使是同一種尋址方式,在不同的計算機中也有不同的表達方式或含義。以上這些尋址方式,在計算機中可以組合使用。假475.5指令類型(P137)

指令系統(tǒng)決定了計算機的基本功能,因此指令系統(tǒng)的設(shè)計是計算機系統(tǒng)設(shè)計中的一個核心問題。5.5.1指令的分類及功能一臺計算機的指令系統(tǒng)通常有幾十條至幾百條指令,按其所完成的功能可分為:算術(shù)邏輯運算指令、移位操作指令、浮點運算指令、十進制運算指令、字符串處理指令、向量運算指令、數(shù)據(jù)傳送指令、轉(zhuǎn)移指令、堆棧操作指令、輸入輸出指令、特權(quán)指令等。下面分別說明各類指令的功能。5.5指令類型(P137)指令系統(tǒng)決定了計算機的基本功481.算術(shù)邏輯運算指令

(1)算術(shù)(定點數(shù)運算即相當于高級語言中對整數(shù)(integer)的處理,根據(jù)算術(shù)運算的結(jié)果置狀態(tài)位,一般有Z(結(jié)果為0)、N(結(jié)果為負)、V(結(jié)果溢出)、C(產(chǎn)生進位或借位)四個狀態(tài)位。):+、-、*、/ADD、ADC、SUB、SBB、MUL、IMUL、DIV、IDIV例:ADDAX,BX(2)邏輯:與、或、非(求反)、異或(按位加)等有些計算機還設(shè)置有位操作指令,如位測試(測試指定位的值)、位清除(把指定位清零)、位求反(取某位的反值)指令等。AND、OR、NOT、XOR、BIT、CLI等例如:ANDAX,BX1.算術(shù)邏輯運算指令(1)算術(shù)(定點數(shù)運算即相當于高級語492.移位操作指令

移位操作指令分為算術(shù)移位、邏輯移位和循環(huán)移位三種。例:SHLAL,12.移位操作指令移位操作指令分為算術(shù)移位、邏輯移位503.浮點運算指令

高級語言中的實數(shù)(real)經(jīng)常是先轉(zhuǎn)換成浮點數(shù)的形式而后再進行處理。某些機器沒有設(shè)置浮點運算指令而用子程序?qū)崿F(xiàn),其速度較低。因此主要用于科學(xué)計算的計算機應(yīng)該設(shè)置浮點運算指令,一般能對單精度(32位)、雙精度(64位)數(shù)據(jù)進行處理。3.浮點運算指令高級語言中的實數(shù)(real514.十進制運算指令例:AAA

在人機交互作用時,輸入輸出的數(shù)據(jù)都是以十進制形式表示的。在某些數(shù)據(jù)處理系統(tǒng)中輸入輸出的數(shù)據(jù)很多,但對數(shù)據(jù)本身的處理卻很簡單。在不具有十進制運算指令的計算機中,首先將十進制數(shù)據(jù)轉(zhuǎn)換成二進制數(shù),再在機器內(nèi)運算;爾后又轉(zhuǎn)換成十進制數(shù)據(jù)輸出。因此,在輸入輸出數(shù)據(jù)頻繁的計算機系統(tǒng)中設(shè)置十進制運算指令能提高數(shù)據(jù)處理的速度。4.十進制運算指令例:AAA525.字符串處理指令

例:MOVS早期的計算機主要用于科學(xué)計算和工業(yè)控制,指令系統(tǒng)的設(shè)置側(cè)重于數(shù)值運算,只有少數(shù)大型機才有非數(shù)值處理指令。而隨著計算機的不斷發(fā)展,應(yīng)用領(lǐng)域不斷擴大,計算機更多地應(yīng)用于信息管理、數(shù)據(jù)處理、辦公室自動化等領(lǐng)域,這就需要有很強的非數(shù)值處理能力。因此,越來越重視非數(shù)值指令的設(shè)置,甚至像Intel8086微處理器都配置了這種指令,使它能夠直接用硬件支持非數(shù)值處理。一般包括字符串傳送、字符串比較、字符串查詢、字符串轉(zhuǎn)換等指令。5.字符串處理指令例:MOVS536.數(shù)據(jù)傳送指令這類指令用以實現(xiàn)寄存器與寄存器,寄存器與存儲器單元,存儲器單元與存儲器單元之間的數(shù)據(jù)傳送。對于存儲器來講,數(shù)據(jù)傳送包括了對數(shù)據(jù)的讀(相當于取數(shù)指令)或?qū)?相當于存數(shù)指令)操作。數(shù)據(jù)傳送時,數(shù)據(jù)從源地址傳送到目的地址,而源地址中的數(shù)據(jù)保持不變,因此實際上是數(shù)據(jù)復(fù)制。數(shù)據(jù)傳送指令一次可以傳送一個數(shù)據(jù)或一批數(shù)據(jù),如Intel8086的MOVS指令,一次傳送一個字或字節(jié),而當加上重復(fù)執(zhí)行前綴(REP)后,一次可以把多達64KB的數(shù)據(jù)塊從存儲器的一個區(qū)域傳送到另一個區(qū)域。有些機器設(shè)置了數(shù)據(jù)交換指令,完成源操作數(shù)與目的操作數(shù)互換,實現(xiàn)雙向數(shù)據(jù)傳送。6.數(shù)據(jù)傳送指令這類指令用以實現(xiàn)寄存器與寄547.轉(zhuǎn)移類指令這類指令用以控制程序流的轉(zhuǎn)移。在大多數(shù)情況下,計算機是按順序方式執(zhí)行程序的,但是也經(jīng)常會遇到離開原來的順序轉(zhuǎn)移到另一段程序或循環(huán)執(zhí)行某段程序的情況。按轉(zhuǎn)移的性質(zhì),轉(zhuǎn)移指令分為無條件轉(zhuǎn)移、條件轉(zhuǎn)移、過程調(diào)用與返回、陷阱(trap)等幾種。7.轉(zhuǎn)移類指令這類指令用以控制程序流的轉(zhuǎn)558.堆棧及堆棧操作指令例:PUSHAX

堆棧(stack)是由若干個連續(xù)存儲單元組成的先進后出(firstinlastout,簡稱FILO)存儲區(qū),第一個送入堆棧中的數(shù)據(jù)存放在棧底,最近送入堆棧中的數(shù)據(jù)存放在棧頂。棧底是固定不變的,而棧頂卻是隨著數(shù)據(jù)的入棧和出棧在不斷變化。為了表示棧頂?shù)奈恢茫幸粋€寄存器或存儲器單元用于指出棧頂?shù)牡刂?,這個寄存器或存儲器單元就稱為堆棧指針(stackpointer,簡稱SP)。任何堆棧操作只能在棧頂進行。8.堆棧及堆棧操作指令例:PUSHAX56而在一般計算機中,堆棧主要用來暫存中斷和子程序調(diào)用時現(xiàn)場數(shù)據(jù)及返回地址,用于訪問堆棧的指令只有壓入(即進棧)和彈出(即退棧)兩種,它們實際上是一種特殊的數(shù)據(jù)傳送指令。壓入指令:PUSH把指定的操作數(shù)送入棧頂彈出指令:POP把棧頂?shù)臄?shù)據(jù)取出在一般的計算機中,堆棧從高地址向低地址擴展,即棧底的地址總是大于或等于棧頂?shù)牡刂?也有少數(shù)計算機剛好相反)。而在一般計算機中,堆棧主要用來暫存中斷和子程序調(diào)用時現(xiàn)場57堆棧圖例(進棧)PUSHAX

sppushaxSpALAH高地址低地址進棧方向(sp)(SP)-2((sp)+1,(sp))(AX)堆棧圖例(進棧)PUSHAX

spp589.輸入輸出(I/O)指令

例:IN、OUT

計算機所處理的一切原始數(shù)據(jù)和所執(zhí)行的程序(除了固化在ROM中的以外)均來自外部設(shè)備的輸入,處理結(jié)果需通過外部設(shè)備輸出。

輸入輸出指令的一般格式如下:操作碼寄存器名

外部設(shè)備中的寄存器地址或設(shè)備碼,其長度一般為8~16位,可以表示256~64K個設(shè)備寄存器9.輸入輸出(I/O)指令例:IN、OUT59

輸入指令完成從A地址所指定的外部設(shè)備寄存器中讀入一個數(shù)據(jù)到REG寄存器中;

輸出指令剛好相反,是把REG寄存器中的數(shù)據(jù)送到A地址所指定的外部設(shè)備寄存器中。此外,I/O指令還可用來發(fā)送和接收控制命令和回答信號,用以控制外部設(shè)備的工作。有些計算機采用外部設(shè)備與存儲器統(tǒng)一編址的方法把外部設(shè)備寄存器看成是存儲器的某些單元,任何訪問存儲器的指令均可訪問外部設(shè)備,因此不再專設(shè)I/O指令。輸入指令完成從A地址所指定的外部設(shè)備寄存器中讀入一個數(shù)據(jù)6010.特權(quán)指令

某些指令使用不當會破壞系統(tǒng)或其他用戶信息,因此為了安全起見,這類指令只能用于操作系統(tǒng)或其他系統(tǒng)軟件,而不提供給用戶使用,稱為特權(quán)指令。一般來說,在單用戶、單任務(wù)的計算機中不一定需要特權(quán)指令,而在多用戶、多任務(wù)的計算機系統(tǒng)中,特權(quán)指令卻是必不可少的。它主要用于系統(tǒng)資源的分配和管理,包括改變系統(tǒng)的工作方式、檢測用戶的訪問權(quán)限、修改虛擬存儲器管理的段表、頁表和完成任務(wù)的創(chuàng)建和切換等。在某些多用戶的計算機系統(tǒng)中,為了統(tǒng)一管理所有的外部設(shè)備,輸入輸出指令也作為特權(quán)指令,不允許用戶直接使用。需輸入輸出時,可通過系統(tǒng)調(diào)用,由操作系統(tǒng)來完成。10.特權(quán)指令某些指令使用不當會破壞系統(tǒng)或6111.其他指令

(1)向量指令

(2)多處理機指令(3)控制指令包括等待指令、停機指令、空操作指令、開中斷、關(guān)中斷、置條件碼指令等。11.其他指令(1)向量指令625.5.2雙字長運算(子程序舉例)

有時候,需對雙字長操作數(shù)進行運算,而機器本身并沒有雙字長指令,這樣就需要通過子程序予以實現(xiàn)。1.雙字長加法運算

假設(shè)在寄存器R1,R2和R3,R4分別存放兩個雙字長操作數(shù),其中R1,R3為高位。加法運算可分為兩種情況討論:(1)假設(shè)機器設(shè)置有ADD(加法指令)和ADC(加進位的加法指令),則執(zhí)行下列兩條指令后在R3、R4中得到運算結(jié)果。

指令操作說明

K:ADDR2,R4;低位相加,R4←(R3)+(R4),并根據(jù)運算結(jié)果置進位位C

K+1:ADCR1,R3;高位相加,并加進位位C,R3←(R1)+(R3)+C5.5.2雙字長運算(子程序舉例)有時候,需對雙63(2)假設(shè)機器僅設(shè)置ADD指令,而沒有ADC指令,則應(yīng)執(zhí)行下列程序:

指令操作說明

K:ADDR2,R4;低位相加,R4←(R2)+(R4),并根據(jù)運算結(jié)果置進位位CK+1:BCCK+3;如C=0,程序轉(zhuǎn)移到K+3,如C=1,順序執(zhí)行下一條指令K+2:ADD#1,R1;R1←(R1)+1K+3:ADDR1,R3;高位相加,R3←(R1)+(R3)

在R3、R4中得到運算結(jié)果。(2)假設(shè)機器僅設(shè)置ADD指令,而沒有ADC指令,則應(yīng)執(zhí)行下642.雙字長減法運算

假設(shè)在R1,R2和R3,R4分別存放雙字長被減數(shù)和減數(shù),其中R1,R3為高位,R2,R4為低位。求兩數(shù)之差?,F(xiàn)舉例說明,設(shè)操作數(shù)字長為4位,那么雙字長為8位,且設(shè)定為不帶符號位的正數(shù).被減數(shù)X:00101100,減數(shù)Y:00011010。計算得:[-Y]補=11100110[X-Y]補=X+[-Y]補

=00101100+11100110=00010010。2.雙字長減法運算65

高位低位00l011

溫馨提示

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

評論

0/150

提交評論