計(jì)算機(jī)組成原理第四章指令系統(tǒng)_第1頁
計(jì)算機(jī)組成原理第四章指令系統(tǒng)_第2頁
計(jì)算機(jī)組成原理第四章指令系統(tǒng)_第3頁
計(jì)算機(jī)組成原理第四章指令系統(tǒng)_第4頁
計(jì)算機(jī)組成原理第四章指令系統(tǒng)_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第四章第四章 指令系統(tǒng)指令系統(tǒng)4.1 指令系統(tǒng)的發(fā)展與性能要求4.2 指令格式4.3 操作數(shù)類型4.4 指令和數(shù)據(jù)的尋址方式4.5 典型指令4.6 ARM匯編語言返回24.1 指令系統(tǒng)的發(fā)展與性能要求指令系統(tǒng)的發(fā)展與性能要求4.1.1 指令系統(tǒng)的發(fā)展4.1.2 對(duì)指令系統(tǒng)性能的要求4.1.3 低級(jí)語言與硬件結(jié)構(gòu)的關(guān)系34.1.1 指令系統(tǒng)的發(fā)展指令系統(tǒng)的發(fā)展指令系統(tǒng)基本概念l指令:就是要計(jì)算機(jī)執(zhí)行某種操作的命令。從計(jì)算機(jī)組成的層次結(jié)構(gòu)來說,計(jì)算機(jī)的指令有微指令、機(jī)器指令和宏指令之分。微指令是微程序級(jí)的命令,它屬于硬件;l宏指令:由若干條機(jī)器指令組成的軟件指令,它屬于軟件;l機(jī)器指令:介于微指

2、令與宏指令之間,通常簡(jiǎn)稱為指令,每一條指令可完成一個(gè)獨(dú)立的算術(shù)運(yùn)算或邏輯運(yùn)算操作。l本章所討論的指令,是機(jī)器指令。本章所討論的指令,是機(jī)器指令。l一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合,稱為這臺(tái)計(jì)算機(jī)的指令系統(tǒng)。l指令系統(tǒng)是表征一臺(tái)計(jì)算機(jī)性能的重要因素,它的格式與功能不僅直接影響到機(jī)器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機(jī)器的適用范圍44.1.1 指令系統(tǒng)的發(fā)展指令系統(tǒng)的發(fā)展發(fā)展情況l復(fù)雜指令系統(tǒng)計(jì)算機(jī),簡(jiǎn)稱CISC。指令系統(tǒng)多達(dá)二三百條。 CISC中大約有20%的指令使用頻率高,占據(jù)了80%的處理機(jī)時(shí)間,而有80%的不常用指令只占用處理機(jī)的20%時(shí)間。lVLSI技術(shù)發(fā)展引起的問題lVLSI工

3、藝要求規(guī)整性,而大量復(fù)雜指令控制邏輯極其不規(guī)整,給VLSI工藝造成了很大的困難。l現(xiàn)在用微程序?qū)崿F(xiàn)復(fù)雜指令與用簡(jiǎn)單指令組成的子程序相比,沒有多大的區(qū)別。因?yàn)楝F(xiàn)在控制存儲(chǔ)器和主存的速度差縮小。lCISC中,通過增強(qiáng)指令系統(tǒng)的功能,簡(jiǎn)化了軟件,增加了硬件的復(fù)雜程度。然而指令復(fù)雜了,指令的執(zhí)行時(shí)間必然加長(zhǎng),從而使整個(gè)系統(tǒng)的執(zhí)行時(shí)間反而增加,因而在計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)中,軟硬件的功能分配必須恰當(dāng),但是如此龐大的指令系統(tǒng)不但使計(jì)算機(jī)的研制周期變長(zhǎng),難以保證正確性,不易調(diào)試維護(hù),而且由于采用了大量使用頻率很低的復(fù)雜指令而造成硬件資源浪費(fèi)。l精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī):簡(jiǎn)稱RISC,人們又提出了便于VLSI技術(shù)實(shí)現(xiàn)的

4、精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)。(1)選取使用頻率高的簡(jiǎn)單指令,指令條數(shù)少。(2)指令條數(shù)固定,指令格式種類少,尋址方式種類少。(3)只有取數(shù)、存數(shù)指令訪問存儲(chǔ)器,其他指令的操作都在寄存器之間進(jìn)行。54.1.2 對(duì)指令系統(tǒng)性能的要求對(duì)指令系統(tǒng)性能的要求l完備性:完備性:完備性是指用匯編語言編寫各種程序時(shí),指令系統(tǒng)直接提供的指令足夠使用,而不必用軟件來實(shí)現(xiàn)。完備性要求指令系統(tǒng)豐富、功能齊全、使用方便。一臺(tái)計(jì)算機(jī)中最基本、必不可少的指令是不多的。許多指令可用最基本的指令編程來實(shí)現(xiàn)。例如,乘除運(yùn)算指令、浮點(diǎn)運(yùn)算指令可直接用硬件來實(shí)現(xiàn),也可用基本指令編寫的程序來實(shí)現(xiàn)。采用硬件指令的目的是提高程序執(zhí)行速度,便于用戶

