組成原理第4章(指令系統(tǒng))_第1頁
組成原理第4章(指令系統(tǒng))_第2頁
組成原理第4章(指令系統(tǒng))_第3頁
組成原理第4章(指令系統(tǒng))_第4頁
組成原理第4章(指令系統(tǒng))_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

指令系統(tǒng)歷來都是考試的常考點本章要求:

1.簡單了解指令系統(tǒng)的發(fā)展和性能要求;2.掌握指令的一般格式;3.掌握尋址方式,指令分類和功能;4.能熟練分析指令系統(tǒng)模型和設(shè)計簡單要求的指令系統(tǒng)。

指令概述?

用計算機解題時,一般都要編制程序,程序既可用高級語言編寫,亦可用機器語言編寫;?但計算機只能夠識別和執(zhí)行用機器語言編寫的程序;?各種高級語言編寫的應(yīng)用程序,最終都要翻譯成機器語言來執(zhí)行。?機器語言是由一系列的指令(語句)組成的;?指令的格式就是機器語言的語法;?每條指令規(guī)定機器完成一定的功能。?一臺計算機的所有的指令集合稱為該機的指令系統(tǒng)或指令集。它是程序工作者編制程序的基本依據(jù),也是進行計算機邏輯設(shè)計的基本依據(jù)。4.1指令系統(tǒng)的發(fā)展與性能要求一條指令應(yīng)包含如下信息:

●進行何種操作:即操作性質(zhì)。體現(xiàn)在指令中被稱為操作碼?!癫僮鞯膶ο螅簲?shù)據(jù)來源以及如何尋找操作數(shù)。體現(xiàn)在指令中被稱為地址碼?!癫僮鹘Y(jié)果:結(jié)果存放在何處?!裣乱粭l指令又如何尋找:

一般由PC(程序計數(shù)器)指示。4.2指令格式

指令由操作碼和地址碼兩部分組成,它的基本格式如下:●操作碼是說明指令操作性質(zhì)的二進制數(shù)代碼。

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

【例】:操作碼位長=6位(占用六位二進制碼)時,這臺計算機最多允許有:

26=64條指令1.操作碼操作碼字段地址碼字段

(1)固定長度操作碼

固定長度操作碼是指操作碼所占的二進制位數(shù)固定不變,而且集中放在指令字的一個字段中。

這種格式有利于簡化硬件設(shè)計,減少指令譯碼時間,廣泛用于字長較長的大、中型計算機和超級小型計算機中。

(2)可變長度操作碼

可變長度操作碼是操作碼擴展技術(shù)的應(yīng)用,即操作碼的長度是可變的,且分散地放在指令的不同字段中。這種格式有利于壓縮程序中操作碼的平均長度,在字長較短的微型機中被廣泛應(yīng)用。操作碼字段分兩種:

擴展操作碼的安排。

這是一個16位字長的指令碼,包括4位基本操作碼字段和三個4位長的地址字段。4位基本操作碼,若全部用于三地址指令,則有16條。

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

OPA1A2

A34位4位4位4位(3)擴展操作碼技術(shù)操作碼的位數(shù)隨地址數(shù)的減少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作碼8位操作碼12位操作碼16位操作碼最多15條三地址指令最多15條二地址指令最多15條一地址指令16條零地址指令(3)擴展操作碼技術(shù)操作碼的位數(shù)隨地址數(shù)的減少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作碼8位操作碼12位操作碼16位操作碼三地址指令操作碼每減少一種可多構(gòu)成24種二地址指令二地址指令操作碼每減少一種可多構(gòu)成24

種一地址指令

上述方法是在不增加指令長度的情況下,采用對地址少的指令使用較長的操作碼,對地址數(shù)多的指令使用較短的操作碼。其實質(zhì)是增加了指令的數(shù)量,豐富了指令的功能。在可變長操作碼的指令系統(tǒng)設(shè)計中,究竟使用何種擴展方法為好,指令的使用頻度(即在程序中出現(xiàn)的概率)是非常重要的依據(jù)。即頻度高的指令應(yīng)分配短的操作碼,頻度低的指令則分配較長的操作碼。這樣,既可有效地縮短操作碼在程序中的平均長度,節(jié)省存儲空間,又可縮短常用指令的譯碼時間以提高程序的運行速度。其缺點是譯碼系統(tǒng)比固定操作碼復(fù)雜,增加了設(shè)計控制器的難度,需要更多的硬件作支持。

