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

下載本文檔

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

文檔簡(jiǎn)介

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

4.1指令系統(tǒng)的發(fā)展與性能要求微指令:微程序級(jí)的命令,它屬于硬件;宏指令:由若干條機(jī)器指令組成的軟件指令,它屬于軟件;機(jī)器指令(指令):介于微指令與宏指令之間,每條指令可完成一個(gè)獨(dú)立的算術(shù)運(yùn)算或邏輯運(yùn)算。宏指令宏指令與子程序的異同宏指令與子程序共同的優(yōu)點(diǎn)是:簡(jiǎn)化源程序代碼。二者有以下區(qū)別:子程序調(diào)用是在程序運(yùn)行過(guò)程中進(jìn)行,而宏調(diào)用是在匯編過(guò)程中完成,所以采用子程序方式程序的進(jìn)行要花費(fèi)額外的開銷,而宏指令方式不用。在源程序中,n次宏調(diào)用就要生成n個(gè)代碼段,而子程序只生成一個(gè)代碼段,所以采用宏指令方式需要較大的內(nèi)存空間。宏指令宏指令——由用戶自己定義的一些頻繁出現(xiàn)的程序段從某種意義上講,它與子程序有相似之處又具有明顯的區(qū)別,主要表現(xiàn)在以下幾個(gè)方面:①宏調(diào)用語(yǔ)句由宏匯編語(yǔ)言程序來(lái)識(shí)別和處理;而子程序是由CPU來(lái)執(zhí)行。②宏指令程序段匯編成的機(jī)器代碼每調(diào)用宏指令一次,就要插入一次,而子程序的機(jī)器代碼是只需要一份,因此宏調(diào)用并不能縮短目標(biāo)代碼的長(zhǎng)度。③宏調(diào)用無(wú)需像子程序那樣需要保留程序的斷點(diǎn)和現(xiàn)場(chǎng),有較快的執(zhí)行速度。④宏調(diào)用時(shí)允許修改參數(shù),即同一宏指令在不同調(diào)用時(shí)可完成不同操作;而子程序各次調(diào)用只能完成完全相同的功能。*宏指令適用于要求多次執(zhí)行較短程序段,或希望在調(diào)用中能修改某些參數(shù)的情況;宏指令4.1.1指令系統(tǒng)的發(fā)展指令系統(tǒng):一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合,它是表征一臺(tái)計(jì)算機(jī)性能的重要因素,其格式與功能不僅直接影響到機(jī)器的硬件結(jié)構(gòu),也直接影響到系統(tǒng)軟件,影響到機(jī)器的適用范圍。4.1.1指令系統(tǒng)的發(fā)展50年代:指令系統(tǒng)只有定點(diǎn)加減、邏輯運(yùn)算、數(shù)據(jù)傳送、轉(zhuǎn)移等十幾至幾十條指令。60年代后期:增加了乘除運(yùn)算、浮點(diǎn)運(yùn)算、十進(jìn)制運(yùn)算、字符串處理等指令,指令數(shù)目多達(dá)一二百條,尋址方式也趨多樣化。70年代末期:大多數(shù)計(jì)算機(jī)的指令系統(tǒng)多達(dá)幾百條。我們稱這些計(jì)算機(jī)為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)。但是如此龐大的指令系統(tǒng)難以保證正確性,不易調(diào)試維護(hù),造成硬件資源浪費(fèi)。為此人們又提出了便于VLSI技術(shù)實(shí)現(xiàn)的精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(RISC)。

4.1.2對(duì)指令系統(tǒng)性能的要求完備性用匯編語(yǔ)言編寫各種程序時(shí),指令系統(tǒng)直接提供的指令足夠使用,而不必用軟件來(lái)實(shí)現(xiàn)。完備性要求指令系統(tǒng)豐富、功能齊全、使用方便。一臺(tái)計(jì)算機(jī)中最基本、必不可少的指令是不多的。許多指令可用最基本的指令編程來(lái)實(shí)現(xiàn)。例如,乘除運(yùn)算指令、浮點(diǎn)運(yùn)算指令可直接用硬件來(lái)實(shí)現(xiàn),也可用基本指令編寫的程序來(lái)實(shí)現(xiàn)。采用硬件指令的目的是提高程序執(zhí)行速度,便于用戶編寫程序。