5、編寫程序。l有效性:有效性:有效性是指利用該指令系統(tǒng)所編寫的程序能夠高效率地運(yùn)行。高效率主要表現(xiàn)在程序占據(jù)存儲(chǔ)空間小、執(zhí)行速度快。一般來說,一個(gè)功能更強(qiáng)、更完善的指令系統(tǒng),必定有更好的有效性。l規(guī)整性:規(guī)整性:規(guī)整性包括指令系統(tǒng)的對(duì)稱性、勻齊性、指令格式和數(shù)據(jù)格式的一致性。對(duì)稱性是指:在指令系統(tǒng)中所有的寄存器和存儲(chǔ)器單元都可同等對(duì)待,所有的指令都可使用各種尋址方式;勻齊性是指:一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型,如算術(shù)運(yùn)算指令可支持字節(jié)、字、雙字整數(shù)的運(yùn)算,十進(jìn)制數(shù)運(yùn)算和單、雙精度浮點(diǎn)數(shù)運(yùn)算等;指令格式和數(shù)據(jù)格式的一致性是指:指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度有一定的關(guān)系,以方便處理和存取。例如指令長(zhǎng)度和

6、數(shù)據(jù)長(zhǎng)度通常是字節(jié)長(zhǎng)度的整數(shù)倍。l兼容性:兼容性:系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和共同的基本指令集,因而指令系統(tǒng)是兼容的,即各機(jī)種上基本軟件可以通用。但由于不同機(jī)種推出的時(shí)間不同,在結(jié)構(gòu)和性能上有差異,做到所有軟件都完全兼容是不可能的,只能做到“向上兼容”,即低檔機(jī)上運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行。64.1.3 低級(jí)語言與硬件結(jié)構(gòu)的關(guān)系低級(jí)語言與硬件結(jié)構(gòu)的關(guān)系低級(jí)語言與高級(jí)語言關(guān)系比較內(nèi)容高級(jí)語言低級(jí)語言1對(duì)程序員的訓(xùn)練要求(1)通用算法(2)語言規(guī)則(3)硬件知識(shí)有較少不要有較多要2對(duì)機(jī)器獨(dú)立的程度獨(dú)立不獨(dú)立3編制程序的難易程度易難4編制程序所需時(shí)間短較長(zhǎng)5程序執(zhí)行時(shí)間較長(zhǎng)短6編譯過程中對(duì)

7、計(jì)算機(jī)資源的要求多少74.2 指令格式指令格式4.2.1 操作碼4.2.2 地址碼4.2.3 指令字長(zhǎng)度4.2.4 指令助記符4.2.5 指令格式舉例l指令格式包括兩個(gè)方面:操作碼字段操作碼字段地址碼字段地址碼字段84.2.1 操作碼操作碼l設(shè)計(jì)計(jì)算機(jī)時(shí),對(duì)指令系統(tǒng)的每一條指令都要規(guī)定一個(gè)操作碼。指令的操作碼OP表示該指令應(yīng)進(jìn)行什么性質(zhì)的操作,如進(jìn)行加法、減法、乘法、除法、取數(shù)、存數(shù)等等。不同的指令用操作碼字段的不同編碼來表示,每一種編碼代表一種指令。l組成操作碼字段的位數(shù)一般取決于計(jì)算機(jī)指令系統(tǒng)的規(guī)模。較大的指令系統(tǒng)就需要更多的位數(shù)來表示每條特定的指令。l等長(zhǎng)(指令規(guī)整,譯碼簡(jiǎn)單)l例如IB

8、M 370機(jī),該機(jī)字長(zhǎng)32位,16個(gè)通用寄存器R0R15,共有183條指令;指令的長(zhǎng)度可以分為16位、32位和48位等幾種,所有指令的操作碼都是8位固定長(zhǎng)度。l固定長(zhǎng)度編碼的主要缺點(diǎn)是:信息的冗余極大,使程序的總長(zhǎng)度增加。94.2.2 地址碼地址碼l根據(jù)一條指令中有幾個(gè)操作數(shù)地址,可將該指令稱為幾操作數(shù)指令或幾地址指令。三地址指令二地址指令單地址指令零地址指令104.2.2 地址碼地址碼l三地址指令l指令格式如下:lOP A1 A2 A3l操作碼op 第一操作數(shù)A1 第二操作數(shù)A2 結(jié)果A3 l功能描述:l(A1) op(A2)A3l(PC) +1PCl這種格式雖然省去了一個(gè)地址,但指令長(zhǎng)度仍