指令中的地址碼用來指出該指令的源操作數(shù)地址(一個或兩個)、結(jié)果地址及下一條指令的地址。這里的地址可以是主存地址,也可以是寄存器地址,甚至可以是I/O設(shè)備的地址。2.地址碼

按地址碼的多少,指令一般可以分為(固定操作碼長):●三地址指令●二地址指令●一地址指令●零地址指令操作碼A操作碼操作碼A1A2操作碼A1A2A3(1)三地址指令指令格式:

OPA1A2

A3

三地址指令中各項含義與四地址指令相同。由于采用了指令計數(shù)器(又稱程序計數(shù)器,簡稱PC),省去了A4地址;?

如果指令字長不變(32位),操作碼仍為8位,故三地址指令直接尋址范圍可達:28=256?

若地址字段均為主存地址,則完成一條三地址指令也需四次訪問存儲器。

OP:操作碼;A1:既作第一操作數(shù)地址A2:第二操作數(shù)地址A3:目的地址

操作:(A1)OP(A2)→A3

OP:操作碼;A1:既作第一操作數(shù)地址,又作目的地址;A2:第二操作數(shù)地址。

操作:(A1)OP(A2)→A1(2)二地址指令指令格式:OPA1A2?有的機器也表示(A1)OP(A2)→A2,A2既作第一操作數(shù)地址,又作目的地址;?在不改變字長和操作碼位數(shù)的前提下,二地址指令可直接訪問的主存地址數(shù)為:212=4K

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

OP

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

?完成一條指令只需兩次訪存;?

沒有操作數(shù)地址的指令稱為零地址指令。?

執(zhí)行零地址指令時,被運算的操作數(shù)地址全部是隱含的,指令格式中只說明作什么操作。?

如停機指令就是零地址指令。(4)零地址指令指令類型劃分

在二地址指令格式中,根據(jù)指令中源操作數(shù)所處位置的不同,可分為三種類型:寄存器—寄存器(RR)型

兩個源操作數(shù)均來自于通用寄存器;寄存器—存儲器(RS)型一個源操作數(shù)來自于通用寄存器,另一個操作數(shù)來自于主存單元;存儲器—存儲器(SS)型兩個源操作數(shù)均來自于主存單元。3.指令字長度與機器字長度的關(guān)系?

機器字長度簡稱字長,指計算機能直接處理的二進制數(shù)據(jù)的位數(shù)。?

字長是計算機中的一項重要技術(shù)指標,字長越長,計算機的運算精度越高;?

字長還能反映指令的直接尋址能力,若字長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ù)倍。(2)指令字長(3)指令字長與機器字長的關(guān)系?

指令字長度與機器字長度沒有固定的關(guān)系,它可以等于機器字長,也可以大于或小于機器字長。?

指令字長度等于機器字長度的指令,稱為單字長指令;指令字長等于兩個機器字長的指令,稱為雙字長指令;指令字長度只有半個機器字長度的指令,稱為半字長指令。

?

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

在同一個指令系統(tǒng)中,所有的指令字長度都是相等的,稱為等字長指令字結(jié)構(gòu),這種指令字結(jié)構(gòu)簡單,控制方便;?

變字長指令結(jié)構(gòu)

如果各種指令字長度隨指令的功能而變化,如有的指令是單字長指令,有的指令是雙字長指令或三字長指令,則稱為變字長指令結(jié)構(gòu),這種指令字結(jié)構(gòu)靈活,能充分利用指令字長度,但指令的控制較復(fù)雜?!纠?/p>

某指令系統(tǒng)采用定長的指令格式,設(shè)指令字長為16位,每個地址碼的長度為6位,指令分為二地址指令、一地址指令和零地址指令三類。若二地址指令為K種,零地址指令為L種,問一地址指令最多能設(shè)計多少種?

【解】:畫出三類指令的指令格式如圖所示。

設(shè)一地址指令為X種,根據(jù)題意,有:L≤((24-K)×26-X)×26X≤210-K×26-L×2-6