4.1.2對(duì)指令系統(tǒng)性能的要求有效性利用該指令系統(tǒng)所編寫的程序能夠高效率的運(yùn)行。高效率主要表現(xiàn)在程序占據(jù)存儲(chǔ)空間小、執(zhí)行速度快。一般來(lái)說(shuō),一個(gè)功能更強(qiáng)、更完善的指令系統(tǒng),必定有更好的有效性。對(duì)某些復(fù)雜,低速的指令設(shè)置要反復(fù)比較是用軟件(子程序)來(lái)實(shí)現(xiàn),還是硬件提供必要的支持。4.1.2對(duì)指令系統(tǒng)性能的要求規(guī)整性規(guī)整性包括指令系統(tǒng)的對(duì)稱性、勻齊性、指令格式和數(shù)據(jù)格式的一致性。對(duì)稱性指在指令系統(tǒng)中所有的寄存器和存儲(chǔ)器單元都可同等對(duì)待,所有的指令都可使用各種尋址方式;勻齊性是指一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型;指令格式和數(shù)據(jù)格式的一致性是指指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度有一定的關(guān)系,以方便處理和存取。正交性:指令中各個(gè)不同含義字段之間,在編碼時(shí)應(yīng)互相獨(dú)立,互不相關(guān)。例,地址的計(jì)算與操作碼無(wú)關(guān)。4.1.2對(duì)指令系統(tǒng)性能的要求兼容性系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和共同的基本指令集,因而指令系統(tǒng)是兼容的,即各機(jī)種上基本軟件可以通用。但由于不同機(jī)種推出的時(shí)間不同,在結(jié)構(gòu)和性能上有差異,做到所有軟件都完全兼容是不可能的,只能做到“向上兼容”,即低檔機(jī)上運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行。以前的指令集只能是當(dāng)前指令集的子集。4.1.3低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系高級(jí)語(yǔ)言:如C,F(xiàn)ORTRAN等,其語(yǔ)句和用法與具體機(jī)器的指令系統(tǒng)無(wú)關(guān)。低級(jí)語(yǔ)言:分機(jī)器語(yǔ)言(二進(jìn)制語(yǔ)言)和匯編語(yǔ)言(符號(hào)語(yǔ)言),這兩種語(yǔ)言都是面向機(jī)器的語(yǔ)言,和具體機(jī)器的指令系統(tǒng)密切相關(guān)。機(jī)器語(yǔ)言用指令代碼編寫程序,而符號(hào)語(yǔ)言用指令助記符來(lái)編寫程序。4.1.3低級(jí)語(yǔ)言與硬件結(jié)構(gòu)的關(guān)系表4.1高級(jí)語(yǔ)言與低級(jí)語(yǔ)言的性能比較比較內(nèi)容高級(jí)語(yǔ)言低級(jí)語(yǔ)言1對(duì)程序員的訓(xùn)練要求(1)通用算法(2)語(yǔ)言規(guī)則(3)硬件知識(shí)有較少不要有較多要2對(duì)機(jī)器獨(dú)立的程度獨(dú)立不獨(dú)立3編制程序的難易程度易難4編制程序所需時(shí)間短較長(zhǎng)5程序執(zhí)行時(shí)間較長(zhǎng)短6編譯過(guò)程中對(duì)計(jì)算機(jī)資源的要求多少匯編語(yǔ)言依賴于計(jì)算機(jī)的硬件結(jié)構(gòu)和指令系統(tǒng)。不同的機(jī)器有不同的指令,所以用匯編語(yǔ)言編寫的程序不能在其他類型的機(jī)器上運(yùn)行。第四章指令系統(tǒng)

4.2指令格式4.2指令格式操作碼字段地址碼字段4.2.1操作碼(OP)指令系統(tǒng)的每一條指令都有一個(gè)操作碼,它表示該指令應(yīng)進(jìn)行什么性質(zhì)的操作。不同的指令用操作碼字段的不同編碼來(lái)表示,每一種編碼代表一種指令。4.2.1操作碼對(duì)于一個(gè)機(jī)器的指令系統(tǒng),在指令字中操作碼字段和地址碼字段長(zhǎng)度通常是固定的。在單片機(jī)中,由于指令字較短,為了充分利用指令字長(zhǎng)度,指令字的操作碼字段和地址碼字段是不固定的,即不同類型的指令有不同的劃分,以便盡可能用較短的指令字長(zhǎng)來(lái)表示越來(lái)越多的操作種類,并在越來(lái)越大的存儲(chǔ)空間中尋址。固定長(zhǎng)度編碼的主要缺點(diǎn)是:信息的冗余極大,使程序的總長(zhǎng)度增加。