9、比較長(zhǎng),所以只在字長(zhǎng)較長(zhǎng)的大、中型機(jī)中使用,而小型、微型機(jī)中很少使用。114.2.2 地址碼地址碼l二地址指令l其格式如下:lOP A1 A2l操作碼op 第一操作數(shù)A1 第二操作數(shù)A2l 功能描述:l(A1) op(A2)A1l(PC)+1PCl二地址指令在計(jì)算機(jī)中得到了廣泛的應(yīng)用,但是在使用時(shí)有一點(diǎn)必須注意:指令執(zhí)行之后,A1中原存的內(nèi)容已經(jīng)被新的運(yùn)算結(jié)果替換了。124.2.2 地址碼地址碼l二地址地址根據(jù)操作數(shù)的物理位置分為:lSS 存儲(chǔ)器-存儲(chǔ)器類型lRS 寄存器-存儲(chǔ)器類型lRR 寄存器-寄存器類型慢134.2.2 地址碼地址碼l一地址指令l指令格式為:lOP A1 l 操作碼op

10、第一操作數(shù)A1l功能描述:l(AC) op(A1) A1l(PC)+1PCl單操作數(shù)運(yùn)算指令,如“+1”、“-1”、“求反”l指令中給出一個(gè)源操作數(shù)的地址144.2.2 地址碼地址碼l零地址指令 l其格式為:lOPl 操作碼opl“停機(jī)”、“空操作”、“清除”等控制類指令。154.2.3 指令字長(zhǎng)度指令字長(zhǎng)度l概念l指令字長(zhǎng)度(一個(gè)指令字包含二進(jìn)制代碼的位數(shù))l機(jī)器字長(zhǎng):計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù)。l單字長(zhǎng)指令l半字長(zhǎng)指令l雙字長(zhǎng)指令l多字長(zhǎng)指令多字長(zhǎng)指令的優(yōu)缺點(diǎn)l優(yōu)點(diǎn)提供足夠的地址位來解決訪問內(nèi)存任何單元的尋址問題 ;l缺點(diǎn)必須兩次或多次訪問內(nèi)存以取出一整條指令,降低了CPU的運(yùn)算速

11、度,又占用了更多的存儲(chǔ)空間。l指令系統(tǒng)中指令采用等長(zhǎng)指令等長(zhǎng)指令的優(yōu)點(diǎn):各種指令字長(zhǎng)度是相等的,指令字結(jié)構(gòu)簡(jiǎn)單,且指令字長(zhǎng)度是不變的 ;l采用非等長(zhǎng)指令非等長(zhǎng)指令的的優(yōu)點(diǎn):各種指令字長(zhǎng)度隨指令功能而異,結(jié)構(gòu)靈活,能充分利用指令長(zhǎng)度,但指令的控制較復(fù)雜 。164.2.4 指令助記符指令助記符l由于硬件只能識(shí)別1和0,所以采用二進(jìn)制操作碼是必要的,但是我們用二進(jìn)制來書寫程序卻非常麻煩。l為了便于書寫和閱讀程序,每條指令通常用3個(gè)或4個(gè)英文縮寫字母來表示。這種縮寫碼叫做指令助記符用34個(gè)英文字母來表示操作碼,一般為英文縮寫不同的計(jì)算機(jī)系統(tǒng),規(guī)定不一樣必須用匯編語言翻譯成二進(jìn)制代碼4.2.4 指令助記

12、符指令助記符l典型指令助記符l加法 ADD 001l減法 SUB 010l傳送 MOV 011l跳轉(zhuǎn) JMP 100l轉(zhuǎn)子程序 JSR 101l存數(shù) STO 110l取數(shù) LAD 111184.2.5 指令格式舉例指令格式舉例l8位微型計(jì)算機(jī)的指令格式l如8088,字長(zhǎng)8位,指令結(jié)構(gòu)可變l包括單字長(zhǎng)指令、雙字長(zhǎng)指令和三字長(zhǎng)指令l操作碼長(zhǎng)度固定194.2.5 指令格式舉例指令格式舉例lMIPS R4000 20世紀(jì)80年代后期 RISC計(jì)算機(jī)系統(tǒng),32位字長(zhǎng),32個(gè)通用寄存器。R型(寄存器)指令:算術(shù)運(yùn)算數(shù)據(jù)放在通用寄存器中6位 5位 5位 5位 5位 6位 op rs rt rd shamt

