計算機組成原理(第四章NEW)_第1頁
計算機組成原理(第四章NEW)_第2頁
計算機組成原理(第四章NEW)_第3頁
計算機組成原理(第四章NEW)_第4頁
計算機組成原理(第四章NEW)_第5頁
已閱讀5頁,還剩127頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章指令系統(tǒng)

課程教學(xué)要求本章內(nèi)容:

4.1指令系統(tǒng)的發(fā)展與性能要求

4.2指令格式

4.3操作數(shù)的類型

4.4指令和數(shù)據(jù)的尋址方式

4.5典型指令

本章小結(jié)4.1

指令系統(tǒng)的發(fā)展和性能要求

指令系統(tǒng)的幾個常用名詞:

程序:計算機中若干條指令的有序組合。

指令:

要計算機執(zhí)行某種獨立完整操作的命令。從計算機組成的層次結(jié)構(gòu)來說,指令分別有微指令、機器指令和宏指令。

微指令:微程序級的命令,它屬于硬件(命令);

宏指令:由若干條機器指令組成的軟件命令,它屬于軟件;

機器指令(指令):介于微指令與宏指令之間,每條指令可完成一個獨立、完整的運算或其它操作。

指令系統(tǒng):

一臺計算機中所有機器指令的集合。

指令系統(tǒng)

表征計算機性能的重要因素。指令的格式與功能不僅直接影響到機器的硬件結(jié)構(gòu),也直接影響到機器的軟件結(jié)構(gòu),以及機器的適用范圍。4.1.1指令系統(tǒng)的發(fā)展

上世紀50年代:指令系統(tǒng)只有定點加減、邏輯運算、數(shù)據(jù)傳送、轉(zhuǎn)移等十幾至幾十條指令。

60年代后期:增加了乘除運算、浮點運算、十進制運算、字符串處理等指令,指令數(shù)目多達一二百條,指令本身及其處理形式也更加靈活。

60年代后期開始出現(xiàn)系列計算機(指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的同一系列計算機)。同一系列的計算機有共同的指令級,而且可通過“升級”的方法,解決新舊機種的軟件兼容性問題,大大減少了軟件開發(fā)費用。指令系統(tǒng)70年代末期:

大多數(shù)計算機的指令系統(tǒng)多達幾百條。這些計算機被稱為:復(fù)雜指令系統(tǒng)計算機(CISC)。龐大的指令系統(tǒng)功能強大,同時,也帶來了可靠性不高、維護與調(diào)試困難、硬件資源浪費等問題。隨著VLSI技術(shù)的發(fā)展,人們又提出了易于使用和實現(xiàn)的:精簡指令系統(tǒng)計算機(RISC)。后續(xù)討論可知:CISC與RISC在追求目標、實現(xiàn)手段以及結(jié)構(gòu)特征上都有著很大不同。指令系統(tǒng)20:80規(guī)律4.1.2指令系統(tǒng)的性能要求

指令系統(tǒng)的性能決定了計算機的基本功能,它的設(shè)計直接關(guān)系到計算機的硬件結(jié)構(gòu)和用戶的需要。一個完善的指令系統(tǒng)應(yīng)滿足如下四方面的要求:完備性、有效性、規(guī)整性、兼容性。(見教材P114-115)指令系統(tǒng)

①完備性:

用匯編(機器)語言編寫各種程序時,指令系統(tǒng)直接提供的指令足夠使用,而不必用軟件來實現(xiàn)。完備性要求指令系統(tǒng)豐富、功能齊全、使用方便。

②有效性:利用該指令系統(tǒng)所編寫的程序能夠高效率的運行。如:程序占據(jù)存儲空間小、執(zhí)行速度快。一般來說,一個功能更強、更完善的指令系統(tǒng),必定有更好的有效性。

③規(guī)整性:包括對稱性、勻齊性、指令格式和數(shù)據(jù)格式的一致性。

對稱性:

在指令系統(tǒng)中所有的寄存器和存儲器單元都可同等對待,所有的指令都可使用各種尋址方式;

勻齊性:

指一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型;

指令格式和數(shù)據(jù)格式的一致性:

指令長度和數(shù)據(jù)長度有一定的關(guān)系,以方便處理和存取。

④兼容性:系列機各機種之間具有相同的基本結(jié)構(gòu)和共同的基本指令集,因而指令系統(tǒng)是兼容的,基本軟件可以通用。當然,做到所有軟件都完全兼容是不可能的,通常是指“向上兼容”,即:低檔機上運行的軟件可以在高檔機上運行。4.1.3低級語言與硬件結(jié)構(gòu)的關(guān)系

計算機程序設(shè)計語言包括:高級語言和低級語言。

高級語言:如C,JAVA等。

特點:語句規(guī)則和用法與具體機器的指令系統(tǒng)無關(guān)。

低級語言:機器語言(二進制語言);

匯編語言(符號化的二進制語言)等。

特點:低級語言是面向機器的語言,其與具體機器的指令系統(tǒng)密切相關(guān)。

機器語言:直接由指令代碼組成的指令語言;

符號語言:用指令助記符來表示的機器語言(如匯編語言)。指令系統(tǒng)已知:計算機能夠直接識別和執(zhí)行的唯一語言:

——二進制語言(機器語言)。高級語言程序借助匯編程序或編譯程序 翻譯成機器語言程序。

機器語言依賴于計算機的硬件結(jié)構(gòu)和指令系統(tǒng)。不同的機器有不同的指令語言,所以,用機器語言編寫的程序不能在不同類型的機器上運行。

一些高級語言通過提供與匯編語言之間的調(diào)用接口,用于直接訪問計算機的硬件資源。

比較內(nèi)容高級語言低級語言1對程序員的訓(xùn)練要求

(1)通用算法

(2)語言規(guī)則

(3)硬件知識

有較少不要

有較多要2對機器獨立的程度獨立不獨立3編制程序的難易程度易難4編制程序所需時間短較長5程序執(zhí)行時間較長短6編譯過程中對計算機資源的要求多少表4.1:高級語言與低級語言的性能比較(教材P116)4.2

指令格式

指令系統(tǒng)

指令字:(簡稱指令)表示一條指令的機器字。

指令格式:用二進制代碼表示的指令字結(jié)構(gòu)形式。基本格式:通常由“(操作碼)字段+(地址碼)字段”組成。

操作碼字段OP

地址碼字段A操作碼字段OP:表示指令所要完成的各種操作與功能;地址碼字段A:又稱為操作數(shù)字段,通常指定參與操作的操作數(shù)、或操作數(shù)的地址。(二進制代碼)10100111010

11101101011指令字:1操作碼

指令系統(tǒng)OP字段地址碼字段

不同的操作碼字段代碼,可表示不同的指令。

n位操作碼OP:可表示2n條不同的指令。(如:4位OP可表示16條指令;7位可表示128條指令等)∴

操作碼字段的位長設(shè)定:一般取決于計算機指令系統(tǒng)中指令的總條數(shù)。(二進制代碼)例如:

某指令系統(tǒng)共有6條指令,則指令字中用3位操作碼就夠;如果有50條指令,則至少需要

?位

操作碼。注意:

操作碼字段OP可以是固定長度的、也可以是變長、擴展的,視指令系統(tǒng)的需要而定。指令系統(tǒng)6位OP字段地址碼字段?位

OP字段地址碼字段

當指令字長度固定時,可以利用操作碼和地址碼字段長度的調(diào)整,擴展OP長度,進而增加指令的條數(shù),即:在指令字長不變的條件下,盡可能定義更多的操作種類。(操作碼擴展法)操作碼擴展法:(在微型計算機指令設(shè)計中常用,見后面例題)

地址碼字段A地址碼OP擴展2地址碼

(又稱操作數(shù))

一條指令中有幾個操作數(shù),稱該指令為:幾操作數(shù)指令或幾地址指令。

操作數(shù)一般包括:源操作數(shù)1、源操作數(shù)2及目的操作數(shù)這三種數(shù),因而就形成了三地址指令格式。在此基礎(chǔ)上,后來又發(fā)展成二地址格式、單地址格式和零地址格式,如下圖所示:指令系統(tǒng)操作碼OPA1A2A3三地址指令

二地址指令

單地址指令

零地址指令

操作碼OP

A1A2操作碼OPA操作碼OP

二地址指令常稱為雙操作數(shù)指令,它的兩個地址碼字段分別指明參與操作的兩個數(shù)在內(nèi)存中或運算器中通用寄存器的地址,A1又作存放操作結(jié)果的地址。

(A1)

OP

(A2)→A1

OP字段

地址碼字段三地址指令字中有三個操作數(shù)地址。

(A1)

OP

(A2)→A3

A1為被操作數(shù)地址,也稱源操作數(shù)1地址;A2為源操作數(shù)2地址;A3為目的操作數(shù)地址。同樣,A1,A2,A3既可以是內(nèi)存中的單元地址,也可以是運算器中通用寄存器的地址?!硎景巡僮鳎ㄟ\算)結(jié)果傳送到指定的地方。源操作數(shù)1源操作數(shù)2目的操作數(shù)

單地址指令又稱為單操作數(shù)指令。通常這種指令通常以運算器中累加寄存器AC中的數(shù)據(jù)為被操作數(shù),指令字的地址碼字段所指明的數(shù)為操作數(shù),操作結(jié)果又放回累加寄存器AC中。

(AC)

OP

(A)→AC

OP表示操作性質(zhì);(AC)表示累加寄存器AC中的數(shù);(A)表示內(nèi)存中地址為A的存儲單元中的數(shù)或編號為A的通用寄存器中的數(shù);

零地址指令的指令字中只有操作碼,而沒有地址碼。(如:系統(tǒng)復(fù)位RST、累加器清零CLR等)操作碼OPA1A2A3三地址指令二地址指令單地址指令零地址指令操作碼OP

A1A2操作碼OPA操作碼OP注意到:隨著地址碼的減少,指令中會出現(xiàn)若干空閑位。∴可以利用地址碼的減少,來擴展操作碼長度,有效地增加指令的條數(shù)。(見后面例題)[例]利用地址碼的減少,來擴展操作碼長度,增加指令條數(shù)。OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作碼:8位操作碼:12位操作碼:16位操作碼:最多15條二地址指令最多15條一地址指令16條零地址指令最多15條三地址指令(4)(4)(4)(4)指令字長16位見后面例題可見:在指令字長固定的情況下,利用操作碼擴展,可以有效地增加指令的條數(shù)。(1)存儲器-存儲器(SS)型指令:A1、A2都是內(nèi)存地址

二操作數(shù)分別為:D1=M(A1);D2=M(A2)

特點:參與操作的數(shù)都在內(nèi)存M里,從內(nèi)存某單元中取出操作數(shù)、把操作結(jié)果存入存儲單元。

機器執(zhí)行這類指令需要多次訪問內(nèi)存,因此執(zhí)行速度較慢。操作碼A1A2以二地址指令為例:【指令的基本類型】(教材P117~118)

根據(jù)操作數(shù)的實際物理位置,指令可歸納為如下三種類型。地址為A1的存儲單元中的內(nèi)容地址為A2的存儲單元中的內(nèi)容(2)寄存器-寄存器(RR)型指令:(A1、A2都是寄存器號)

特點:參與操作的數(shù)都在寄存器R中,從寄存器中取操作數(shù),把操作結(jié)果放到另一寄存器。(注意:寄存器都在CPU中)

執(zhí)行這類指令時不需要訪問內(nèi)存,在CPU內(nèi)部直接完成。

因此,指令的執(zhí)行速度很快。操作碼OPA1A2RiRj

(Ri)OP(Rj)→Rj(3)寄存器-存儲器(RS)型指令:

特點:一個操作數(shù)在寄存器R中,另一操作數(shù)在存儲器M(Ai)中。因此,這類指令的執(zhí)行速度介于RR與SS指令之間。

操作碼A1A2

為了提高指令的功能,在指令格式設(shè)計中,可以靈活地運用各種類型的指令。RiRj3指令字長度

指令字長度:一條指令所用的二進制碼的總位數(shù)。

機器字長:計算機能直接處理的二進制數(shù)碼的位長,它決定了計算機的運算精度。(如:16位機、32位機、64位機等)指令字長的設(shè)計包括:

單字長指令:指令長度=機器字長度;

半字長指令:….;

雙字長指令:….;

多字長指令:….。指令系統(tǒng)通常:機器字長與主存單元位長相同。多字長指令:

如:三字長指令格式

主要缺點:需要多次訪問內(nèi)存才能取出一條完整的指令,降低了CPU的運行效率,不利于指令編譯優(yōu)化。(特殊需要時才使用)

操作碼

操作數(shù)地址1

操作數(shù)地址2

①②③

【等長指令字結(jié)構(gòu)】:

各種指令字長度是相等的。這種指令字結(jié)構(gòu)工整、編譯方便。

【變長指令字結(jié)構(gòu)】:指令字的長度隨指令功能而變化。變長指令字結(jié)構(gòu)靈活,能充分利用指令長度,但指令的譯碼、編譯及控制要復(fù)雜一些。

指令系統(tǒng)指令字結(jié)構(gòu):4指令助記符

∵必須采用二進制代碼作為機器碼,計算機硬件電路才能識別。而用二進制代碼來手工直接編程,既非常麻煩、又難以檢查和維護。

∴為了便于編寫和閱讀程序,每條指令代碼通常約定用簡化英文縮寫字母來表示。這種縮寫字符叫做指令助記符。指令系統(tǒng)LAD111取數(shù)STO110存數(shù)JSR101轉(zhuǎn)子程序JMP100跳轉(zhuǎn)MOV011傳送SUB010減法ADD001加法指令助記符操作碼OP

指令指令系統(tǒng)例如:某機器共有7條指令(用三位操作碼OP既可),各指令的OP設(shè)置如下表:

由于指令助記符提示了每條指令的含意,比較容易記憶,書寫比較方便,閱讀、修改、調(diào)試程序也容易得多。例如:

1

MOVR0,R1

;(R1)→R0

2

LADR1,326;(326)→R1

3

ADDR2,R1;(R1)+(R2)→R2

4

STOR2,(R3);(R2)→(R3)

5

JMP101;101→PC

注意:在不同的計算機中,指令助記符的規(guī)定是不一樣的。因此,指令助記符還必須轉(zhuǎn)換成與機器相對應(yīng)的二進制碼(機器碼)。

借助匯編程序,可以自動完成匯編語言“翻譯”。

指令系統(tǒng)10110000121111011100100110300101001411011011510000101某段程序機器碼什么意思?

MOVR0,R1

;(R1)→R0

LADR1,326;(326)→R1

ADDR2,R1;(R1)+(R2)→R2

STOR2,(R3);(R2)→(R3)

JMP101;101→PC

(用匯編語言表述)5指令格式舉例

(1)八位微型計算機的指令格式

8位機的字長較短,指令結(jié)構(gòu)常采用可變字長形式,包含單字長、雙字長、三字長指令等多種。指令系統(tǒng)操作碼

操作碼

(單字長指令)

(雙字長指令)

(三字長指令)

操作數(shù)地址

操作碼

操作數(shù)地址1

操作數(shù)地址2

070707

若內(nèi)存按字節(jié)編址,則對于8位機來說,單字長指令每執(zhí)行一條指令后,指令地址加1;雙字長指令或三字長指令每執(zhí)行一條指令后,指令地址要加2或加3。可見多字長的指令格式不利于提高機器速度。(2)MIPSR4000指令格式

(教材P119)

MIPSR4000機為32位RISC機,采用32位定長指令格式,其指令字長32位,其指令格式如下表所示。6位5位5位5位5位6位opRsRtRdshamtfunctRR型(R型)OP:操作碼字段,6位,最多可設(shè)計:26=64條指令。Rs、Rt:源操作數(shù)寄存器,5位,可選擇25=32個寄存器。Rd:目的操作數(shù)寄存器,5位,可選擇32個寄存器。Shant:立即數(shù),5位,用于移位指令的移位值。Funct:功能碼,6位,可指定指令的特定操作。031特點:MIPS機的所有運算與處理操作,都是在寄存器之間進行(RR型),∴執(zhí)行速度很快。當需要訪問存儲器(取數(shù)/存數(shù))時,則采用下面指令格式:6位5位5位16位opRsRtRS型(I型)常數(shù)或地址(Addres)031目的操作數(shù)(3)ARM機、pentium機指令格式

(見教材P120-121,略)1或20或10或10,1,2,40,1,2,4操作碼ModReg或操作碼R/M比例S變址I基址B位移量立即數(shù)2位3位3位2位3位3位

這種非固定長度的指令格式是典型的CICS結(jié)構(gòu)特征。一是為了與它的前身80486保持兼容,二是希望能給編譯程序的編制以更多靈活的編程支持。

Pentium機的指令字長度也是可變的:從1字節(jié)到12字節(jié),還可以帶前綴。指令格式如下所示:0或10或10或10或1(字節(jié)數(shù))指令前綴段取代操作數(shù)長度取代地址長度取代(字節(jié)數(shù))

指令的前綴是可選項,其作用是對其后的指令本身進行顯示約定。每個前綴占1個字節(jié)。

指令前綴包括LOCK(鎖定)前綴和重復(fù)前綴。LOCK前綴用于多CPU環(huán)境中對共享存儲器的排他性訪問。重復(fù)前綴用于字符串的重復(fù)操作,以獲得比軟件循環(huán)方法更快的速度。段取代前綴根據(jù)指令的定義和程序的上下文,一條指令所使用的段寄存器名稱可以不出現(xiàn)在指令格式中,這稱為段缺省規(guī)則。當要求一條指令不按缺省規(guī)則使用某個段寄存器時,必須以段取代前綴明確指明此段寄存器。

操作數(shù)長度取代前綴和地址長度取代前綴在實地址模式下,操作數(shù)和地址的默認長度是16位;在保護模式下,若D=1,操作數(shù)和地址的默認長度是32位,若D=0,二者的默認長度是16位。

指令本身由操作碼字段、Mod-R/M字段、SIB字段、位移量字段、立即數(shù)字段組成。除操作碼字段外,其他四個字段都是可選字段。

Mod-R/M字段:規(guī)定了存儲器操作數(shù)的尋址方式,給出了寄存器操作數(shù)的寄存器地址號。

SIB字段:和Mod-R/M字段一起,對操作數(shù)來源進行完整的說明。

舉例:

(教材P121)

[例1]

指令格式如下所示,其中OP為操作碼,試分析該指令格式的特點。1597430OP--------源寄存器目標寄存器[解]:

(1)該指令為:單字長(16位)、二地址指令。

(2)操作碼字段OP長度為7位,可以指定:27=128條指令。

(3)源寄存器Rs和目的寄存器Rt都是通用寄存器(各4位代碼,可分別指定16個寄存器)。

(4)兩個操作數(shù)均在寄存器中,所以屬于RR型指令,其執(zhí)行速度快。這種指令結(jié)構(gòu)常用于快速處理或運算類指令。

Rs

Rt

[例2]

指令格式如下所示,其中OP為操作碼,試分析指令格式的特點。1510987430OP

--------源寄存器變址寄存器位移量(16位)

[解]:

(1)機器字長16位;指令格式為:雙字長、二地址指令;

(2)操作碼字段OP為6位,可以指定26=

64種指令。

(3)一個操作數(shù)在源寄存器中(可以從24=16個寄存器中選擇一個);另一個操作數(shù)在存儲器中(由變址寄存器和位移量決定該數(shù)的內(nèi)存地址),屬于RS型指令。①②前面討論已知:在指令字長固定的情況下,可以利用操作碼擴展,有效地增加指令的條數(shù)。(見后例)[例]

:某16位機,指令操作碼OP有6位,可采用操作碼擴展法來分別構(gòu)造單地址指令和零地址指令,設(shè)機器的單字長雙地址指令格式如下:15109540OP

A1

A2試分析:該機器可以分別有多少條二地址指令、單地址指令和零地址指令?[解]:已知:在二地址指令格式中,操作碼OP只有6位。二地址指令:OP=000000~111110(共26-1=63條);留出:OP=111111,作為單地址指令標志:單地址指令OP為:111111

00000~111111

11110

(25-1=31條)

留出:OP=111111

11111

,作為零地址指令標志:

零地址指令OP為:11111111111

00000~1111111111111111

(25=32條)A2也可擴充為操作碼這時:A1可擴充為操作碼;

A2作為單地址即可可見:

本例中,若采用操作碼長度固定格式(6位),則最多只能產(chǎn)生26=64條指令;而采用操作碼擴展法,則產(chǎn)生了(63+31+32)=126條指令??梢姡涸谥噶钭珠L固定的情況下,采用操作碼擴展的方法,可以得到更多的其它類型指令。15109540OP