所以,一地址指令最多能設(shè)計210-K×26-L×2-6種。4位6位6位二地址指令:OPA1A2K種10位6位一地址指令:OPAX種16位零地址指令:OPL種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,可見多字長的指令格式不利于提高機器速度。4.3指令和數(shù)據(jù)尋址方式

存儲器既可以存放數(shù)據(jù)又可以存放指令。因此當(dāng)某個操作數(shù)或某條指令存放在某個存儲單元時,其存儲單元的編號,就是該操作數(shù)或指令在存儲器中的地址。

?

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

?

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

?

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

?

尋址方式分為兩類,即指令尋址方式和數(shù)據(jù)尋址方式,前者比較簡單,后者比較復(fù)雜。1.指令的尋址方式

指令的尋址方式有兩種,一種是順序?qū)ぶ贩绞?,另一種是跳躍(轉(zhuǎn)移)尋址方式。(1)順序?qū)ぶ贩绞?/p>

指令地址在內(nèi)存中按順序安排,當(dāng)執(zhí)行一段程序時,通常是一條指令接一條指令的順序執(zhí)行。

從存儲器取出第一條指令,然后執(zhí)行這條指令;接著從存儲器取出第二條指令,再執(zhí)行第二條指令;接著再取出第三條指令……這種程序順序執(zhí)行的過程,我們稱為指令的順序?qū)ぶ贩绞健?/p>

為此,必須使用程序計數(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è)置的。32.操作數(shù)的尋址方式?操作數(shù)的尋址就是尋找操作數(shù)的地址,其目的是尋找所需要的操作數(shù)。?尋址方式就是指尋找操作數(shù)地址所用的方法,它與計算機的硬件結(jié)構(gòu)密切相關(guān),對指令的格式和功能都有極大的影響。從使用的觀點來看,尋址方式和匯編語言程序設(shè)計的關(guān)系更加密切。?由于各種計算機的硬件結(jié)構(gòu)各不相同,指令格式亦多種多樣,因而,尋址方式也就千差萬別,這里僅對常見的單操作數(shù)地址的尋址方式作介紹。用這些最基本的尋址方式可以組合成各類計算機中更為復(fù)雜的尋址方式。一種單地址指令的一般結(jié)構(gòu)?指令中操作數(shù)字段的地址碼是由形式地址和尋址方式特征位等組合形成;

一般來說,指令中所給出的地址碼,并不是操作數(shù)的有效地址。?因此尋址過程就是把操作數(shù)的形式地址,變換為操作數(shù)的有效地址的過程。

尋址方式

操作碼OP

變址X

間址I形式地址A

在指令中不明顯地給出操作數(shù)的地址,其操作數(shù)或操作數(shù)的地址隱含在某個通用寄存器中或指定的存儲單元中。

例如:

①單地址的指令格式,沒有在地址字段中指明第二操作數(shù)地址,而是規(guī)定累加寄存器AC作為第二操作數(shù)地址,AC對單地址指令格式來說是隱含地址。

這種方式可以縮短指令的長度,在字長較短的微型機或小型機中被廣泛采用。(1)隱含尋址

3.隱含尋址操作數(shù)地址隱含在操作碼中ADDA操作數(shù)主存尋址特征AACC暫存ALU另一個操作數(shù)隱含在ACC中(2)立即尋址

所需的操作數(shù)由指令的直接給出,稱為立即數(shù)尋址方式,簡稱立即尋址。OP#D立即尋址特征立即數(shù)這種方式的特點是:

取指令時將操作碼和一個操作數(shù)同時取出,不必再次訪問存儲器。提高了指令的執(zhí)行速度,但操作數(shù)只是指令的一部分,其數(shù)值受到了限制。(3)寄存器直接尋址方式

如果指令的地址碼部分給出的是某通用寄存器編號Ri,Ri寄存器中存放著操作數(shù),則稱為寄存器直接尋址?!纠浚簣?zhí)行ADDRi指令,

該指令說明Ri是操作數(shù)的有效地址,從Ri中取出操

作數(shù)與累加器的內(nèi)容相加,其結(jié)果放在累加器中。RiADDIRi尋址特征寄存器號

操作數(shù)通用寄存器組