13、functI型(立即數(shù))指令:取數(shù)、存數(shù)指令訪問存儲(chǔ)器6位 5位 5位 16位 op rs rt 常數(shù)或地址204.2.5 指令格式舉例:指令格式舉例:ARM指令格式指令格式214.2.5 指令格式舉例指令格式舉例例1分析下列指令格式的特點(diǎn) 15 9 7 4 3 0 OP - 源寄存器 目標(biāo)寄存器 解:1.單字長(zhǎng)二地址指令 2.操作碼字段可以指定128條指令 3.源寄存器和目標(biāo)寄存器都是通用寄存器,兩個(gè)操作都 在寄存器中,RR型指令 4. 常用于算術(shù)邏輯運(yùn)算 224.2.5 指令格式舉例指令格式舉例例2分析下列指令格式的特點(diǎn) 15 10 7 4 3 0 OP - 源寄存器 變址寄存器 位移量(

14、16位) 解:1.雙字長(zhǎng)二地址指令,訪問存儲(chǔ)器 2.操作碼字段可以指定64條指令 3.一個(gè)操作數(shù)在源寄存器中,另一個(gè)在存儲(chǔ)器中(由變址寄存器和位移量決定),RS型指令234.2.5 指令格式舉例指令格式舉例例3 MIPS R4000匯編語言中,寄存器$s0$s7對(duì)應(yīng)寄存器號(hào)為十進(jìn)制1623,寄存器$t0$t7對(duì)應(yīng)的寄存器號(hào)為815。請(qǐng)將下表4條匯編語言翻譯成對(duì)應(yīng)的機(jī)器語言十進(jìn)制數(shù)表示。244.3 操作數(shù)類型操作數(shù)類型4.3.1 一般的數(shù)據(jù)類型4.3.2 Pentium數(shù)據(jù)類型4.3.3 Power PC數(shù)據(jù)類型254.3.1 一般的數(shù)據(jù)類型一般的數(shù)據(jù)類型l地址數(shù)據(jù)地址數(shù)據(jù):無符號(hào)整數(shù)。l數(shù)值數(shù)

15、據(jù)數(shù)值數(shù)據(jù):計(jì)算機(jī)中普遍使用的三種類型的數(shù)值數(shù)據(jù)l1.定點(diǎn)整數(shù),小數(shù) 2.浮點(diǎn)數(shù) 3.壓縮十進(jìn)制數(shù)。l字符數(shù)據(jù)字符數(shù)據(jù):文本數(shù)據(jù)或字符串,目前廣泛使用ASCII碼。l邏輯數(shù)據(jù)邏輯數(shù)據(jù):一個(gè)單元中有幾位二進(jìn)制bit項(xiàng)組成,每個(gè)bit的值可以是1或0。當(dāng)數(shù)據(jù)以這種方式看待時(shí),稱為邏輯性數(shù)據(jù)。264.3.2 Pentium數(shù)據(jù)類型數(shù)據(jù)類型 常規(guī):字節(jié),字(16位),雙字(32位),四字(64位)整數(shù):字節(jié),字,雙字,四字 有符號(hào)二進(jìn)制數(shù) 序數(shù):字節(jié),字,雙字,四字 無符號(hào)整數(shù)未壓縮的BCD:范圍0-9的BCD數(shù)字表示,每字節(jié)一個(gè)數(shù)字壓縮的BCD:每字節(jié)表示兩個(gè)BCD數(shù)字,范圍00-99 近指針:段內(nèi)

16、偏移的32位有效地址位串:一個(gè)連續(xù)的位序列字符串:浮點(diǎn)數(shù):?jiǎn)尉?雙精度274.3.3 Power PC數(shù)據(jù)類型數(shù)據(jù)類型 無符號(hào)字節(jié): 邏輯和整數(shù)算術(shù)運(yùn)算,由存儲(chǔ)器取出裝入通用寄存器時(shí),寄存器左端以0填充無符號(hào)半字:16位有符號(hào)半字:16位算術(shù)運(yùn)算,由存儲(chǔ)器取出裝入寄存器時(shí),要進(jìn)行符號(hào)位擴(kuò)展,所有空出位都用符號(hào)位填充無符號(hào)字:32位邏輯運(yùn)算,或作為地址指針有符號(hào)字:32位算術(shù)運(yùn)算無符號(hào)雙字:64位地址指針字節(jié)串:0-128字節(jié)浮點(diǎn)數(shù):IEEE754單精度 雙精度284.4 指令和數(shù)據(jù)的尋址方式指令和數(shù)據(jù)的尋址方式4.4.1 指令的尋址方式4.4.2 操作數(shù)基本尋址方式4.4.3 尋址方式舉例2

17、94.4.1 指令的尋址方式指令的尋址方式l順序方式lPCl跳躍方式:由本條指令給出下條指令的地址碼,PC的內(nèi)容也必須相應(yīng)改變,跳躍尋址可以實(shí)現(xiàn)程序轉(zhuǎn)移或者構(gòu)成循環(huán)程序CAI304.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l形成操作數(shù)有效地址的方法,稱為尋址方式。l例如,一種單地址指令的結(jié)構(gòu)如下:操作碼OP、變址X、間址I、形式地址A314.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式CAI324.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式1、隱含尋址l指令中隱含著操作數(shù)的地址l如某些運(yùn)算,隱含了累加器AC作為源和目的寄存器lADD 100H 334.4.2 操作數(shù)基本尋址方式操作數(shù)基本