A1

A24.3

操作數(shù)的類型

1、常規(guī)操作數(shù)類型包含四大類:(1)地址型數(shù)據(jù)A:A

是操作數(shù)的地址。(2)數(shù)值型數(shù)據(jù)D:D

直接表示操作數(shù)數(shù)值,其可以是定點數(shù)、浮點數(shù)、BCD碼數(shù)等。(3)字符型數(shù)據(jù):ASCII碼數(shù),用以表示文本或字符的數(shù)碼。(4)邏輯性數(shù)據(jù):用“1”、“0”表示邏輯性、狀態(tài)性等特性的邏輯數(shù)據(jù)。

OP字段

操作數(shù)字段AD2、Pentium數(shù)據(jù)類型常數(shù)、整數(shù)、序數(shù)、壓縮/未壓縮BCD碼數(shù)、浮點數(shù)等。

(見教材P122表4.6)3、PowerPC數(shù)據(jù)類型(見教材P123,自閱)PowerPC是一種32位RISC機器,能識別的數(shù)據(jù)類型包括:無符號字節(jié)、無符號半字、無符號字、無符號雙字、有符號半字、有符號字、字符串、IEEE754格式浮點字等。可見:不同機器會有不同的數(shù)據(jù)類型約定。無符號數(shù)4.4

指令和數(shù)據(jù)的尋址方式

指令系統(tǒng)∴所謂尋址方式:形成指令或數(shù)據(jù)存儲地址的方式。

無論是指令還是數(shù)據(jù),一般都存放在存儲器或寄存器中,要找到它們、并執(zhí)行或處理它們,首先要把它們?nèi)〉紺PU中,→需要給出(或形成)存放它們的存儲單元地址。DBUSCBUSABUSCPU存儲器

指令或數(shù)據(jù)(存儲單元)

指令或數(shù)據(jù)存儲地址的概念:

設(shè):某條指令(或操作數(shù))存放在某存儲單元中,則該存儲單元的編號(地址),就是該指令(或操作數(shù))的存儲地址。[尋址方式]:形成指令(或操作數(shù))“存儲地址”的方式,稱為

尋址方式。(由CPU根據(jù)要求自動完成)[尋址方式的類別]:(1)指令尋址方式:形成指令地址的方式。(2)數(shù)據(jù)尋址方式:形成操作數(shù)有效地址的方式。指令系統(tǒng)如何實現(xiàn)尋址?包括兩種:(1)順序?qū)ぶ?/p>

(2)跳躍尋址1.

順序?qū)ぶ贩绞?/p>

特點:通常,CPU總是依次取出指令、順序執(zhí)行指令、直至完成程序。→

∴指令地址被依次順序生成,指令的這種尋址方式稱為“順序?qū)ぶ贩绞健?。【實現(xiàn)方法】

通常采用程序計數(shù)器PC(又稱;指令指針寄存器)即可,計數(shù)器PC可自動順序地給出指令在內(nèi)存中的地址。

(見后圖)指令系統(tǒng)4.4.1

指令的尋址方式

由PC給出指令在內(nèi)存中的地址?!?/p>

(指令的順序?qū)ぶ贩绞剑?.跳躍尋址方式

當程序需跳出當前順序,轉(zhuǎn)到一個新地址運行時,指令的尋址則為:跳躍尋址方式。

所謂跳躍:是指下條指令的地址碼,不是由程序計數(shù)器PC順序地產(chǎn)生,而是通過執(zhí)行當前指令、直接修改PC產(chǎn)生的新地址。

——修改后的PC會自動跟蹤新的指令地址。

采用指令的跳躍尋址方式,可以實現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,從而有效縮短程序長度,或引用某些公共程序。

(如:指令系統(tǒng)中的各種條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令)指令系統(tǒng)舉例順序:跳躍:新地址→PC(通過執(zhí)行“轉(zhuǎn)移指令”實現(xiàn))LDA1000ADD1001DEC1200JMP

7

LDA2000SUB2001INCSTA2500LDA1100...0123456789PC+1指令地址尋址方式指令地址指令順序?qū)ぶ?順序?qū)ぶ?

順序?qū)ぶ?跳躍尋址7順序?qū)ぶ?指令尋址舉例:(指令尋址方式演示)7(PC)+1→PC可見,在指令尋址方式中:

順序?qū)ぶ肥怯桑ǔ绦蛴嫈?shù)器)PC

控制實現(xiàn);

跳躍尋址則是由指令本身控制

實現(xiàn)。

?

?總體上:指令尋址方式主要為上述兩種方式,簡單明確,實現(xiàn)方便。4.4.2操作數(shù)尋址方式

[定義]:形成操作數(shù)的有效地址的方法,稱為:操作數(shù)的

尋址方式。

以單地址指令為例:指令格式如下所示,其中用X、I、A各字段組成該指令的操作數(shù)地址字段。

注意:指令中操作數(shù)字段所給出的地址碼,經(jīng)常由形式地址A和尋址方式特征位X、I等組合形成。

指令系統(tǒng)形式地址

A變址

X

間址

I

操作碼

OP

操作碼字段操作數(shù)字段

一般來說:指令中所給出的地址碼,常常只是一個形式地址A,并不是操作數(shù)真正的有效地址EA。

操作數(shù)的尋址過程:就是把形式地址A變換為操作數(shù)的有效地址EA的過程。指令系統(tǒng)

注意到:相對于指令尋址方式來說,數(shù)據(jù)尋址方式要豐富靈活得多。形式地址

A變址

X

間址

I

操作碼

OP

操作碼字段操作數(shù)字段定義有效地址EA

的形成方式A→EA1.隱含尋址

特點:在指令中不明顯的給出操作數(shù)的地址。(將其地址隱含)

例如:單地址的匯編指令格式:

DIVBL

在指令的操作數(shù)字段中,沒有指明第二操作數(shù)地址,通常約定為專用寄存器(如累加器AC),AC對單地址指令格式來說就是一個隱含地址。AXBL,商存AL中,余數(shù)存AH中。操作數(shù)的基本尋址方式:(見教材P124表4.7,9種)

OP

A2.

立即尋址

指令系統(tǒng)特點:

指令的地址字段A不是操作數(shù)的地址,而直接是操作數(shù)D本身,即:D=A。

這種方式中,由于指令中直接給出了操作數(shù)D,不需要通過訪問內(nèi)存去取數(shù),因而,指令執(zhí)行時間很短。OP(移位)F

AA例如:某單地址的移位指令格式為:

這里A不是地址,而是操作數(shù)D本身(D=A)。

F為標志位:當F=1:對操作數(shù)執(zhí)行右移D位;當F=0:對操作數(shù)執(zhí)行左移D位。OP(移位)F

A又例:指令MOVAX,#010H;操作:010HAX(寄存器)其中:010H就是一個立即可用的操作數(shù),不需要訪問內(nèi)存去取。3.直接尋址

特點:

在指令格式的地址字段中,直接給出操作數(shù)的有效地址,即:EA=A