寄存器間接尋址,是指令中地址字段所指的寄存器中存放的是操作數(shù)的地址。OPIRR(4)寄存器間接尋址方式操作數(shù)地址E通用寄存器組

主存操作數(shù)操作數(shù)有效地址

E=(R)操作數(shù)S=(E)=((R))(5)直接尋址

直接尋址是指指令中的地址碼就是操作數(shù)的有效地址,按這個地址可直接在存儲器中存入或取得操作數(shù)。

采用直接尋址方式時,指令字中的形式地址A就是操作數(shù)的有效地址E,既E=A。因此通常把形式地址A又稱為直接地址。如果用S表示操作數(shù),那么直接尋址的邏輯表達式為:

S=(E)=(A)(6)間接尋址

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

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

MOVRi,(((D)))【例】:內(nèi)存MOVX2RiRi102522001220001323100310010250操作碼特征寄存器號地址碼DMOV操作碼特征寄存器號地址碼D

內(nèi)存Ri03200X2Ri0132013232001025MOV1025(7)相對尋址方式

相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形式地址A而形成操作數(shù)的有效地址。程序計數(shù)器的內(nèi)容就是當(dāng)前指令的地址。“相對”尋址,就是相對于當(dāng)前的指令地址而言。此時形式地址A通常稱為偏移量,其值可正可負,相對于當(dāng)前指令地址進行浮動。

E=(PC)+A(8)基址尋址方式

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

變址尋址是將指令中的基地址碼和一個“變址值”相加后形成操作數(shù)的有效地址。“變址值”存放在一個專用的變址寄存器Ri中或?qū)S玫膬?nèi)存單元中。

變址值是根據(jù)程序需要而設(shè)置的,與本條指令中的地址長度無關(guān),只要變址寄存器的字長足夠長,可以進行內(nèi)存全容量的訪問。使用起來十分靈活。OPX4Ri0080100010802000內(nèi)存20000300RiOPX5Ri00801000130002000800內(nèi)存Ri操作碼尋址特征變址器號基地址碼D

操作碼尋址特征變址器號基地址碼DX4=1EA=((Ri)+D)X5=1EA=(D)+(Ri)

有效地址

EA=(1000+0080)=2000有效地址

EA=1300+1000=2300

操作數(shù)

=(2000)=0300操作數(shù)

=(2300)=0200(a)先變址方式(b)后變址方式

基址尋址面向系統(tǒng),主要用于邏輯地址到物理地址的變換,用來解決程序在主存儲器中的再定位和擴大尋址空間等問題。在一些大型機中,基址寄存器是由管理程序利用特權(quán)指令來使用,用戶程序無權(quán)修改它,從而確保了系統(tǒng)的安全性。

變址尋址則面向用戶,用于訪問字符串、向量和數(shù)組等成批數(shù)據(jù),沒有邏輯地址到物理地址的變換功能?;泛妥冎返膽?yīng)用方向(10)自動增量/減量尋址

這是寄存器間接尋址的一種變型,某些機器設(shè)計有能夠自動增加/減少其內(nèi)容的寄存器,每執(zhí)行該指令一次,寄存器的內(nèi)容就可以自動增量/減量。在自動增量尋址方式中,操作數(shù)在主存中的有效地址等于寄存器的內(nèi)容或寄存器的內(nèi)容與位移量之和,同時每執(zhí)行該指令一次,寄存器的內(nèi)容就自動增量(根據(jù)操作數(shù)是字節(jié)、字、雙字分別增加1、2、4)。常用助記符為(R)+,加號在括號之后,形象地表示先操作后修改寄存器的內(nèi)容。(11)堆棧尋址方式

堆棧有寄存器堆棧和存儲器堆棧兩種形式,現(xiàn)代計算機大都采用存儲器堆棧,存儲器堆棧是由程序員在主存空間開辟的一個以后進先出(LIFO)方式來訪問的存儲區(qū)域。使用存儲器堆棧的優(yōu)點是堆棧的容量大,并且訪問方便,缺點是進棧和出棧的速度慢。操作數(shù)存放在堆棧的尋址方式,稱為堆棧尋址。采用堆棧尋址的典型指令包括堆棧操作指令、中斷調(diào)用與返回指令、子程序調(diào)用與返回指令等。堆棧尋址方式(3)SP的修改與主存編址方法有關(guān)①按字編址進棧出棧(SP)–1SP(SP)+1SP②按字節(jié)編址存儲字長16位進棧出棧(SP)–2SP(SP)+2SP存儲字長32位進棧出棧(SP)–4SP(SP)+4SP【例】:一種二地址RS型指令的結(jié)構(gòu)如下所示:?OP—通用寄存器IX偏移量D6位4位

