第四章 指令系統(tǒng)教材_第1頁
第四章 指令系統(tǒng)教材_第2頁
第四章 指令系統(tǒng)教材_第3頁
第四章 指令系統(tǒng)教材_第4頁
第四章 指令系統(tǒng)教材_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機組成原理白中英主編科學(xué)出版社第四章指令系統(tǒng)4.1指令系統(tǒng)的發(fā)展與性能要求4.2指令格式4.3操作數(shù)類型4.4指令和數(shù)據(jù)的尋址方式4.5典型指令返回4.1指令系統(tǒng)的發(fā)展與性能要求1、指令在計算機系統(tǒng)中的地位(1)是軟件和硬件分界面的一個主要標(biāo)志硬件設(shè)計人員采用各種手段實現(xiàn)它;軟件設(shè)計人員則利用它編制各種各樣的系統(tǒng)軟件和應(yīng)用軟件(2)是硬件設(shè)計人員和軟件設(shè)計人員之間的分界面,也是他們之間溝通的橋梁。2、指令系統(tǒng)基本概念指令:就是要計算機執(zhí)行某種操作的命令。從計算機組成的層次結(jié)構(gòu)來說,計算機的指令有微指令、機器指令和宏指令之分。微指令是微程序級的命令,它屬于硬件;宏指令:由若干條機器指令組成的軟件指令,它屬于軟件;機器指令:介于微指令與宏指令之間,通常簡稱為指令,每一條指令可完成一個獨立的算術(shù)運算或邏輯運算操作。本章所討論的指令,是機器指令。一臺計算機中所有機器指令的集合,稱為這臺計算機的指令系統(tǒng)。指令系統(tǒng)是表征一臺計算機性能的重要因素,它的格式與功能不僅直接影響到機器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機器的適用范圍3、發(fā)展情況復(fù)雜指令系統(tǒng)計算機,簡稱CISC。但是如此龐大的指令系統(tǒng)不但使計算機的研制周期變長,難以保證正確性,不易調(diào)試維護,而且由于采用了大量使用頻率很低的復(fù)雜指令而造成硬件資源浪費。精簡指令系統(tǒng)計算機:簡稱RISC,人們又提出了便于VLSI技術(shù)實現(xiàn)的精簡指令系統(tǒng)計算機。4.2指令格式一條指令應(yīng)包含如下信息:進行何種操作:即操作性質(zhì)。體現(xiàn)在指令中被稱為操作碼。操作的對象:數(shù)據(jù)來源以及如何尋找操作數(shù)。體現(xiàn)在指令中被稱為地址碼操作結(jié)果:結(jié)果存放在何處。下一條指令又如何尋找指令格式指令由操作碼和地址碼兩部分組成,它的基本格式如下:操作碼地址碼

?

操作碼是說明指令操作性質(zhì)的二進制數(shù)代碼。

?操作碼所占的二進制位數(shù)決定了一臺計算機所能允許的指令條數(shù)。

例如,操作碼占用六位二進制碼時,這臺計算機最多允許有:

26=64條指令1.操作碼

固定長度操作碼是指操作碼所占的二進制位數(shù)固定不變,而且集中放在指令字的一個字段中。這種格式有利于簡化硬件設(shè)計,減少指令譯碼時間,廣泛用于字長較長的大、中型計算機和超級小型計算機中。例如IBM370和VAX﹣11系列機中,操作碼的長度都是8位,可表示256條指令。

(2)可變長度操作碼可變長度操作碼是操作碼擴展技術(shù)的應(yīng)用,即操作碼的長度是可變的,且分散地放在指令的不同字段中。這種格式有利于壓縮程序中操作碼的平均長度,在字長較短的微型機中被廣泛應(yīng)用。如:PDP-11,INTEL8086/80386等,其操作碼的長度均是可變的。(1)固定長度操作碼操作碼字段分兩種:下圖是一種擴展操作碼的安排示意。這是一個16位字長的指令碼,包括4位基本操作碼字段和三個

4位長的地址字段。4位基本操作碼,若全部用于三地址指令,則有16條。

顯然,4位基本操作碼是不夠的,必須向地址碼字段擴展操作作碼的長度。其擴展方法及步驟如下:

OP

A1

A2

A3

4位4位4位4位①15條三地址指令的操作碼由4位基本操作碼0000~1110所給定,剩下一個1111則用于把操作碼擴展到X地址碼字段,即由4位擴展到8位;