4.2.1操作碼

地址碼字段

操作碼字段操作碼字段地址碼字段指令譯碼器緩沖寄存器高三位譯碼器111××4.2.1操作碼

地址碼字段

操作碼字段操作碼字段地址碼字段緩沖寄存器高三位譯碼器×××指令譯碼器4.2.2地址碼根據(jù)一條指令中有幾個(gè)操作數(shù)地址,可將該指令稱為幾操作數(shù)指令或幾地址指令。操作碼A1A2A3操作碼A1A2操作碼A1操作碼二地址指令二地址指令格式中,從操作數(shù)的物理位置來(lái)說(shuō),又可歸結(jié)為三種類型。存儲(chǔ)器-存儲(chǔ)器(SS)型指令:操作時(shí)都是涉及內(nèi)存單元,參與操作的數(shù)都放在內(nèi)存里,從內(nèi)存某單元中取操作數(shù),操作結(jié)果存放至內(nèi)存另一單元中,因此機(jī)器執(zhí)行這種指令需要多次訪問(wèn)內(nèi)存。寄存器-寄存器(RR)型指令:需要多個(gè)通用寄存器或個(gè)別專用寄存器,從寄存器中取操作數(shù),把操作結(jié)果放到另一寄存器。機(jī)器執(zhí)行寄存器-寄存器型指令的速度很快,因?yàn)閳?zhí)行這類指令,不需要訪問(wèn)內(nèi)存。寄存器-存儲(chǔ)器(RS)型指令:執(zhí)行此類指令時(shí),既要訪問(wèn)內(nèi)存單元,又要訪問(wèn)寄存器。4.2.3指令字長(zhǎng)度指令字長(zhǎng)度:一個(gè)指令字中包含二進(jìn)制代碼的位數(shù)(字節(jié)或字的整倍數(shù))。機(jī)器字長(zhǎng):計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù),它決定了計(jì)算機(jī)的運(yùn)算精度。4.2.3指令字長(zhǎng)度使用多字長(zhǎng)指令,目的在于提供足夠的地址位來(lái)解決訪問(wèn)內(nèi)存任何單元的尋址問(wèn)題。其主要缺點(diǎn)是必須兩次或多次訪問(wèn)內(nèi)存以取出一整條指令,降低了CPU的運(yùn)算速度,又占用了更多的存儲(chǔ)空間。4.2.3指令字長(zhǎng)度等長(zhǎng)指令字結(jié)構(gòu):各種指令字長(zhǎng)度是相等的。這種指令字結(jié)構(gòu)簡(jiǎn)單,且指令字長(zhǎng)度是不變的。變長(zhǎng)指令字結(jié)構(gòu):各種指令字長(zhǎng)度隨指令功能而異。結(jié)構(gòu)靈活,能充分利用指令長(zhǎng)度,但指令的控制較復(fù)雜。4.2.4指令助記符為了便于書寫和閱讀程序,每條指令通常用3個(gè)或4個(gè)英文縮寫字母來(lái)表示。這種縮寫碼叫做指令助記符。典型指令指令助記符二進(jìn)制操作碼加法

ADD

001減法

SUB

010傳送

MOV

011跳轉(zhuǎn)

JMP

100轉(zhuǎn)子

JSR

101存儲(chǔ)

STR

110讀數(shù)

LDA

111