1位

2位

16位

其中I為間接尋址標志位,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)間接尋址【例】

設(shè)有一臺計算機,其指令長度為16位,有一類RS型指令的格式:

其中,OP為操作碼,占6位;R為寄存器編號,占2位,可訪問4個不同的通用寄存器;MOD為尋址方式,占2位,與形式地址A一起決定源操作數(shù),規(guī)定如下:MOD=00,為立即尋址,A為立即數(shù);MOD=01,為相對尋址,A為位移量;MOD=10,為變址尋址,A為位移量。

假定要執(zhí)行的指令為加法指令,存放在1000H單元中,形式地址A的編碼為01H,其中H表示十六進制數(shù)。該指令執(zhí)行前存儲器和寄存器的存儲情況如圖所示,假定此加法指令的兩個源操作數(shù)中一個來自于形式地址A或者主存,另一個來自于目的寄存器R0,并且加法的結(jié)果都存放在目的寄存器R0中。

在以下幾種情況下,該指令執(zhí)行后,R0和PC的內(nèi)容為多少?(1)若MOD=00,(R0)=

;(2)若MOD=01,(R0)=

;(3)若MOD=10,(R0)=

;(PC)=

?!窘狻浚?/p>

(1)若MOD=00,為立即尋址,則指令格式中的形式地址部分即為立即數(shù),因此一個源操作數(shù)為01H,另一個源操作數(shù)為R0的內(nèi)容0015H,加法指令執(zhí)行的結(jié)果為(R0)=0016H。(2)若MOD=01,為相對尋址,則一個源操作數(shù)的有效地址E=(PC)+A,在執(zhí)行加法指令時,PC的值為下一條指令的地址,即(PC)=1001H,由此可以算出這個源操作數(shù)的有效地址為E=1001H+01H=1002H,這個操作數(shù)為(E)=1150H,另一個源操作數(shù)為R0的內(nèi)容0015H,加法指令執(zhí)行的結(jié)果為(R0)=1165H。(3)若MOD=10,為變址尋址,則一個源操作數(shù)的有效地址E=(Rx)+A,由此可以算出這個源操作數(shù)的有效地址為E=1002H+01H=1003H,這個操作數(shù)為(E)=1250H,另一個源操作數(shù)為R0的內(nèi)容0015H,加法指令執(zhí)行的結(jié)果為(R0)=1265H;在執(zhí)行加法指令時,PC的值為下一條指令的地址,即(PC)=1001H。【例】

已知某計算機系統(tǒng)中有一類RS型指令,其指令格式如圖所示:

該指令長度為16位,已知CPU中有8個16位長的通用寄存器,這些寄存器也可作為基址寄存器使用,若要構(gòu)造16條RS型指令,問:(1)該類指令各段占用多少位?(2)能尋址的最大主存地址為多少?(3)若將RS型指令中的操作碼段擴展到寄存器尋址段而構(gòu)成S型指令,問此時RS型指令最多為多少條?在此基礎(chǔ)上S型指令最多可以設(shè)計多少條?【解】:(1)操作碼決定了指令的功能,若要構(gòu)造16條RS型指令,則操作碼段的位數(shù)為:[lb16]=4(位)

指令格式中的寄存器尋址段實際上是可訪問的通用寄存器的編碼,因為CPU中有8個16位長的通用寄存器,所以寄存器尋址段的位數(shù)為:[lb8]=3(位)

因為通用寄存器可作為基址寄存器使用,即指令格式中的基址段所使用的基址寄存器實際上就是通用寄存器,所以基址段的位數(shù)與寄存器尋址段的位數(shù)相同,為3位。

形式地址段的位數(shù)等于指令的字長減去操作碼段、寄存器尋址段和基址段的位數(shù),為6位。