因此,在這種尋址方式中,形式地址A又稱為直接地址。可以由尋址特征位I給予指示。(例如:I=0)

設(shè):D表示操作數(shù),那么直接尋址的邏輯表達式為:

EA=A

D=M(A)

操作碼I

A尋址特征位ADI=0EA操作數(shù)D形式地址A就是有效地址EA:EA=A4.

間接尋址

特點:指令地址字段中的形式地址A不是操作數(shù)的有效地址EA,而是存放EA的內(nèi)存單元M地址。

即:A單元的內(nèi)容才是操作數(shù)的有效地址:EA=M(A)。

——可以由尋址特征位I給予指示。(例如:I=1)

∴如果把直接尋址和間接尋址結(jié)合起來,指令有如下形式:

尋址特征位:

I=0,表示直接尋址,有效地址:EA=A;

I=1,表示間接尋址,有效地址:EA=M(A)。

這時:操作數(shù)D=M(EA)=M((A))。指令系統(tǒng)操作碼OPI

AEAEAADD

顯然,間接尋址方式至少需要兩次訪存,才能取出操作數(shù),會影響到指令執(zhí)行速度。操作數(shù)DAI=1M(A)M(EA)5.

寄存器尋址方式和寄存器間接尋址方式

寄存器尋址方式:

當操作數(shù)不放在內(nèi)存中,而是在CPU的通用寄存器中時,則可采用寄存器尋址方式。此時指令中操作數(shù)直接給出通用寄存器的編號Ri、Rj

即可。例如,指令:ADDR0,R1;

(R0)+(R1)

R0

(操作數(shù)在寄存器中)OPRi

Rj寄存器間接尋址方式:

指令格式中所指定的寄存器Ri中的內(nèi)容不是操作數(shù),而是操作數(shù)的存儲地址。即:EA=M(Ri)。試問:這種方式所給出的操作數(shù)是在哪里?OPIRi

Rj在內(nèi)存中!有效地址:EA=M(Ri)操作數(shù):D=M(EA)=M((Ri))尋址特征位6.

相對尋址方式

特點:是把程序計數(shù)器PC的內(nèi)容加上指令中給出的形式地址A,進而形成操作數(shù)的有效地址。

即:

EA=(PC)±A。

由于PC的內(nèi)容是當前指令的地址,所以,“相對”尋址,就是指操作數(shù)地址相對于當前的指令地址而言。采用相對尋址方式的好處是操作數(shù)可以隨著程序一起浮動。

此時,形式地址A稱為“偏移量”,其值可正可負,相對于當前指令地址進行浮動。

OPIX

A尋址特征位EADEAD尋址特征位7.基址尋址(1)采用專用寄存器作基址寄存器RB,操作數(shù)的有效地址為:EA=(RB)+ARB

為基址寄存器OPA操作數(shù)D主存尋址特征位ALURB

可擴大尋址范圍

有利于多道程序共享RB內(nèi)容由操作系統(tǒng)或管理程序確定

在程序的執(zhí)行過程中RB內(nèi)容不變,形式地址A可變EAIXD+(2)采用通用寄存器Ri作基址寄存器操作數(shù)D主存尋址特征位ALUOPR0A指定R0

作基址寄存器

由用戶指定某個通用寄存器Ri作為基址寄存器通用寄存器R0Rn-1R1…

基址寄存器的內(nèi)容由操作系統(tǒng)確定

在程序的執(zhí)行過程中(Ri

)內(nèi)容不變,形式地址A可變EAIXD+指令系統(tǒng)特點:

這種尋址方式是將CPU中基址寄存器RB的內(nèi)容與指令中給定的形式地址A相加,形成操作數(shù)的有效地址,

即:

EA=(RB)±A

主要優(yōu)點:可以擴大尋址能力。與形式地址A相比,基址寄存器RB的位數(shù)可以設(shè)置得較長,從而可以在較大的存儲空間中尋址。

∴基址尋址的主要目的是擴大尋址空間。

(演示)EA=(RX)+AOPA操作數(shù)主存尋址特征位ALURXRX

為變址寄存器(專用)

可有規(guī)律地調(diào)整操作數(shù)地址

便于處理數(shù)組問題RX

的內(nèi)容由用戶給定

在程序的執(zhí)行過程中RX

內(nèi)容可變,形式地址A不變通用寄存器R也可以指定為變址寄存器8.變址尋址方式

EAIXD+特點:

把CPU中定義的變址寄存器RX的內(nèi)容與偏移量A相加,形成操作數(shù)的有效地址EA。

即:EA=(RX)±A

(可見,變址尋址方式與基址尋址方式計算有效地址的方法很相似)與基址尋址方式的區(qū)別:

變址尋址方式的目的是為了便于實現(xiàn)程序塊的規(guī)律性移動或變化,而不是為了擴大尋址空間。指令系統(tǒng)見后例例:

設(shè)數(shù)據(jù)塊內(nèi)存首地址為A,求100個數(shù)的平均值直接尋址LDAA; (A)→Ac(累加器)ADDA+1; (A+1)+(Ac)→AcADDA+2;

(A+2)+(Ac)→Ac…ADDA+99;(A+99)+(Ac)→AcDIV#100;

(Ac)/100→AcSTAANS共用102條指令變址尋址CLR;0→AcLDX#0CPX#100BNELOPDIV#100STAANS僅用8條指令變址寄存器X清0M((X)+A)+(Ac)→Ac

(X)和#100比較(X)+1X(X)≠#100

跳轉(zhuǎn)LOP:INX(Ac)/100→ACADDX,A教材P126,把相對尋址、基址尋址、變址尋址統(tǒng)稱為“偏移尋址”。應(yīng)當注意到:三種尋址方式中,盡管形成操作數(shù)地址的方法類似,但是各自的特點和實現(xiàn)目標是不相同的。9.段尋址方式

很多微型機中采用了段尋址方式,用于擴大尋址空間。例如:如何在16位機中形成20位的地址,從而獲得1M存儲空間的直接尋址能力?指令系統(tǒng)

[實現(xiàn)方法]:

1M空間的存儲器需要20位地址;而16位地址只能尋址64K空間。→可以將1M空間分為24=16段,每段216=64K空間。在段尋址時,由段寄存器給出一個基地址(段號),再加上一個16位偏移量,來形成實際的20位物理地址。

在形成20位物理地址時,將段寄存器中的16位數(shù)左移4位,然后以16位偏移量相加,即可形成所需的20位的內(nèi)存地址。(教材P127)可見,這種尋址方式的實質(zhì)還是基址尋址。

(演示)

+10、堆棧尋址

堆棧:是能方便存儲和取出數(shù)據(jù)的一組地址連續(xù)的暫存單元。這些暫存單元既可以是寄存器組,也可以是存儲器。∴計算機中常用兩種形式的堆棧:

(1)寄存器堆棧(2)存儲器堆棧。堆棧和其它形式存儲器的區(qū)別:對數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌??!褩2捎谩跋冗M后出”的存取管理方法,通過堆棧指針寄存器SP來實現(xiàn)管理。堆棧中:所有的數(shù)據(jù)進?;虺鰲6际峭ㄟ^棧頂單元來完成。