18、尋址方式2、立即尋址l立即尋址是一種特殊的尋址方式,指令中在操作碼字段后面的部分不是通常意義上的操作數(shù)地址,而是操作數(shù)本身,也就是說數(shù)據(jù)就包含在指令中,只要取出指令,就取出了可以立即使用的操作數(shù),節(jié)省了訪問內(nèi)存的時(shí)間。因此,這樣的操作數(shù)被稱為立即數(shù)。l指令格式:操作碼OP 操作數(shù)A lADD ax,100H344.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式3、直接尋址l 指令中地址碼字段給出的地址A就是操作數(shù)的有效地址EA(Effective Address),即EAA。354.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式4、間接尋址l 間接尋址意味著指令的地址碼部分給出的地址A不是操作數(shù)的

19、地址,而是存放操作數(shù)地址的主存單元的地址,簡(jiǎn)稱操作數(shù)地址的地址。操作數(shù)的有效地址的計(jì)算公式為:EA(A),訪問內(nèi)存兩次364.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式5、寄存器尋址l在指令的地址碼部分給出CPU內(nèi)某一通用寄存器的編號(hào),指令的操作數(shù)存放在相應(yīng)的寄存器中,即EA=Ri 優(yōu)點(diǎn):(1)由于寄存器在CPU的內(nèi)部,指令在執(zhí)行時(shí)從寄存器中取操作數(shù)比訪問主存要快得多;(2)由于寄存器的數(shù)量較少,因此寄存器編號(hào)所占位數(shù)也較少,從而可以有效減少指令的地址碼字段的長(zhǎng)度。374.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式6、寄存器間接尋址 l為了克服間接尋址中多次訪存的缺點(diǎn),可采用寄存器間接尋址

20、,即將操作數(shù)放在主存儲(chǔ)器中,而操作數(shù)的地址放在某一通用寄存器中,然后在指令的地址碼部分給出該通用寄存器的編號(hào),這時(shí)有EA=(Ri)這種尋址方式的指令較短,并且在取指后只需一次訪存便可得到操作數(shù),因此指令執(zhí)行速度較前述的間接尋址方式要快,也是目前在計(jì)算機(jī)中使用較為廣泛的一種尋址方式。384.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式7、偏移尋址、偏移尋址l相對(duì)尋址:由程序計(jì)數(shù)器相對(duì)尋址:由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,而指提供基準(zhǔn)地址,而指令的地址碼部分給出相對(duì)的位移量令的地址碼部分給出相對(duì)的位移量D,兩者相加后,兩者相加后作為操作數(shù)的有效地址,即:作為操作數(shù)的有效地址,即:EA(PC)D。39

21、4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l7、偏移尋址:基址尋址、偏移尋址:基址尋址l將主存空間分成若干段,每段首地址存放在基址寄存器中?;芳拇嫫鞯奈粩?shù)可以設(shè)置得很長(zhǎng),從而可以在較大的存儲(chǔ)空間中尋址。基址尋址主要用于為程序或數(shù)據(jù)分配存儲(chǔ)空間,基址寄存器的內(nèi)容通常由操作系統(tǒng)確定,在程序執(zhí)行過程中其值是不變的,指令中的形式地址是可變的404.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l7、偏移尋址:變址尋址、偏移尋址:變址尋址l變址尋址就是將指令的地址碼部分給出的基準(zhǔn)地址A與CPU內(nèi)某特定的變址寄存器Rx中的內(nèi)容相加,以形成操作數(shù)的有效地址。EA=A+(R)。變址寄存器的內(nèi)容由用戶設(shè)定

22、,程序執(zhí)行中是可變的。l變址的用途是為重復(fù)操作的完成提供一種高效機(jī)制。例如主存位置A處存放一數(shù)值列表,要給每個(gè)元素加1。我們需要取每個(gè)數(shù)位,對(duì)它加1,然后再存回。需要的有效地址序列是A,A+1,A+2,.直到最后一個(gè)位置。此時(shí)值A(chǔ)存入指令地址字段,再用一個(gè)變址寄存器。每次操作完成后,變址寄存器的內(nèi)容+1. (R)+1-R4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l求N個(gè)數(shù)的平均值l直接尋址 lLDA D lADD D+1 lADD D+2 l lADD D+(N-1) lDIV #N lSTA ANS lD ACC lACC+D+1 ACC lACC+D+2 ACC l lACC+D+N

23、-1 ACC lACC N ACC lACC ANS(主存單元) 4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l求N個(gè)數(shù)的平均值l變址尋址l LDA #0l LDX #0lM ADD X,Dl INXl CPX #Nl BNE Ml DIV #Nl STA ANSl0 ACCl0 X(變址寄存器)lACC+D+(X) ACClX+1 Xl判斷X-N,結(jié)果為0,Z=1,結(jié)果非0,Z=0. Z是零標(biāo)志位l當(dāng)Z=1順序執(zhí)行,Z=0跳轉(zhuǎn)到MlACC N ACC lACC ANS(主存單元)434.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式8、段尋址方式、段尋址方式存儲(chǔ)空間劃分為多段存儲(chǔ)空間劃分為