②14條二地址指令的操作碼由8位操作碼的1111,0000~1111,1101給定,剩下的1111,1110和1111,1111又可用于把操作碼擴充到Y(jié)地址字段,即從8位又?jǐn)U充到12位;③

31條一地址指令的操作碼由12位操作碼的

1111,1110,0000~1111,1111,1110給定。15條三地址指令14條二地址指令31條一地址指令

0001XXXXYYYYZZZZ

1110XXXXYYYYZZZZ

11110000YYYYZZZZ

11110001YYYYZZZZ

11111101YYYYZZZZ

111111100000ZZZZ

111111100001ZZZZ

111111111110ZZZZ

┆0000XXXXYYYYZZZZ由此類堆,還可以把剩下的1111,1111,1111擴充到Z地址碼字段而形成的16位操作碼,這時還可由1111,1111,1111,0000~1111,1111,1111,1111給出16條零地址指令。

除了這種安排外,還有多種其它安排方法。如:形成15條三地址指令,12條二地址指令,31條一地址指令,16條零地址指令,共74條指令。實際的機器可以采用各種靈活的擴展方式,其思路與此類似。

1111111100001111111111110001111111111111111116零上述方法是在不增加指令長度的情況下,采用對地址少的指令使用較長的操作碼,對地址數(shù)多的指令使用較短的操作碼。其實質(zhì)是增加了指令的數(shù)量,豐富了指令的功能。

在可變長操作碼的指令系統(tǒng)設(shè)計中,究竟使用何種擴展方法為好,指令的使用頻度(即在程序中出現(xiàn)的概率)是非常重要的依據(jù)。即頻度高的指令應(yīng)分配短的操作碼,頻度低的指令則分配較長的操作碼。這樣,既可有效地縮短操作碼在程序中的平均長度,節(jié)省存儲空間,又可縮短常用指令的譯碼時間以提高程序的運行速度。

其缺點是譯碼系統(tǒng)比固定操作碼復(fù)雜,增加了設(shè)計控制器的難度,需要更多的硬件作支持。

指令中的地址碼用來指出該指令的源操作數(shù)地址(一個或兩個)、

結(jié)果地址及下一條指令的地址。這里的地址可以是主存地址,也可以是寄存器地址,甚至可以是I/O設(shè)備的地址。2.地址碼下面以主存地址為例,分析指令的地址碼字段。

OP:操作碼;

A1:第一地址碼,存放第一操作數(shù);

A2:第二地址碼,存放第二操作數(shù);

A3:第三地址碼,存放操作結(jié)果;

A4:第四地址碼,存放下條要執(zhí)行指令的地址。

操作:(A1)OP(A2)→A3(1)四地址指令指令格式:OPA1A2A3A4?這種指令直觀易懂,后續(xù)指令的地址可任意填寫。?可直接尋址的地址范圍與地址字段的位數(shù)有關(guān)。

例如:指令字長32位,操作碼占8位,4個地址段各占6位,則指令的直接尋址范圍為:

26=64

?如果地址字段均指示主存的地址,則完成一條四地址指令,共需訪問四次存儲器(取指令一次,取兩個操作數(shù)兩次,存結(jié)果一次)。?因為程序中大部分指令都是順序執(zhí)行的,當(dāng)采用指令計數(shù)器后,A4地址可以省去。(2)三地址指令指令格式:

OP

A1

A2

A3?

三地址指令中各項含義與四地址指令相同。由于采用了指令計數(shù)器(又稱程序計數(shù)器,簡稱PC),省去了A4地址;?用三地址指令編寫的程序,其指令在內(nèi)存中必須依次存放,才能利用程序計數(shù)器自動增量的辦法順序執(zhí)行。若程序要轉(zhuǎn)向時,必須用轉(zhuǎn)移指令改變程序的執(zhí)行順序。?如果指令字長不變(32位),操作碼仍為8位,故三地址指令直接尋址范圍可達(dá):28=256?若地址字段均為主存地址,則完成一條三地址指令也需四次訪問存儲器。

OP:操作碼;

A1:既作第一操作數(shù)地址,又作目的地址;

A2:第二操作數(shù)地址。

操作:(A1)OP(A2)→A1(3)二地址指令指令格式:

OP

A1