∴堆棧尋址時,地址指針SP總指向棧頂單元:EA=(SP)。

通常:CPU通過“進?!敝噶?PUSH)把數(shù)據(jù)存入堆棧;而通過“出?!敝噶?POP)把數(shù)據(jù)從堆棧中取出(彈出)。

由于計算機中的寄存器資源有限,無法適應(yīng)批量數(shù)據(jù)的暫存任務(wù)?!喈斝枰欢ㄒ?guī)模的堆棧時,程序員通常在主存儲器中設(shè)置一部分區(qū)域來作為堆棧,這是堆棧的一種主要形式:存儲器堆棧。

堆棧通常有“進棧PUSH”、“出棧POP”兩種操作,按照“先進后出”的原則進行存取操作。

見CAI演示注:

當主存儲器的一部分單元被用作堆棧區(qū)后,這一部分就不能用作其它用途。小結(jié):

與指令的尋址方式相比較,操作數(shù)的尋址方式要豐富、靈活很多。操作數(shù)尋址方式的重點:操作數(shù)有效地址EA的形成方法尋址空間大小的確定(取決于什么?)

各尋址方式的特點。舉例分析練習(xí):假設(shè)(R)=1000,M(1000)=2000,M(2000)=3000,(PC)=4000,問在以下尋址方式下,訪問到的操作數(shù)D各為何值?

(1)寄存器尋址R; (2)寄存器間接尋址M(R),(3)直接尋址A=1000; (4)間接尋址A=1000

(5)相對尋址A=-2000; (6)立即數(shù)尋址A=2000[解]:

(1)

EA=RD=(R)=1000;寄存器的內(nèi)容就是操作數(shù)

(2)EA=(R)=1000,D=M((R))=M(1000)=2000;

(3)EA=A=1000,D=M(1000)=2000; (4)EA=M(A)=M(1000)=2000,D=M(2000)=3000;

(5)EA=(PC)+A=4000-2000=2000,D=M(2000)=3000; (6)D=A=2000;A本身就是操作數(shù)4.4.3尋址方式設(shè)計舉例

(見Pentium機尋址)

1.PDP/11系列機尋址方式

PDP/11系列機指令字長為16位。雖然指令系統(tǒng)中有單操作數(shù)指令和雙操作數(shù)指令,但操作數(shù)字段(即地址部分)均由6位二進制構(gòu)成。例如,其二地址指令格式如下:151211109876543210操作碼尋址方式寄存器號尋址方式寄存器號源地址目標地址PDP/11計算機CPU中有8個程序可訪問的寄存器(R0-R7)。其中:R7作為程序計數(shù)器PC使用,R6作為堆棧指示器SP使用,而其它6個寄存器R0-R5可作為通用寄存器。因此,用指令中的3位指定寄存器號。

指令中有3位用于尋址方式選擇,可指定8種尋址方式。此外還有4種指令計數(shù)器型尋址方式屬于隱含尋址方式,它們以訪問R7(程序計數(shù)器PC)為標志。所以,操作數(shù)共有12種尋址方式。(6位)(6位)(當應(yīng)用R7寄存器尋址時,為4種指令計數(shù)器型尋址方式)R7用作PC尋址名稱

尋址特征值有效地址E匯編格式說明程序計數(shù)器型

立即型010(PC)+2→PC;

E=(PC)#n指令下一個單元內(nèi)容是操作數(shù)的地址絕對值011(PC)+2→PC;

E=((PC))@#A指令下一個單元內(nèi)容是操作數(shù)的地址相對型110(PC)+2→PC;E=((PC))+(PC)+2;A指令下一個單元內(nèi)容與指令地址加4的數(shù)相加,其和作為操作數(shù)的地址

相對間接型111(PC)+2→PC;E=(((PC))+(PC)+2)@A指令下一個單元內(nèi)容與指令地址加4的數(shù)相加,其和作為操作數(shù)地址的地址可以看出:

PDP/11尋址方式的特征是采用寄存器進行尋址。當在寄存器R7中尋址時,變?yōu)樗姆N隱含的指令計數(shù)器PC尋址方式。

指令系統(tǒng)1、Pentium的尋址方式:

Pentium的外部地址總線寬度是36位,但它也支持32位物理地址空間(4G)。在實地址模式下,邏輯地址形式為段尋址方式:將段名所指定的段寄存器內(nèi)容(16位)左移4位(低4位補0),得到20位段基地址,再加上16位段內(nèi)偏移,即得20位物理地址,可尋址1M的實地址空間。在保護模式下,32位段基地址加上段內(nèi)偏移,得到32位線性地址LA。由存儲管理部件將其轉(zhuǎn)換成32位的物理地址,最大可尋址4G的空間。指令系統(tǒng)序號尋址方式名稱有效地址EA算法說明(1)立即操作數(shù)=A操作數(shù)在指令中(2)寄存器EA=R操作數(shù)在寄存器中,指令給出寄存器號(3)直接EA=AA為偏移量(4)基址EA=(RB)RB為基址寄存器(5)基址+偏移量EA=(RB)+A基址尋址(6)比例變址+偏移量EA=(RI)×S+A

RI為變址寄存器S=1,2,4,8為比例因子(7)基址+變址+偏移EA=(RB)+(RI)+AA可有可無(8)基址+比例變址+偏移量EA=(RB)+(RI)×S+AA可有可無(9)相對EA=(PC)+APC為程序計數(shù)器或當前指令指針寄存器Pentium機的尋址方式(見教材P128圖4.4和表4.8)對32位尋址方式作幾點說明:(自閱)

⑴立即數(shù)可以是8位,16位,32位。

⑵寄存器地址:一般指令或使用8位通用寄存器,或使用16位通用寄存器,或使用32位通用寄存器。對64位浮點數(shù)操作,要使用一對32位寄存器。少數(shù)指令以段寄存器來實施寄存器尋址方式。

⑶直接尋址:也稱偏移量尋址方式,偏移量長度可以是8位,16位,32位。

⑷基址尋址:基址寄存器B可以是上述通用寄存器中任何一個?;芳拇嫫鰾的內(nèi)容為有效地址。

⑸基址+偏移量尋址:基址寄存器B是32位通用寄存器中任何一個。

⑹比例地址+偏移量尋址:也稱為變址尋址方式,變址寄存器I是32位通用寄存器中除ESP外的任何一個,而且可將此變址寄存器內(nèi)容乘以1,2,4或8的比例因子S,然后再加上偏移量而得到有效地址。

⑺,⑻兩種尋址方式是⑷,⑹兩種尋址方式的組合,此時偏移量可有可無。

⑼相對尋址:適用于轉(zhuǎn)移控制類指令。用當前指令指針寄存器EIP或IP的內(nèi)容(下一條指令地址)加上一個有符號的偏移量,形成CS段的段內(nèi)偏移。指令系統(tǒng)2、PowerPC的尋址方式:(自閱)指令格式分析與設(shè)計舉例[例4]某二地址、RS型指令的結(jié)構(gòu)如下所示:

(書P129)

其中:I為間接尋址標志位,X為尋址模式字段,D位偏移量字段(形式地址)。通過I、X、D的組合,可構(gòu)成下表所示的尋址方式。請寫出六種尋址方式的名稱。(第二個操作數(shù))

2位X存儲器操作數(shù)

寄存器操作數(shù)

偏移量DI通用寄存器------OP16位

1位4位6位

設(shè)R1為基址寄存器EA=(R1)±D110(6)EA=(D)001(5)EA=(R3)111(4)設(shè)R2為變址寄存器EA=(R2)±D100(3)PC為程序計數(shù)器EA=(PC)±D010(2)EA=D000(1)說明有效地址EAXI尋址方式直接尋址

相對尋址

變址尋址

寄存器間接尋址間接尋址基址尋址2位X存儲器操作數(shù)

寄存器操作數(shù)

偏移量DI通用寄存器------OP16位

1位4位6位【例】習(xí)題8(教材P137):指令格式設(shè)計與分析

某機器字長32位,主存容量為1MB,單字長指令,有50種操作碼,采用寄存器尋址、寄存器間接尋址、立即、直接等尋址方式。CPU中有PC,IR,AR,DR和16個通用寄存器。問:(1)指令格式如何安排?寫出EA,指出尋址空間的大小。(2)能否增加其它尋址方式?解:(1)指令格式設(shè)計單字長指令→∴指令字長為32位有50條指令,→至少OP=6位

16個通用寄存器∴寄存器操作數(shù)為4位。

4種尋址方式:寄存器尋址、寄存器間接尋址

立即尋址、直接尋址→尋址特征位IX至少為2位。312625242320190OPIXRiA(6位)(2位)(4位)(20位)∴指令格式(32位):設(shè): IX=00:寄存器尋址→操作數(shù)D=(Ri)

IX=10:寄存器間接尋址→EA=(Ri),D=(EA) IX=01:立即尋址→D=A(或D=A+Ri×220)

IX=11:直接尋址→EA=A,(或EA=A+Ri×220)各尋址方式下,尋址空間大小各為多少?……(EA)312625242320190OPIXRiA(6位)(2位)(4位)(20位)(24位)(2)還能否增加其它的尋址方式?

不能!尋址特征位IX已用滿。當然,可以重新設(shè)計指令格式,增加尋址特征位來增加尋址方式。

[例]

某16位機器所使用的指令格式如下所示,該機有兩個20位基址寄存器,四個16位變址寄存器,十六個16位通用寄存器。指令匯編格式中的S(源),D(目標)都是通用寄存器,M是主存中的一個單元。(教材P118-119)

三種指令的操作碼OP分別是:MOV=(0A)H

,STA=(1B)H

,LDA=(3C)H。

MOV是傳送指令,STA為寫數(shù)指令,LDA為讀數(shù)指令。指令格式如下:S、D都是寄存器操作數(shù)M是存儲器操作數(shù)要求:

⑴分析三種指令的指令格式與尋址方式特點。⑵CPU完成哪一種操作所花時間最短?哪一種操作所花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?⑶下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?

①(F0F1)H(3CD2)H②(2856)H

③(6FD6)H④(1C2)H指令系統(tǒng)

第一種指令(MOVS,D):單字長、二地址指令,RR型;

②第二種指令(STAS,M):雙字長、二地址指令,RS型,其中,S采用基址尋址或變址尋址,R由源寄存器決定;③第三種指令(LDAS,M):雙字長、二地址指令,RS型,其中,R由目標寄存器決定,S由20位地址(直接尋址)決定。⑴分析三種指令的指令格式與尋址方式特點?!獭獭烫幚頇C完成第一種指令所花時間最短,因為是RR型指令,執(zhí)行時不需要訪問存儲器。。⑵

∴結(jié)論為:第一條指令執(zhí)行速度最快;(RR型) 第三條指令速度次之;(RS型) 第二條指令執(zhí)行速度最慢。(RS型)并且:第二條指令的執(zhí)行速度一定比第三條指令慢。

第三種指令在執(zhí)行時也要訪問存儲器,但由于指令直接給出了存儲器操作數(shù)的有效地址,因而節(jié)省了求有效地址運算的時間開銷。所以第三種指令的執(zhí)行時間要比第二種指令快。第二種指令是RS型指令,指令執(zhí)行時需要訪問存儲器,同時要進行尋址方式的變換運算(基址或變址),這也需要時間。

⑶根據(jù)已知條件:MOV:(OP)=(0A)H=001010,STA:(OP)=(1B)H

=011011,LDA:(OP)=(3C)H

=111100

分析各指令的二進制代碼并進行格式分析和檢查:

①(F0F1)H(3CD2)H(雙字長指令)

=111100001111

00010011110011010010OP=3CH(LDA指令)20位地址=13CD2H

對照指令格式,可知其含義是:把主存(13CD2)H

地址單元的內(nèi)容取至15號寄存器中。

∴由前6位操作碼OP=(3C)H

,可知這是LDA(取數(shù))指令,操作碼編碼正確。目標寄存器號=0FH√

指令系統(tǒng)

②(2856)H=001010000101

0110

顯然:這是一條單字長,只可能是MOV指令。驗證操作碼(前6位):OP=(0A)H,可知操作碼編碼正確。目標寄存器號=05HOP=0AH源寄存器號=06H對照指令格式,該指令的功能是:把06號源寄存器的內(nèi)容傳送至05號目標寄存器。檢查操作碼OP:③(6FD6)H=110011111101

0110

這也是一條單字長指令,一定是MOV指令OP=(0A)H。可知:操作碼編碼錯誤!OP=33H目標寄存器號=0DH源寄存器號=06H∴應(yīng)當改正為:001010111101

0110=(2BD6)H

OP=0AH其含義是:把06號源寄存器的內(nèi)容→至0D號目標寄存器中。

指令系統(tǒng)

④(1C2)H=0000000111000010

是單字長指令,也代表MOV指令,但操作碼OP顯然錯誤!

OP=00H目標寄存器號=0CH源寄存器號=02H可改正為:0010100111000010=(29C2)H

其含義是:把02號源寄存器的內(nèi)容→至0C號目標寄存器。OP=0AH堆棧尋址方式(略)4.4.1

串聯(lián)堆棧4.4.2

存儲器堆棧

指令系統(tǒng)

堆棧:是一組能方便存儲和取出數(shù)據(jù)的暫存單元。這些暫存單元既可以是存儲器,也可以是寄存器。堆棧和其它形式存儲器的差別:

堆棧對數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌S嬎銠C中常用兩種形式的堆棧:

(1)串聯(lián)堆棧(2)存儲器堆棧。4.4.1串聯(lián)堆棧串聯(lián)堆棧(又稱作:寄存器堆棧):

一些計算機的CPU中有一組專門用作堆棧的寄存器,有16個或更多,它們稱為串聯(lián)堆棧,其中每一個寄存器都能保存一個數(shù)據(jù)字。