24、多段給定給定20位的地址空間,在位的地址空間,在尋址一個(gè)內(nèi)存單元時(shí),由尋址一個(gè)內(nèi)存單元時(shí),由一個(gè)基地址再加上某些寄一個(gè)基地址再加上某些寄存器提供的存器提供的16位偏移量形位偏移量形成成20位的物理地址?;匚坏奈锢淼刂?。基地址就是段寄存器。址就是段寄存器。444.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式9.堆棧尋址以先進(jìn)后出原理存儲(chǔ)數(shù)據(jù). 棧頂指針SP進(jìn)棧:PUSH DATA DATA-SP (SP)-1-SP出棧:POP DATA (SP)+1-SP 堆棧尋址舉例堆棧尋址舉例15200HACCSPX棧頂棧頂200H棧底棧底主存主存151FFHACCSP15棧頂棧頂200H棧底棧底主存主存

25、X1FFHPUSH A 前前PUSH A 后后POP A 前前POP A 后后Y1FFHACCSPX棧頂棧頂200H棧底棧底主存主存151FFH15200HACCSP棧頂棧頂200H棧底棧底主存主存X154.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l例1 某微機(jī)的指令格式如下所示:l 15 10 9 8 7 0l 操作碼 X DlD: 位移量 X:尋址特征位 X=00:直接尋址; X=01:用變址寄存器X1進(jìn)行變址;lX=10:用變址寄存器X2進(jìn)行變址; lX=11:相對(duì)尋址l設(shè)(PC)=1234 H,( X1)=0037H,( X2)=1122H(H代表十六進(jìn)制數(shù)),請(qǐng)確定下列指令中操作

26、數(shù)的有效地l4420H 2244H 1322H 3521H 6723H 4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l解: 1)X=00 , D=20H,有效地址E=20Hl 2) X=10 , D=44H l有效地址E=1122H+44H=1166H l 3) X=11 , D=22H l有效地址E=1234H+22H=1256H l 4) X=01 , D=21H l有效地址E=0037H+21H=0058H l 5)X=11 , D=23H l有效地址 E=1234H+23H=1257H 4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l例2 設(shè)相對(duì)尋址的轉(zhuǎn)移指令占三個(gè)字節(jié),第一個(gè)字

27、節(jié)是操作碼,第二,三字節(jié)是相對(duì)位移(補(bǔ)碼表示),數(shù)據(jù)在存儲(chǔ)器中采用以低字節(jié)地址為字地址的存放方式。每當(dāng)CPU從存儲(chǔ)器中取出1個(gè)字節(jié)時(shí),(PC)+1-PCl(1)若PC當(dāng)前值是240(十進(jìn)制),要求轉(zhuǎn)移到290(十進(jìn)制),則轉(zhuǎn)移指令的第二,三字節(jié)的機(jī)器代碼是多少l(2)若PC當(dāng)前值是240(十進(jìn)制),要求轉(zhuǎn)移到200(十進(jìn)制),則轉(zhuǎn)移指令的第二,三字節(jié)的機(jī)器代碼是多少l解:(1)PC當(dāng)前值是240,取出指令后后PC的值是243,要求轉(zhuǎn)移到290,相對(duì)位移是290-243=47,轉(zhuǎn)換成補(bǔ)碼是2FH,數(shù)據(jù)在存儲(chǔ)器中采用以低字節(jié)地址為字地址的存放方式,第二字節(jié)是2FH,第三字節(jié)是00H.l(2) (1

28、)PC當(dāng)前值是240,取出指令后后PC的值是243,要求轉(zhuǎn)移到200,相對(duì)位移是200-243=-43,轉(zhuǎn)換成補(bǔ)碼是D5H, 第二字節(jié)是D5H,第三字節(jié)是FFH.4.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式l例3 一條雙字長(zhǎng)直接尋址的子程序調(diào)用指令,第一個(gè)字是操作碼和尋址特征,第二個(gè)字是地址碼5000H,假設(shè)PC當(dāng)前值是2000H,SP的內(nèi)容是0100H,棧頂內(nèi)容是2746H,存儲(chǔ)器按字節(jié)編址,CALL指令占四個(gè)字節(jié),進(jìn)棧先執(zhí)行(SP)-2-SP,問下列幾種情形下,PC,SP和棧頂內(nèi)容各是多少l(1)CALL指令被讀取前l(fā)(2)CALL指令被調(diào)用后l(3)子程序返回后l解:(1)CALL指