A2?有的機器也表示(A1)OP(A2)→A2,A2既作第一操作數(shù)地址,又作目的地址;?在不改變字長和操作碼位數(shù)的前提下,二地址指令可直接訪問的主存地址數(shù)為:212=4K?使用二地址指令編寫的程序,其指令在內(nèi)存中也要依次存放,才能用程序計數(shù)器自動增量使之順序執(zhí)行。若程序發(fā)生轉(zhuǎn)向時,也必須用轉(zhuǎn)移指令改變程序的執(zhí)行順序。?當(dāng)二地址指令執(zhí)行之后,A1中的內(nèi)容被修改了。有的機器規(guī)定A2為目的地址,這時則是A2的內(nèi)容被修改了。?若地址字段均為主存地址,則完成一條二地址指令也需四次訪問存儲器。二地址指令格式中,從操作數(shù)的物理位置來說,又可歸結(jié)為三種類型。存儲器-存儲器(SS)型指令:操作時都是涉及內(nèi)存單元,參與操作的數(shù)都放在內(nèi)存里,從內(nèi)存某單元中取操作數(shù),操作結(jié)果存放至內(nèi)存另一單元中,因此機器執(zhí)行這種指令需要多次訪問內(nèi)存。寄存器-寄存器(RR)型指令:需要多個通用寄存器或個別專用寄存器,從寄存器中取操作數(shù),把操作結(jié)果放到另一寄存器。機器執(zhí)行寄存器-寄存器型指令的速度很快,因為執(zhí)行這類指令,不需要訪問內(nèi)存。寄存器-寄存器(RS)型指令:執(zhí)行此類指令時,既要訪問內(nèi)存單元,又要訪問寄存器。

指令中只給出一個操作數(shù)地址,另一個操作數(shù)地址和目的地址則是隱含的。這個隱含的地址就是運算器的累加寄存器AC。(4)一地址指令

OP

A指令格式:操作:(AC)OP(A)→AC?在不改變字長和操作碼位數(shù)的前提下,二地址指令可直接訪問的主存地址數(shù)為:224=16M

?完成一條指令只需兩次訪存;?采用一地址指令編寫的程序,其指令在內(nèi)存中也要順序存放,由程序計數(shù)器自動增量控制其順序執(zhí)行。程序轉(zhuǎn)向時,也用轉(zhuǎn)移指令改變程序的執(zhí)行方向。?在程序執(zhí)行前,必須用一條“取數(shù)指令”把其中一個操作數(shù)放到累加寄存器中。程序結(jié)束后,累加寄存器的內(nèi)容已被修改。若要將累加寄存器中的結(jié)果送回內(nèi)存,則必須使用“存數(shù)指令”。?沒有操作數(shù)地址的指令稱為零地址指令。?執(zhí)行零地址指令時,被運算的操作數(shù)地址全部是隱含的,指令格式中只說明作什么操作。?如停機指令就是零地址指令。(5)零地址指令3.指令字長度與機器字長度的關(guān)系?機器字長度簡稱字長,指計算機能直接處理的二進制數(shù)據(jù)的位數(shù)。?字長是計算機中的一項重要技術(shù)指標(biāo),字長越長,計算機的運算精度越高;?字長還能反映指令的直接尋址能力,若字長n位全用來尋址,可直接尋址2n個字節(jié)。?為了便于處理字符數(shù)據(jù)及盡可能地利用存儲空間,一般把機器字長定為字節(jié)長度(8位)的整數(shù)倍,即是8位、16位、32位或64位。?微型、小型機的字長多為8位、16位和32位,中、大型機的字長多為32位和64位。因此,一個字中可以存儲1個、2個、4個或8個字符。(1)機器字長