指令設(shè)計(jì)舉例間接尋址標(biāo)志為0時(shí)表示地址碼為操作數(shù)地址,為1時(shí)表示地址碼為操作數(shù)地址的地址;操作碼的設(shè)計(jì):000將存儲(chǔ)器中的數(shù)據(jù)讀到寄存器A;001將寄存器A中的數(shù)據(jù)寫入存儲(chǔ)器;010將存儲(chǔ)器中的數(shù)據(jù)與寄存器A中的數(shù)據(jù)相加,結(jié)果送到寄存器A;011將寄存器A清零;100轉(zhuǎn)移;101停機(jī)。110和111待指令擴(kuò)展。操作碼3位間接尋址標(biāo)志1位地址碼12位3112指令設(shè)計(jì)舉例I表示間接尋址;操作碼的設(shè)計(jì):000(LDA)將存儲(chǔ)器中的數(shù)據(jù)讀到寄存器A;001(STA)將寄存器A中的數(shù)據(jù)寫入存儲(chǔ)器;010(ADD)將存儲(chǔ)器中的數(shù)據(jù)與寄存器A中的數(shù)據(jù)相加,結(jié)果送到寄存器A;011(CLA)將寄存器A清零;100(JMP)轉(zhuǎn)移;101(HLT)停機(jī)。110和111待指令擴(kuò)展。4.2.5指令格式舉例1.八位微型計(jì)算機(jī)的指令格式

操作碼單字長(zhǎng)指令

操作碼操作數(shù)地址雙字長(zhǎng)指令

操作碼操作數(shù)地址1操作數(shù)地址2

三字長(zhǎng)指令4.2.5指令格式舉例2.