綜合以上分析,該類指令各段占用的位數(shù)如下所示:

OPRiRjARS型4336(2)由于該類指令只有基址尋址訪問主存,因此尋址的最大主存地址只由基址尋址決定?;穼ぶ返腅=(Rj)+A,位移量A用補碼表示,最大值為25-1,基址寄存器的最大值為216-1,因此該類指令能尋址的最大主存地址為:216+25-2(3)RS型指令的操作碼段占4位,最多有16種編碼,但至少要留一種編碼作為S型指令操作碼的擴展標志,因此RS型指令最多為15條;在S型指令操作碼只使用一種擴展標志的基礎(chǔ)上S型指令最多可以設(shè)計8條。

此例中要求計算能尋址的最大主存地址,除此之外,還要區(qū)分諸如尋址的范圍、尋址的地址空間大小、尋址的最大存儲空間大小等概念。尋址的范圍是指在所有訪存的尋址方式中,從0到某一最大訪存地址,如此例中的尋址范圍為0~216+25-2;尋址的地址空間大小是指在所有訪存的尋址方式中,能訪問的地址空間的個數(shù),如此例中能尋址的地址空間大小為216+25-1;尋址的最大存儲空間大小帶有存儲單位,如B、KB、MB等,它等于能尋址的地址空間的大小乘以一個地址所存儲的字節(jié)數(shù),如此例中能尋址的存儲器空間的大小為(216+25-1)×2B。

【例】

某16位機所使用指令格式和尋址方式如下所示。該機有兩個20位基值寄存器,四個16位變址寄存器,十六個16位通用寄存器。

指令格式中的S(源),D(目標)都是通用寄存器,M是主存中的一個單元。

三種指令的操作碼分別是MOV(OP)=(A)H,MOV是傳送指令,STA(OP)=(1B)H,STA為寫數(shù)指令LDA(OP)=(3C)H。LDA為讀數(shù)指令OP――目標源MOVS,D151098743020位地址

目標――OPLDAM,D1510987430OP基址源

變址位移量1510987430STAS,M要求:(1)分析三種指令格式與尋址方式特點。

(2)CPU完成哪一種操作所花時間最短?哪一種操作花時間

最長?第二種指令的執(zhí)行時間有時會等于第三種指令的

執(zhí)行時間嗎?

(1)第一種指令是單字長二地址指令,RR型;

第二種指令是雙字長二地址指令,RS型,其中S采用基址尋址或變址尋址,R由源寄存器決定;

第三種也是雙字長二地址指令,RS型,其中R由目標寄存器決定,S由20位地址(直接尋址)決定?!窘狻浚?2)第一種指令所花時間最短,因為是RR型指令,不需要訪問存儲器。

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

第三種指令雖然也訪問存儲器,但節(jié)省了求有效地址運算

的時間開銷。

第二種指令的執(zhí)行時間不會等于第三種指令的執(zhí)行時間。4.4典型指令

一臺計算機的指令系統(tǒng)通常有上百條或幾百條指令,從它們所完成的功能來看,一個較為完善的指令系統(tǒng),應(yīng)具備以下各類指令。1.數(shù)據(jù)傳送類指令

這類指令的功能是實現(xiàn)寄存器與寄存器,寄存器與存儲單元以及存儲單元與存儲單元之間的數(shù)據(jù)傳送。

數(shù)據(jù)傳送指令主要包括取數(shù)指令、存數(shù)指令、傳送指令、成組傳送指令、字節(jié)交換指令、清累加器指令、堆棧操作指令等等。指令分類2.算術(shù)運算指令

這類指令包括二進制定點加、減、乘、除指令,浮點加、減、乘、除指令,求反、求補指令,算術(shù)移位指令,算術(shù)比較指令,十進制加、減運算指令等。這類指令主要用于定點或浮點的算術(shù)運算。3.邏輯運算指令

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