指令字的長度取決于操作碼的長度、操作數(shù)地址的長度和操作數(shù)地址的個數(shù)。由于操作碼的長度、操作數(shù)地址的長度以及所采用操作數(shù)地址數(shù)目不同,各種指令的長度不是固定的,當(dāng)然也不是任意的。為了充分利用存儲空間,指令字的長度也定為字節(jié)長度的整數(shù)倍。例如INTEL8086/80586系列機的指令長度分別為8位、16位、24位、32位、48位等。而最長的指令可達(dá)120位。(2)指令字長(3)指令字長與機器字長的關(guān)系?指令字長度與機器字長度沒有固定的關(guān)系,它可以等于機器字長,也可以大于或小于機器字長。?指令字長度等于機器字長度的指令,稱為單字長指令;指令字長等于兩個機器字長的指令,稱為雙字長指令;指令字長度只有半個機器字長度的指令,稱為半字長指令。例如IBM370系列機的機器字長為32位,它卻有16位的半字長指令、32位的單字長指令、48位的一個半字長指令。?等字長指令結(jié)構(gòu)在同一個指令系統(tǒng)中,所有的指令字長度都是相等的,稱為等字長指令字結(jié)構(gòu),這種指令字結(jié)構(gòu)簡單,控制方便;?變字長指令結(jié)構(gòu)如果各種指令字長度隨指令的功能而變化,如有的指令是單字長指令,有的指令是雙字長指令或三字長指令,則稱為變字長指令結(jié)構(gòu),這種指令字結(jié)構(gòu)靈活,能充分利用指令字長度,但指令的控制較復(fù)雜。各種指令字的結(jié)構(gòu)情況地址

II+1I+2I+3指令指令指令指令┆一個字長┆┆指令指令指令指令地址

II+1I+2I+3一個字長指令指令指令指令┆地址

II+1I+2I+3指令1指令2一個字長┆單字長指令雙字長指令半字長指令變字長指令指令3一個字長地址II+1I+2I+3I+4I+5I+6指令1指令2┆4.指令助記符由于硬件只能識別1和0,所以采用二進制操作碼是必要的,但是我們用二進制來書寫程序卻非常麻煩。為了便于書寫和閱讀程序,每條指令通常用3個或4個英文縮寫字母來表示。這種縮寫碼叫做指令助記符。典型指令指令助記符二進制操作碼加法

ADD

001減法

SUB

010傳送

MOV

011跳轉(zhuǎn)

JMP

100轉(zhuǎn)子

JSR

101存儲

STR

110讀數(shù)

LDA

111典型的指令助記符5.指令格式舉例八位微型計算機的指令格式

8位微型機字長只有8位,指令結(jié)構(gòu)是一種可變字長形式,包含單字長、雙字長、三字長指令等多種。單字長指令操作碼雙字長指令操作碼操作數(shù)地址三字長指令操作碼操作數(shù)地址1操作數(shù)地址2內(nèi)存按字節(jié)編址,所以單字長指令每執(zhí)行一條指令后,指令地址加1。雙字長指令或三字長指令每執(zhí)行一條指令時,指令地址要加2或加3,可見多字長的指令格式不利于提高機器速度。例指令格式如下所示,其中OP為操作碼,試分析指令格式的特點。

OP

--------源寄存器目標(biāo)寄存器15

9

7

43

0解:

(1)單字長二地址指令。

(2)操作碼字段OP可以指定128條指令。

(3)源寄存器和目標(biāo)寄存器都是通用寄存器(可分別指定16個),所以是RR型指令,兩個操作數(shù)均在寄存器中。

(4)這種指令結(jié)構(gòu)常用于算術(shù)邏輯運算類指令。例指令格式如下所示,OP為操作碼字段,試分析指令格式特點。

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

10

7

43

0解:

(1)雙字長二地址指令,用于訪問存儲器。

(2)操作碼字段OP為6位,可以指定64種操作。

(3)一個操作數(shù)在源寄存器(共16個),另一個操作數(shù)在存儲器中(由變址寄存器和位移量決定),所以是RS型指令。4.3操作數(shù)類型操作數(shù)類型地址數(shù)據(jù):地址實際上也是一種形式的數(shù)據(jù)。數(shù)值數(shù)據(jù):計算機中普遍使用的三種類型的數(shù)值數(shù)據(jù)。字符數(shù)據(jù):文本數(shù)據(jù)或字符串,目前廣泛使用ASCII碼。邏輯數(shù)據(jù):一個單元中有幾位二進制bit項組成,每個bit的值可以是1或0。當(dāng)數(shù)據(jù)以這種方式看待時,稱為邏輯性數(shù)據(jù)。Pentium數(shù)據(jù)類型(見P111表4.4)常規(guī)數(shù)據(jù)類型整數(shù)數(shù)據(jù)類型……..存儲器既可以存放數(shù)據(jù)又可以存放指令。因此當(dāng)某個操作數(shù)或某條指令存放在某個存儲單元時,其存儲單元的編號,就是該操作數(shù)或指令在存儲器中的地址。