PDP/11系列機(jī)指令格式字長(zhǎng)16位;單字長(zhǎng)指令;操作碼字段不固定。4.2.5指令格式舉例3.pentium指令格式pentium機(jī)的指令字長(zhǎng)度是可變的:從1字節(jié)到12字節(jié),還可以帶前綴。這種非固定長(zhǎng)度的指令格式是典型的CICS結(jié)構(gòu)特征。一是為了與它的前身80486保持兼容,二是希望能給編譯程序?qū)懽髡咭愿囔`活的編程支持。指令的前綴是可選項(xiàng),其作用是對(duì)其后的指令本身進(jìn)行顯示約定。每個(gè)前綴占1個(gè)字節(jié)。4.2.5指令格式舉例3.pentium指令格式0或1

0或1

0或1

0或1(字節(jié)數(shù))指令前綴段取代操作數(shù)長(zhǎng)度取代地址長(zhǎng)度取代

1或2

0或1

0或1

0,1,2,4

0,1,2,4(字節(jié)數(shù))操作碼Mod

Reg或操作碼

R/M比例S

變址I

基址B位移量立即數(shù)

2位3位3位2位3位3位4.2.5指令格式舉例指令與前綴的區(qū)分前綴各部分間的區(qū)分4.3操作數(shù)類型一般的數(shù)據(jù)類型

Pentium數(shù)據(jù)類型

PowerPC數(shù)據(jù)類型

4.3.1一般的數(shù)據(jù)類型地址數(shù)據(jù):地址實(shí)際上也是一種形式的數(shù)據(jù)。數(shù)值數(shù)據(jù):計(jì)算機(jī)中普遍使用的三種類型的數(shù)值數(shù)據(jù)(定點(diǎn)、浮點(diǎn)、壓縮十進(jìn)制)。字符數(shù)據(jù):文本數(shù)據(jù)或字符串,目前廣泛使用ASCII碼。邏輯數(shù)據(jù):一個(gè)單元中有幾位二進(jìn)制bit項(xiàng)組成,每個(gè)bit的值可以是1或0。當(dāng)數(shù)據(jù)以這種方式看待時(shí),稱為邏輯性數(shù)據(jù)。4.3.2Pentium數(shù)據(jù)類型常規(guī)整數(shù)序數(shù)未壓縮的BCD壓縮的BCD近指針位串字符串浮點(diǎn)數(shù)

4.3.3PowerPC數(shù)據(jù)類型無(wú)符號(hào)字節(jié)無(wú)符號(hào)半字有符號(hào)半字無(wú)符號(hào)字有符號(hào)字無(wú)符號(hào)雙字字節(jié)串浮點(diǎn)數(shù)

4.4指令和數(shù)據(jù)的尋址方式在存儲(chǔ)器中,操作數(shù)或指令字寫入或讀出的方式,有地址指定方式、相聯(lián)存儲(chǔ)方式和堆棧存取方式。當(dāng)采用地址指定方式時(shí),形成操作數(shù)或指令地址的方式,稱為尋址方式。尋址方式分為兩類:指令尋址方式數(shù)據(jù)尋址方式4.4.1指令的尋址方式1.順序?qū)ぶ贩绞?.跳躍尋址方式4.4.1指令的尋址方式4.4.2操作數(shù)尋址方式形成操作數(shù)有效地址的方法,稱為尋址方式。

指令中操作數(shù)字段的地址碼是由形式地址和尋址方式特征位等組合形成,因此,一般來(lái)說(shuō),指令中所給出的地址碼,并不是操作數(shù)的有效地址。因此,尋址過(guò)程就是把操作數(shù)的形式地址,變換為操作數(shù)的有效地址的過(guò)程。4.4.2操作數(shù)尋址方式如8086匯編中的STC指令,設(shè)置標(biāo)志寄存器的C為14.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式4.4.2操作數(shù)尋址方式相對(duì)尋址方式相對(duì)尋址是把程序計(jì)數(shù)器PC的內(nèi)容加上指令格式中的形式地址D而形成操作數(shù)的有效地址。程序計(jì)數(shù)器的內(nèi)容就是當(dāng)前指令的地址?!跋鄬?duì)”尋址,就是相對(duì)于當(dāng)前的指令地址而言。

采用相對(duì)尋址方式的好處是程序員無(wú)須用指令的絕對(duì)地址編程,所編程序可以放在內(nèi)存任何地方。此時(shí)形式地址D通常稱為偏移量,其值可正可負(fù),相對(duì)于當(dāng)前指令地址進(jìn)行浮動(dòng)。相對(duì)尋址方式基址尋址方式基址尋址方式是將CPU中基址寄存器的內(nèi)容加上指令格式中的形式地址而形成操作數(shù)的有效地址。

它的優(yōu)點(diǎn)是可以擴(kuò)大尋址能力。同形式地址相比,基址寄存器的位數(shù)可以設(shè)置得很長(zhǎng),從而可以在較大的存儲(chǔ)空間中尋址?;穼ぶ贩绞阶冎穼ぶ贩绞阶冎穼ぶ贩绞脚c基址尋址方式計(jì)算有效地址的方法很相似,它把CPU中某個(gè)變址寄存器的內(nèi)容與偏移量D相加來(lái)形成操作數(shù)有效地址。但使用變址尋址方式的目的不在于擴(kuò)大尋址空間,而在于實(shí)現(xiàn)程序塊的規(guī)律性變化。變址尋址方式相對(duì)、基址、變址尋址方式的比較寄存器與形式地址相加得到有效地址(PC被稱為指令指針寄存器)相對(duì)、基址、變址尋址方式的比較PC不能夠通過(guò)程序賦值相對(duì)尋址的相加是一種對(duì)位相加PC形式地址D有效地址相對(duì)、基址、變址尋址方式的比較基址寄存器與變址寄存器都是可以通過(guò)程序賦值的?;穼ぶ分械男问降刂芬灿蟹Q作偏移量的。變址寄存器通常設(shè)有多個(gè)。這兩種尋址方式的相加均為不對(duì)位相加。相對(duì)、基址、變址尋址方式的比較基址、變址寄存器形式地址D有效地址相對(duì)、基址、變址尋址方式的比較變址尋址的另一種方案變址寄存器形式地址D有效地址塊尋址方式如果數(shù)據(jù)塊是變長(zhǎng)的,可用三種方法指出它的長(zhǎng)度:指令中劃出字段指出長(zhǎng)度;指令格式中指出數(shù)據(jù)塊的首地址與末地址;由塊結(jié)束字符指出數(shù)據(jù)塊長(zhǎng)度。段尋址方式段尋址方式的實(shí)質(zhì)還是基址尋址。堆棧尋址方式分寄存器堆棧、存儲(chǔ)器堆棧以先進(jìn)后出原理存儲(chǔ)數(shù)據(jù)堆棧尋址方式堆棧是一組能存儲(chǔ)和取出數(shù)據(jù)的暫時(shí)存儲(chǔ)單元。很多計(jì)算機(jī)把存儲(chǔ)器的一部分用作堆棧。堆棧和其他形式的存儲(chǔ)器之間的差別就在于,它們對(duì)數(shù)據(jù)的存取方法或?qū)ぶ贩椒ㄓ兴煌?。堆棧尋址方式堆棧是一種數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)的一種組織方式。棧是一種只能在叫做棧頂?shù)囊欢诉M(jìn)行進(jìn)棧和出棧操作的線性數(shù)據(jù)結(jié)構(gòu)。棧的主要特點(diǎn)是“后進(jìn)先出”

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論