程序控制指令也稱轉(zhuǎn)移指令。執(zhí)行程序時,有時機器執(zhí)行到某條指令時,出現(xiàn)了幾種不同結(jié)果,這時機器必須執(zhí)行一條轉(zhuǎn)移指令,根據(jù)不同結(jié)果進行轉(zhuǎn)移,從而改變程序原來執(zhí)行的順序。這種轉(zhuǎn)移指令稱為條件轉(zhuǎn)移指令。除各種條件轉(zhuǎn)移指令外,還有無條件轉(zhuǎn)移指令、轉(zhuǎn)子程序指令、返回主程序指令、中斷返回指令等。轉(zhuǎn)移指令的轉(zhuǎn)移地址一般采用直接尋址和相對尋址方式來確定。

轉(zhuǎn)子程序指令是轉(zhuǎn)向本指令操作地址所指出的子程序入口,并將原程序中下一條指令地址存入內(nèi)存某單元(或指定的某個寄存器)中,以便為返回主程序時提供返回地址。5.輸入輸出指令

輸入輸出指令主要用來啟動外圍設(shè)備,檢查測試外圍設(shè)備的工作狀態(tài),并實現(xiàn)外部設(shè)備和CPU之間,或外圍設(shè)備與外圍設(shè)備之間的信息傳送。6.字符串處理指令字符串處理指令是一種非數(shù)值處理指令,一般包括字符串傳送、字符串轉(zhuǎn)換(把一種編碼的字符串轉(zhuǎn)換成另一種編碼的字符串)、字符串替換(把某一字符串用另一字符串替換)等。這類指令在文字編輯中對大量字符串進行處理。7.特權(quán)指令

特權(quán)指令是指具有特殊權(quán)限的指令。這類指令只用于操作系統(tǒng)或其他系統(tǒng)軟件,一般不直接提供給用戶使用。在多用戶、多任務(wù)的計算機系統(tǒng)中特權(quán)指令必不可少。它主要用于系統(tǒng)資源的分配和管理。8.其他指令

除以上各類指令外,還有狀態(tài)寄存器置位、復(fù)位指令、測試指令、暫停指令,空操作指令,以及其他一些系統(tǒng)控制用的特殊指令。

【例】某微機指令格式如下所示:

15109870OPXD

格式中D為位移量,X為尋址方式特征值:X=00,直接尋址;X=01,用變址寄存器RI進行變址X=10,用基址寄存器RB進行尋址X=11,相對尋址

設(shè)(PC)=2000H,(RI)=0150H,(RB)=1889H,請確定如下指令的有效地址:

(1)4420H(2)2244H(3)730AH(4)3566H(5)6723H

【解】:1)X=00,D=20H,有效地址EA=20H2)X=10,D=44H,有效地址EA=1889H+44H=18CDH3)X=11,D=0AH,有效地址EA=2000H+0AH=200AH4)X=01,D=66H,有效地址EA=0150H+66H=01B6H5)X=11,D=23H,有效地址EA=2000H+23H=2023H15109870OPXD6位2位8位

OPRiX/p>

其中,OP為操作碼,占5位;Ri為通用寄存器編號,占3位,用來指定目標空間,機器有獨立的變址和基址寄存器;X為尋址方式特征碼,占2位,與D一起決定源操作數(shù),規(guī)定如下:

X=00,為立即尋址,D為立即量;X=01,為相對尋址,D為位移量;

X=10,為變址尋址,D為位移量;X=11,為基址尋址,D為位移量。

假定要執(zhí)行的指令為加法指令(OP=1FH),存放在3000H單元中。該指令執(zhí)行前存儲器和有關(guān)寄存器的存儲情況如下,其內(nèi)容用十六進制表示。變址寄存器的內(nèi)容為1000H,基址寄存器的內(nèi)容為2080H。各寄存器內(nèi)容如下:

R0=4000H,R1=5000H,R2=6000H,R3=7000H,R4=8000H,R5=9000H,R6=3000H,R7=1080H?!纠浚涸O(shè)有一臺計算機,其指令長度為16位,指令格式如下:

當(dāng)YY=0F828H,0FA41H,0FFA4H,0FBC6H時,分別寫出指令執(zhí)行后,目標寄存器和PC的內(nèi)容。地址存儲內(nèi)容1023H0A920H1024H300H………………2085H600H2086H700H………………3000HYY3001H400H3002H500H【解】:

(1)YY=0F828H=111110

溫馨提示

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

評論

0/150

提交評論