?在存儲器中,操作數(shù)或指令字寫入或讀出的方式,有地址指定方式、相聯(lián)存儲方式和堆棧存取方式。

?幾乎所有的計算機,在內(nèi)存中都采用地址指定方式

?當(dāng)采用地址指定方式時,形成操作數(shù)或指令地址的方式,稱為尋址方式。

?尋址方式分為兩類,即指令尋址方式和數(shù)據(jù)尋址方式,前者比較簡單,后者比較復(fù)雜。4.4指令和數(shù)據(jù)的尋址方式1.指令的尋址方式指令的尋址方式有兩種,一種是順序?qū)ぶ贩绞?,另一種是跳躍(轉(zhuǎn)移)尋址方式。(1)順序?qū)ぶ贩绞街噶畹刂吩趦?nèi)存中按順序安排,當(dāng)執(zhí)行一段程序時,通常是一條指令接一條指令的順序執(zhí)行。從存儲器取出第一條指令,然后執(zhí)行這條指令;接著從存儲器取出第二條指令,再執(zhí)行第二條指令;接著再取出第三條指令……這種程序順序執(zhí)行的過程,我們稱為指令的順序?qū)ぶ贩绞?。為此,必須使用程序計?shù)器(又稱指令指針寄存器)PC來計數(shù)指令的順序號,該順序號就是指令在內(nèi)存中的地址。(2)轉(zhuǎn)移尋址方式當(dāng)程序轉(zhuǎn)移執(zhí)行的順序時,指令的尋址就采取轉(zhuǎn)移尋址方式。所謂轉(zhuǎn)移,是指下條指令的地址碼不是由程序計數(shù)器給出,而是由本條指令給出。程序轉(zhuǎn)移后,按新的指令地址開始順序執(zhí)行。指令計數(shù)器的內(nèi)容也必須相應(yīng)改變,以便及時跟蹤新的指令地址。采用指令轉(zhuǎn)移尋址方式,可以實現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序,從而能縮短程序長度,或?qū)⒛承┏绦蜃鳛楣渤绦蛞?。指令系統(tǒng)中的各種條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令,就是為了實現(xiàn)指令的轉(zhuǎn)移尋址而設(shè)置的。6操作數(shù)的尋址方式一種單地址指令的一般結(jié)構(gòu)?指令中操作數(shù)字段的地址碼是由形式地址和尋址方式特征位等組合形成;一般來說,指令中所給出的地址碼,并不是操作數(shù)的有效地址。?因此尋址過程就是把操作數(shù)的形式地址,變換為操作數(shù)的有效地址的過程。操作碼(OP)尋址特征(X)形式地址(D)操作碼OP變址X間址I形式地址D

在指令中不明顯地給出操作數(shù)的地址,其操作數(shù)或操作數(shù)的地址隱含在某個通用寄存器中或指定的存儲單元中。例如:①單地址的指令格式,沒有在地址字段中指明第二操作數(shù)地址,而是規(guī)定累加寄存器AC作為第二操作數(shù)地址,AC對單地址指令格式來說是隱含地址。②IBM-PC機中的乘法指令:MULOPR這種方式可以縮短指令的長度,在字長較短的微型機或小型機中被廣泛采用。(1)隱含尋址

(2)立即尋址所需的操作數(shù)由指令的直接給出,稱為立即數(shù)尋址方式,簡稱立即尋址。

OP#D立即尋址特征立即數(shù)這種方式的特點是:取指令時將操作碼和一個操作數(shù)同時取出,不必再次訪問存儲器。提高了指令的執(zhí)行速度,但操作數(shù)只是指令的一部分,其數(shù)值受到了限制。還應(yīng)指出:在微型和小型計算機中,內(nèi)存是按字節(jié)編址的。若前一個字節(jié)是操作碼,緊跟著的第二個字節(jié)就是立即操作數(shù)。因此,立即數(shù)尋址又稱為鄰接型尋址,或者說,操作數(shù)緊跟著操作碼。這條指令的執(zhí)行結(jié)果是“把立即數(shù)1536傳送到目的寄存器Ri中”。其匯編符號記為:MOVRi,#1536。例如:操作碼特征寄存器號立即數(shù)

Ri

MOV

#

Ri

1536