當由于某種原因,需要空出某個通用寄存器時,就可將該通用寄存器內(nèi)容先暫存入堆棧。以后若需要這部分數(shù)據(jù)時,又可以從堆棧中取回來。由于串聯(lián)堆棧的操作主要在寄存器之間進行,所以,操作的速度較快。

(CAI演示)

指令系統(tǒng)

由CAI可以看出,在串聯(lián)堆棧中:所有的數(shù)據(jù)傳送是在棧頂和某個通用寄存器之間進行的,即:通用寄存器僅和堆棧的頂部單元相聯(lián)系,且棧頂單元是固定的。通常,CPU通過“進?!敝噶畎褦?shù)據(jù)送入堆棧,而通過“出?!敝噶畎褦?shù)據(jù)從堆棧中取出。這種結(jié)構(gòu)通常稱作“下壓堆?!被颉按?lián)堆棧”。指令系統(tǒng)堆棧特點:

每當一個新數(shù)被壓進棧頂時,數(shù)據(jù)是串聯(lián)地依次向下壓進堆棧;所以,數(shù)據(jù)出棧時,最后進入棧的數(shù)總是首先從棧中取出。因此,這種結(jié)構(gòu)通常又稱為“后進先出”(或“先進后出”)堆棧。[串聯(lián)堆棧存在的問題]:指令系統(tǒng)

1、計算機中可用于堆棧的寄存器數(shù)目一般是有限的。如堆棧有8個寄存器,那么把多于8個的數(shù)據(jù)壓入堆棧時,最下面的數(shù)據(jù)就從棧底漏出并被丟失。

2、串聯(lián)堆棧的讀出是破壞性的。即:當從堆棧取出一個數(shù)時,它原來在堆棧寄存器單元中的內(nèi)容將被其它內(nèi)容所覆蓋,所以,原內(nèi)容將不存在。

∴當需要一定規(guī)模的堆棧時,程序員通常在主存儲器中設(shè)置一部分區(qū)域來作為堆棧,所以有堆棧的另一種形式:存儲器堆棧。4.4.2存儲器堆棧[存儲器堆棧的優(yōu)點]:指令系統(tǒng)

⑴堆棧的長度可以任意設(shè)定;[存儲器堆棧的管理方法]:“棧頂浮動”

存儲器堆棧的“進棧”,“出?!辈僮饕奀AI演示:⑶可以用訪存指令對堆棧中的數(shù)據(jù)進行直接訪問。⑵堆棧的個數(shù)可以隨意設(shè)定;

設(shè)置堆棧指示器SP,它是CPU中一個專用的寄存器。SP指定的存儲器單元,總是堆棧的棧頂單元。注:

當主存儲器的一部分單元被用作堆棧區(qū)后,這一部分就不能用作其它用途。

當建立存儲器堆棧時,可用程序來設(shè)置。把一個主存地址送入堆棧指示器SP,就可確定堆棧的棧頂。在存儲器堆棧中,數(shù)據(jù)的壓入或取出操作,通常也是使用“進?!敝噶詈汀俺鰲!敝噶顏韺崿F(xiàn)的,但是指令的功能和串聯(lián)堆棧中的情況有所不同。

指令系統(tǒng)(1)進棧操作可描述如下:

(A)→Msp

,(SP)-1→SP其中(A)表示通用寄存器A的內(nèi)容,SP表示堆棧指示器,Msp

則表示存儲器堆棧的棧頂單元。SP=(300)8SPaSP=(277)8SPaa(數(shù)據(jù)進棧)指令系統(tǒng)aSPSP=(277)8(2)出棧操作描述如下:

(SP)+1→SP,(Msp)→A

SPSP=(300)8aa(數(shù)據(jù)出棧)注意到:

在此例存儲器堆棧中,進棧時,先存入數(shù)據(jù),然后修改堆棧指示器SP;出棧時,先修改堆棧指示器SP,然后取出數(shù)據(jù)。

SP的初始值為堆棧區(qū)域的最高地址,同時SP總指向下一個要進棧數(shù)據(jù)的存儲單元。進棧時,SP的調(diào)整為遞減;出棧時,SP的調(diào)整為遞增。指令系統(tǒng)課后思考:

若建立存儲器堆棧時,堆棧區(qū)域的最低地址送入堆棧指示器SP,且SP總指向剛進棧的最新數(shù)據(jù)的存儲單元時,存儲器的進棧和出棧過程如何描述?4.5

典型指令4.5.1

指令的分類4.5.2

基本指令系統(tǒng)4.5.3

精簡指令系統(tǒng)指令系統(tǒng)4.5.1指令的分類

基本完善系統(tǒng)的指令類別1.數(shù)據(jù)傳送指令

(教材P130~131)

數(shù)據(jù)傳送指令主要包括:取數(shù)指令、存數(shù)指令、傳送指令、成組傳送指令、字節(jié)交換指令、清累加器指令、堆棧操作指令等等。這類指令特點:主要用來實現(xiàn)主存和寄存器之間,或寄存器和寄存器之間的數(shù)據(jù)傳送。指令系統(tǒng)2.算術(shù)運算指令

這類指令包括:二進制定點加、減、乘、除指令,浮點加、減、乘、除指令,求反、求補指令,算術(shù)移位指令,算術(shù)比較指令,十進制加、減運算指令等。這類指令主要用于機器數(shù)的算術(shù)運算,大型機中有向量運算指令等。指令系統(tǒng)3.邏輯運算指令

這類指令包括:邏輯加、邏輯乘、按位加、邏輯移位等指令,主要用于無符號數(shù)的位操作、代碼的轉(zhuǎn)換、判斷及運算。移位指令用來對寄存器的內(nèi)容實現(xiàn)左右移動,包括:算術(shù)移位、邏輯移位、循環(huán)移位等。指令系統(tǒng)4.程序控制指令

也稱轉(zhuǎn)移指令。根據(jù)不同測試結(jié)果執(zhí)行轉(zhuǎn)移,從而改變程序原來執(zhí)行的順序,這種轉(zhuǎn)移指令稱為“條件轉(zhuǎn)移指令”。

另外,還有無條件轉(zhuǎn)移指令、轉(zhuǎn)子程序指令、返回主程序指令、中斷返回指令等指令。轉(zhuǎn)移指令的轉(zhuǎn)移地址一般采用直接尋址(絕對轉(zhuǎn)移)和相對尋址(相對轉(zhuǎn)移)方式來確定。5.輸入輸出(I/O)指令

I/O指令主要用來控制外設(shè)工作,包括:啟動外圍設(shè)備、檢查測試外設(shè)的工作狀態(tài)、實現(xiàn)外設(shè)和CPU之間、或外設(shè)與外設(shè)之間的信息傳送等。

指令系統(tǒng)INAX,nOUTDX,ALOUTn,AXOUTDX,AXINAL,DXINAX,DXI/O輸入端口

溫馨提示

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

評論

0/150

提交評論