29、令被讀取前,(PC)=2000H,(SP)=0100H,棧頂2746Hl(2)CALL指令被調(diào)用后,程序斷點(diǎn)2004H進(jìn)棧,棧頂2004H,(SP)=0100H-2=00FEH,(PC)=子程序入口地址5000Hl(3)子程序返回后,程序斷點(diǎn)出棧,(PC)=2004H,(SP)=0100H,棧頂內(nèi)容是2746H指令格式設(shè)計(jì)指令格式設(shè)計(jì)l例4某機(jī)器字長(zhǎng)是16位,存儲(chǔ)器尋址空間是128字,變址時(shí)的位移量是-64-+63,16個(gè)通用寄存器均可作為變址寄存器,設(shè)計(jì)一套指令系統(tǒng),滿足下列尋址類型的要求l(1)直接尋址的二地址指令3條l(2)變址尋址的一地址指令6條l(3)寄存器尋址的二地址指令8條l(4

30、)直接尋址的一地址指令12條l(5)零地址指令32條指令格式設(shè)計(jì)指令格式設(shè)計(jì)l(1) OP A1 A2 00 01 10l 2 7 7 11作為擴(kuò)展l(2) OP Rx(寄存器) A 1100011101l 5 4 7 11110和11111擴(kuò)展l(3) OP Ri Rj 1111000011110111l 8 4 4 1111100011111111擴(kuò)展l(4) OP A 111110000111111011l 9 7 111111100111111111擴(kuò)展l(5) OP 1111111000000000 16位 1111111000011111指令格式設(shè)計(jì)指令格式設(shè)計(jì)l例5 設(shè)某機(jī)配 有

31、基址寄存器和變址寄存器,采用1地址格式的指令系統(tǒng),允許直接和間接尋址,指令字長(zhǎng),機(jī)器字長(zhǎng),存儲(chǔ)字長(zhǎng)都是16位l(1)若采用單字長(zhǎng)指令,共能完成105種操作,則指令可直接尋址的范圍是多少?一次間接尋址的范圍是多少?畫出指令格式并說明各字段的含義l(2)若存儲(chǔ)字長(zhǎng)不變,可采用什么方法直接訪問容量是16MB的主存?指令格式設(shè)計(jì)指令格式設(shè)計(jì)l解:(1)完成105種操作,操作碼取7位,因允許直接,間接尋址,且有基址寄存器和變址寄存器.尋址特征位M 2位 形式地址AD16-7-2=7位lOP(7) M(2) AD(7)l直接尋址128,一次間接尋址216=65536 l容量是16MB存儲(chǔ)器正好與存儲(chǔ)字長(zhǎng)是

32、16位的8M存儲(chǔ)器容量相等,采用雙字長(zhǎng)指令,操作碼和尋址特征位不變lOP(7) M(2) AD1(7)l AD2(16) l形式地址23位 223=8M指令格式設(shè)計(jì)指令格式設(shè)計(jì)l例6某模型機(jī)共有64種操作,操作碼位數(shù)固定,具有以下特點(diǎn):l(1)采用1地址或者2地址格式l(2)有寄存器尋址,直接尋址,相對(duì)尋址(相對(duì)位移-128+127)三種尋址方式l(3)有16個(gè)通用寄存器,算術(shù)運(yùn)算和邏輯運(yùn)算的操作數(shù)都在寄存器中,結(jié)果也在寄存器中l(wèi)(4)取數(shù),存數(shù)指令在通用寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)l(5)存儲(chǔ)器容量是1MB,按字節(jié)編址。l要求設(shè)計(jì)算術(shù)邏輯指令,取數(shù),存數(shù)指令和相對(duì)轉(zhuǎn)移指令指令格式設(shè)計(jì)指令格式設(shè)

33、計(jì)l(1)算術(shù)邏輯指令為寄存器-寄存器型,單字長(zhǎng)lOP (6) M(2) Ri(4) Rj(4)l(2)取數(shù)存數(shù)指令是寄存器-存儲(chǔ)器型,雙字長(zhǎng)lOP(6) M(2) Ri(4) A1(4)l A2(16)lA1和A共20位,可直接訪問按存儲(chǔ)器編址的1MB存儲(chǔ)器l(3)相對(duì)轉(zhuǎn)移指令是一地址 單字長(zhǎng)lOP(6) M(2) A(8) lA是位移量564.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式例例4.4:將:將ARM匯編語言翻譯成機(jī)器語言。已知匯編語言翻譯成機(jī)器語言。已知5條條ARM指令格指令格式譯碼如下表所示:式譯碼如下表所示:設(shè)設(shè)r3寄存器中保存數(shù)組寄存器中保存數(shù)組A的基值,的基值,h放在寄

34、存器放在寄存器r2中。中。C語言程序語言程序語句語句 A30=h+A30 可編譯成如下可編譯成如下3條匯編語句指令:條匯編語句指令:LDR r5 , r3, #120;寄存器寄存器r5中獲得中獲得A30ADD r5 , r2 , r5 ,;寄存器寄存器r5中獲得中獲得h+A30STR r5 , r3, #120;將將h+A30存入到存入到A30請(qǐng)問這請(qǐng)問這3條匯編語言指令的機(jī)器語言是什么?條匯編語言指令的機(jī)器語言是什么?574.4.2 操作數(shù)基本尋址方式操作數(shù)基本尋址方式解:首先利用十進(jìn)制數(shù)來表示機(jī)器語言指令,然后轉(zhuǎn)換成二進(jìn)制機(jī)器指令。解:首先利用十進(jìn)制數(shù)來表示機(jī)器語言指令,然后轉(zhuǎn)換成二進(jìn)制機(jī)