1536(3)直接尋址直接尋址是指指令中的地址碼就是操作數(shù)的有效地址,按這個地址可直接在存儲器中存入或取得操作數(shù)。采用直接尋址方式時,指令字中的形式地址D就是操作數(shù)的有效地址E,既E=D。因此通常把形式地址D又稱為直接地址。此時,由尋址模式給予指示,如X1=0。如果用S表示操作數(shù),那么直接尋址的邏輯表達(dá)式為:

S=(E)=(D)圖中特征碼X1指明是采用直接尋址。該指令表示“把1536號存儲單元中存放的操作數(shù)153400取出,送入存器Ri中

”。其匯編符號記為:MOVRi,(D)。

直接地址也可以用公式表示,若設(shè)有效地址為EA,則可記為:

當(dāng)X1=0時,EA=D。(D就是有效地址)例:153400操作碼特征寄存器號直接地址碼D

153400指令

MOVX1

Ri

1536

PC:內(nèi)存儲器1536

Ri(4)間接尋址指令中的地址碼部分給出的既不是操作數(shù),又不是操作數(shù)的地址,而是存放操作數(shù)地址的內(nèi)存單元的地址,這個地址叫做間接地址。其尋址方式稱為間接尋址方式,簡稱間址。通常在間接尋址情況下,由尋址特征位給予指示,如X2=1。(a)一次間址

MOVRi,((D))(b)二次間址

MOVRi,(((D)))例如:內(nèi)存MOVX2

Ri

Ri102522001220001323100310010250操作碼特征寄存器號地址碼DMOV操作碼特征寄存器號地址碼D內(nèi)存Ri03200X2

Ri

0132013232001025MOV1025(5)寄存器尋址方式和寄存器間接尋址方式①寄存器直接尋址

如果指令的地址碼部分給出的是某通用寄存器編號Ri,Ri寄存器中存放著操作數(shù),則稱為寄存器直接尋址。例如:執(zhí)行ADDRi指令,該指令說明Ri是操作數(shù)的有效地址,從Ri中取出操作數(shù)與累加器的內(nèi)容相加,其結(jié)果放在累加器中。

ADDRiRi操作數(shù)尋址特征寄存器號②寄存器間接尋址

寄存器間接尋址,是指令中地址字段所指的寄存器中存放的是操作數(shù)的地址。例如:執(zhí)行ADD@Ri

指令時,說明Ri不是操作數(shù)的有效地址,而是存放操作有效地址的寄存器號。

ADD

@

Ri操作數(shù)地址

Ri內(nèi)存操作數(shù)操作碼尋址特征寄存器號(6)相對尋址方式相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形式地址D而形成操作數(shù)的有效地址。程序計數(shù)器的內(nèi)容就是當(dāng)前指令的地址?!跋鄬Α睂ぶ罚褪窍鄬τ诋?dāng)前的指令地址而言。此時形式地址D通常稱為偏移量,其值可正可負(fù),相對于當(dāng)前指令地址進行浮動。

PC的內(nèi)容為1000,指令的位移量(相對距離)為35。故其相對地址為1035。這個地址是不固定的,隨PC的值變化而變化,并且相對地差一個固定值。因此,無論程序裝入存儲器的任何區(qū)域,只要這個差值不變,程序均能正確運行。由于程序在內(nèi)存空間里是浮動的,又稱浮動尋址。例如:OPX735操作碼尋址特征位移量DPC:相對距離

=35內(nèi)存OPX735300010351000(7)基址尋址方式當(dāng)存儲容量較大,所需地址碼的長度大于字長時,指令中的地址碼部分直接給出的地址不可能直接訪問存儲器的所有單元。因此,把整個存儲空間分成若干段,每段的首地址存放在一個基址寄存器中,段內(nèi)的位移量由指令直接給出。于是,存儲器的實際地址就等于基址寄存器的內(nèi)容加上段內(nèi)位移量。這就叫做基址寄存器尋址方式,簡稱基址尋址。址(8)變址尋址方式

變址尋址是將指令中的基地址碼和一個“變址值”相加后形成操作數(shù)的有效地址?!白冎分怠贝娣旁谝粋€專用的變址寄存器Ri中或?qū)S玫膬?nèi)存單元中。變址值是根據(jù)程序需要而設(shè)置的,與本條指令中的地址長度無關(guān),只要變址寄存器的字長足夠長,可以進行內(nèi)存全容量的訪問。使用起來十分靈活。

X3=1EA=(Ri)+DX3=1EA=(Ri)+D

有效地址

EA=1000+0080=1080有效地址

EA=1000+0080=1080

操作數(shù)=(1080)=2050操作數(shù)=(1080)=2050(a)Ri為變址寄存器時的變址尋址(b)Ri為內(nèi)存變址單元時的變址尋址內(nèi)存20501000操作碼尋址特征變址單元號opX3

Ri00801080基地址碼D內(nèi)存操作碼尋址特征變址器號基地址碼D20501080變址寄存器

1000Ri

OPX3

Ri

0080例一種二地址RS型指令的結(jié)構(gòu)如下所示:?OP—通用寄存器IX偏移量D6位4位1位2位16位其中I為間接尋址標(biāo)志位,X為尋址模式字段,D為偏移量字段,通過I,X,D的組合,可構(gòu)成下表所示的尋址方式。請寫出6種尋址方式的名稱。尋址方式舉例尋址方式IX有效地址E算法說明(1)(2)(3)(4)(5)(6)000110000110110011E=DE=(PC)±DE=(R2)±DE=(R3)E=(D)E=(R1)±D

PC為程序計數(shù)器R2為變址寄存器

R1為基址寄存器解:(1)直接尋址(6)基址尋址(2)相對地址(3)變址尋址(4)寄存器間接尋址(5)間接尋址例某16位機所使用指令格式和尋址方式如下所示。該機有兩個20位基值寄存器,四個16位變址寄存器,十六個16位通用寄存器。指令格式中的S(源),D(目標(biāo))都是通用寄存器,M是主存中的一個單元。三種指令的操作碼分別是MOV(OP)=(A)H,MOV是傳送指令,

STA(OP)=(1B)H,STA為寫數(shù)指令

LDA(OP)=(3C)H。LDA為讀數(shù)指令OP――目標(biāo)源MOVS,D1510987430

20位地址目標(biāo)

――

OPLDAM,D

1510987430OP基址源變址位移量1510987430STAS,M要求:(1)分析三種指令格式與尋址方式特點。(2)CPU完成哪一種操作所花時間最短?哪一種操作花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?

(3)下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?①(F0F1)H(3CD2)H②(2856)H③(6FD6)H④(1C2)H第一種指令是單字長二地址指令,RR型;第二種指令是雙字長二地址指令,RS型,其中S采用基址尋址或變址尋址,R由源寄存器決定;第三種也是雙字長二地址指令,RS型,其中R由目標(biāo)寄存器決定,S由20位地址(直接尋址)決定。解:(1)(2)第一種指令所花時間最短,因為是RR型指令,不需要訪問存儲器。

第二種指令所花時間最長,因為是RS型指令,需要訪問存儲器,同時要進行尋址方式的變換運算(基值或變址),這也需要時間。

第三種指令雖然也訪問存儲器,但節(jié)省了求有效地址運算的時間開銷。第二種指令的執(zhí)行時間不會等于第三種指令的執(zhí)行時間。(3)根據(jù)已知條件:

MOV(OP)=001010,STA(OP)=011011,LDA(OP)=111100,

①(F0F1)H(3CD2)H=111100,00,1111,0001(3CD2)H

該指令代表LDA指令,編碼正確,其含義是把主存

(3CD2)H地址單位元的內(nèi)容取至15寄存器。目標(biāo)寄存器編號

LDA的操作碼

20位地址目標(biāo)

――

OPLDAM,D

1510987430②(2856)H=001010,00,0101,0110

代表MOV指令,編碼正確,含義是把6號源寄存器的內(nèi)容傳送至5號目標(biāo)寄器。OP――目標(biāo)源MOVS,D1510987430源寄存器編號目標(biāo)寄存器編號根據(jù)已知條件:

MOV(OP)=001010,STA(OP)=011011,LDA(OP)=111100,③?(6FD6)H=011011,11,1101,0110

該指令是單字長指令,一定是MOV指令,但編碼錯誤,可改正為001010,00,1101,0110=(28D6)H④?(1C2)H=000000,01,1100,0010

該指令是單字長指令,代表MOV指令,但編碼錯誤,可改正為001010,00,1100,0010=(28C2)H。OP――目標(biāo)源MOVS,D1510987

溫馨提示

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

評論

0/150

提交評論