35、器指令。從表從表4.3中我們可以確定中我們可以確定3條機(jī)器語言指令:條機(jī)器語言指令:LDR指令在第指令在第3字段(字段(opcond)用操作碼)用操作碼24確定?;导拇嫫鞔_定?;导拇嫫?指定在指定在第第4字段(字段(Rn),目的寄存器),目的寄存器5指定在第指定在第6字段(字段(Rd),選擇),選擇A30(120304)的)的offset字段放在最后一個(gè)字段(字段放在最后一個(gè)字段(offset12)。)。ADD指令在第指令在第4字段(字段(opcode)用操作碼)用操作碼4確定。確定。3個(gè)寄存器操作(個(gè)寄存器操作(2、5和和5)分別被指定在第)分別被指定在第6、7、8字段。字段。STR指令

36、在第指令在第3字段用操作碼字段用操作碼25確定,其余部分與確定,其余部分與LDR指令相同。指令相同。584.4.3 尋址方式舉例尋址方式舉例Pentium的尋址方式的尋址方式CAI594.4.3 尋址方式舉例尋址方式舉例方式算法立即作數(shù)=A寄存器LA=R偏移量LA=(SR)+A基址LA=(SR)+(B)基址帶偏移量LA=(SR)+(B)+A比例變址帶偏移量LA=(SR)+(I)S+A基址帶變址和偏移量LA=(SR)+(B)+(I)+A基址帶比例變址和偏移量 LA=(SR)+(B)+(I)S+A相對(duì)LA=(PC)+APentium的尋址方式的尋址方式604.4.3 尋址方式舉例尋址方式舉例例4

37、一種二地址RS型指令的結(jié)構(gòu)如下:6位 4位 1位 2位 16位 OP 通用寄存器 I X 偏移量D其中I為間接尋址標(biāo)志位,X為尋址模式字段,D為偏移量字段。通過I,X,D的組合,可構(gòu)成如下尋址方式:請(qǐng)寫出6種尋址方式的名稱。614.4.3 尋址方式舉例尋址方式舉例例5 將ARM匯編語言翻譯成機(jī)器語言。已知5條ARM指令格式譯碼如下表所示:設(shè)r3寄存器中保存數(shù)組A的基址,h放在寄存器r2中。C語言程序語句A30=h+A30 可編譯成如下3條匯編語言指令:LDR r5,r3,#120;寄存器r5中獲得A30ADD r5,r2,r5;寄存器r5中獲得h+A30STR r5,r3,#120;將h+A3

38、0存入到A30請(qǐng)問這3條匯編語言指令的機(jī)器語言是什么?624.5 典型指令典型指令 4.5.1 指令的分類指令的分類4.5.2 基本指令系統(tǒng)的操作基本指令系統(tǒng)的操作4.5.3 精簡(jiǎn)指令系統(tǒng)精簡(jiǎn)指令系統(tǒng)634.5.1 指令的分類指令的分類l數(shù)據(jù)傳送類指令l一般傳送指令: MOV AX,BXl數(shù)據(jù)交換指令: XCHGl堆棧操作指令: PUSH,POPl運(yùn)算類指令l算術(shù)運(yùn)算指令: 加、減、乘、除以及加1、減1、比較l邏輯運(yùn)算指令: l移位指令 l程序控制類指令 l程序控制類指令用于控制程序的執(zhí)行方向,并使程序具有測(cè)試、分析與判斷的能力。l 輸入和輸出指令、字符串處理指令、特權(quán)指令、其他指令644.5.2 基本指令系統(tǒng)的操作基本指令系統(tǒng)的操作l20%和80%規(guī)律:CISC中大約有20%的指令使用頻率高,占據(jù)了80%的處理機(jī)時(shí)間,而有80%的不常用指令只占用處理機(jī)的20%時(shí)間。lVLSI技術(shù)發(fā)展引起的問題lVLSI工藝要求規(guī)整性,而大量復(fù)雜指令控制邏輯極其不規(guī)整,給VLSI工藝造成了很大的困難。l現(xiàn)在用微程序?qū)崿F(xiàn)復(fù)雜指令與用簡(jiǎn)單指令組成的子程序相比,沒有多大的區(qū)別。因?yàn)楝F(xiàn)在控制存儲(chǔ)器和主存的速度差縮小。lCISC中,通過增強(qiáng)指令系統(tǒng)的功能,簡(jiǎn)化了軟件,增加了硬件的復(fù)雜程度。然而指令復(fù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論