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

下載本文檔

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

文檔簡介

1、指 令 系 統(tǒng)第 章第4章指 令 系 統(tǒng)4.1指令系統(tǒng)的發(fā)展與性能要求指令系統(tǒng)的發(fā)展與性能要求4.2指令格式指令格式4.3指令和數(shù)據(jù)的尋址方式指令和數(shù)據(jù)的尋址方式4.4典型指令典型指令4.5CISC和和RISC本章小結(jié)本章小結(jié)習(xí)題習(xí)題4指 令 系 統(tǒng)第 章 4.1指令系統(tǒng)的發(fā)展與性能要求指令系統(tǒng)的發(fā)展與性能要求4.1.1指令系統(tǒng)的發(fā)展指令系統(tǒng)的發(fā)展計(jì)算機(jī)系統(tǒng)主要由硬件和軟件兩部分組成。 軟件是為計(jì)算機(jī)編寫的各種程序。 所謂程序,所謂程序, 是指能完成一定功能的指是指能完成一定功能的指令序列令序列。 而指令則是要求計(jì)算機(jī)執(zhí)行某種操作的命令,指令則是要求計(jì)算機(jī)執(zhí)行某種操作的命令, 是計(jì)是計(jì)算機(jī)硬件

2、能夠直接識別和執(zhí)行的二進(jìn)制機(jī)器指令算機(jī)硬件能夠直接識別和執(zhí)行的二進(jìn)制機(jī)器指令, 簡稱機(jī)器簡稱機(jī)器指令指令。 從計(jì)算機(jī)組成的角度來講,指令可認(rèn)為是軟件與硬件指令可認(rèn)為是軟件與硬件的接口的接口。 一臺計(jì)算機(jī)中所有機(jī)器指令的集合, 構(gòu)成了該計(jì)算機(jī)的指令系統(tǒng)。 指 令 系 統(tǒng)第 章隨著微電子技術(shù)的發(fā)展, 計(jì)算機(jī)硬件功能不斷增強(qiáng), 指令系統(tǒng)也越來越豐富, 甚至廉價(jià)的微處理器都設(shè)置了乘除運(yùn)算指令和十進(jìn)制運(yùn)算指令。 有的微處理器還設(shè)置了浮點(diǎn)運(yùn)算、 字符串處理指令等, 使得指令系統(tǒng)中指令的數(shù)目多達(dá)數(shù)百條多達(dá)數(shù)百條, 尋址方式也趨于多樣化尋址方式也趨于多樣化。 隨著集成電路的發(fā)展和計(jì)算機(jī)應(yīng)用領(lǐng)域的不斷擴(kuò)大, 計(jì)

3、算機(jī)軟件的價(jià)格相對不斷提高。為了在新研制的計(jì)算機(jī)上繼承現(xiàn)有的軟件, 減少軟件的開發(fā)費(fèi)用, 在20世紀(jì)60年代出現(xiàn)了系列計(jì)算機(jī)系列計(jì)算機(jī)。 指 令 系 統(tǒng)第 章系列計(jì)算機(jī)是指具有相同的基本指令系統(tǒng)具有相同的基本指令系統(tǒng)和基本體系結(jié)基本體系結(jié)構(gòu)構(gòu), 但具有不同組成和實(shí)現(xiàn)的一系列不同型號的機(jī)器。 典型的系列機(jī)有Intel公司的x86系列機(jī)、 Motorola公司的M68x0和M680 x0系列機(jī)、 DEC公司的Alpha系列機(jī)、 SGI公司的MIPS系列機(jī)、 IBM公司的PowerPC系列機(jī)和SUN公司的SPARC系列機(jī)等。 為了使計(jì)算機(jī)系統(tǒng)具有更強(qiáng)的功能、 更高的性能和更好的性能價(jià)格比, 以滿足廣

4、泛的或?qū)iT的應(yīng)用需要, 在機(jī)器指令系統(tǒng)的設(shè)計(jì)、 發(fā)展和改進(jìn)上有兩種不同的途徑和方向。 指 令 系 統(tǒng)第 章 一種途徑和方向是如何進(jìn)一步增強(qiáng)原有指令的功能以及設(shè)置更為復(fù)雜的新指令來取代原先由軟件子程序完成的功能, 實(shí)現(xiàn)軟件功能的硬化。 按照這種途徑和方向來發(fā)展, 機(jī)器的指令系統(tǒng)越來越龐大和復(fù)雜, 采用這種途徑設(shè)計(jì)成CPU的計(jì)算機(jī)為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(Complex Instruction Set Computer, CISC)。 另一種途徑和方向是如何通過減少指令總數(shù)和簡化指令的功能來降低硬件設(shè)計(jì)的復(fù)雜度, 提高指令的執(zhí)行速度。 按照這種途徑和方向發(fā)展,機(jī)器的指令系統(tǒng)精煉簡單, 采用這種途徑設(shè)計(jì)

5、成CPU的計(jì)算機(jī)為精簡指令系統(tǒng)計(jì)算機(jī)(Reduced Instruction Set Computer, RISC)。 有關(guān)CISC和RISC的詳細(xì)內(nèi)容將在本章4.5節(jié)中介紹。 指 令 系 統(tǒng)第 章4.1.2對指令系統(tǒng)性能的要求對指令系統(tǒng)性能的要求 計(jì)算機(jī)的性能與它所設(shè)置的指令系統(tǒng)有很大的關(guān)系, 它不僅與計(jì)算機(jī)的硬件結(jié)構(gòu)密切相關(guān), 而且還會直接影響到用戶程序和編譯程序的編制及運(yùn)行效率等。 通常性能較好的計(jì)算機(jī)所設(shè)置的指令系統(tǒng)應(yīng)滿足如下四個(gè)方面的要求。指 令 系 統(tǒng)第 章1. 完備性完備性 完備性要求指令系統(tǒng)包含的指令豐富、 功能齊全、 使用方便, 使得在用匯編語言編寫程序時(shí), 指令系統(tǒng)直接提供

6、的指令足夠使用, 而不必用軟件來實(shí)現(xiàn)。 例如, 比較轉(zhuǎn)移指令可直接用硬件來實(shí)現(xiàn), 也可以用基本指令編寫的程序來實(shí)現(xiàn)。 采用硬件指令的目的是為了簡化程序設(shè)計(jì), 提高執(zhí)行的速度, 但增加了CPU內(nèi)部結(jié)構(gòu)設(shè)計(jì)和編譯程序設(shè)計(jì)的復(fù)雜度。 指 令 系 統(tǒng)第 章2. 有效性有效性 有效性是指利用該指令系統(tǒng)所編寫的程序能夠高效率地運(yùn)行, 主要表現(xiàn)為程序占用的存儲空間小、 執(zhí)行的速度快。 3. 規(guī)整性規(guī)整性 規(guī)整性包括指令系統(tǒng)的對稱性、 勻齊性、 指令格式和數(shù)據(jù)格式的一致性。 對稱性是指在指令系統(tǒng)中所有的寄存器和存儲器單元都可同等對待, 所有的指令都可使用各種尋址方式。 指 令 系 統(tǒng)第 章勻齊性是指一種操作性

7、質(zhì)的指令可以支持各種數(shù)據(jù)類型, 如算術(shù)運(yùn)算指令可支持字節(jié)、字、 雙字的運(yùn)算等。 指令格式和數(shù)據(jù)格式的一致性是指指令長度和數(shù)據(jù)長度有一定的關(guān)系, 以方便處理和存取, 如指令長度和數(shù)據(jù)長度通常是字節(jié)長度的整數(shù)倍。 4. 兼容性兼容性 兼容性主要表現(xiàn)在兩個(gè)方面, 一個(gè)是同一公司生產(chǎn)的系列機(jī)具有軟件兼容性, 另一個(gè)是不同公司的不同硬件結(jié)構(gòu)的機(jī)器具有軟件兼容性。 指 令 系 統(tǒng)第 章向后兼容是指在某個(gè)時(shí)期投入市場的該型號機(jī)器上編制的軟件, 不加修改就能運(yùn)行于在它之后投入市場的機(jī)器上。 而兼容機(jī)則是指不同廠家生產(chǎn)的具有同一體系結(jié)構(gòu)的計(jì)算機(jī), 或者具有與原裝機(jī)(有版權(quán)廠家的系列機(jī)產(chǎn)品)軟件兼容的非版權(quán)廠家的

8、產(chǎn)品。 對于兼容機(jī), 一般要求做到向上向后兼容。 兼容機(jī)在外形、 功能、 價(jià)格上與原裝機(jī)可能有很大差別, 但體系結(jié)構(gòu)相同, 可運(yùn)行原裝機(jī)的軟件。 指 令 系 統(tǒng)第 章4.1.3計(jì)算機(jī)語言計(jì)算機(jī)語言為了解決一些實(shí)際問題, 我們必須編寫各種功能的程序, 通過翻譯程序?qū)⑵滢D(zhuǎn)換成計(jì)算機(jī)能識別的一串指令或語句后在計(jì)算機(jī)上運(yùn)行。 我們把編程所用的工具稱為計(jì)算機(jī)語言。 計(jì)算機(jī)語言可分為低級語言低級語言和高級語言高級語言。 低級語言面向計(jì)算機(jī)硬件, 要求用戶掌握較多的硬件知識, 編制程序有一定的難度且開發(fā)時(shí)間較長, 一般為專業(yè)人員使用, 但是用低級語言編制的程序占用存儲空間小、 執(zhí)行效率高。 指 令 系 統(tǒng)第

9、 章低級語言又可分為機(jī)器語言和匯編語言機(jī)器語言和匯編語言。 計(jì)算機(jī)能夠直接識別和執(zhí)行的惟一語言是二進(jìn)制機(jī)器語言。 由于用二進(jìn)制語言編程和閱讀很不方便, 因此采用了如匯編語言和高級語言之類的符號語言。 用匯編語言編寫的程序, 計(jì)算機(jī)不能直接識別, 必須將它匯編成機(jī)器代碼后才能在計(jì)算機(jī)上運(yùn)行。 匯編語言依賴于計(jì)算機(jī)的硬件結(jié)構(gòu)和指令系統(tǒng), 不同的機(jī)器有不同的指令系統(tǒng), 所以用匯編語言編寫的程序不能在其他類型的機(jī)器上運(yùn)行。指 令 系 統(tǒng)第 章4.2指令格式指令格式一條指令通常由操作碼和地址碼兩部分組成, 其格式為:操作碼是該指令所要完成的操作的編碼, 不同的操作碼表示不同的指令功能, 它是指令格式中必

10、不可少的部分; 地址碼是該指令操作所需要的數(shù)據(jù)地址的編碼。 地址碼是一個(gè)廣義的概念, 它可以表示操作數(shù)據(jù)的地址操作數(shù)據(jù)的地址或與操作數(shù)據(jù)相關(guān)的地與操作數(shù)據(jù)相關(guān)的地址址, 即給出數(shù)據(jù)在主存單元的地址或在寄存器的地址, 它也可以表示操作數(shù)本身操作數(shù)本身或作為地址位移量作為地址位移量, 還可以指出操作結(jié)操作結(jié)果的存放地址果的存放地址等, 因此也稱為形式地址。指 令 系 統(tǒng)第 章1. 三地址指令三地址指令OPA1A2A38051的比較轉(zhuǎn)移指令CJNE R0, R1, NEXT, 其中NEXT為標(biāo)號2. 二地址指令二地址指令OPA1A2x86指令A(yù)DD AX, BX3. 一地址指令一地址指令OPAx86

11、指令I(lǐng)NC AX4. 零地址指令零地址指令OP空操作指令NOP、 停機(jī)指令HLT指 令 系 統(tǒng)第 章4.2.2操作碼操作碼 操作碼的位數(shù)決定了不同功能指令的多少, 位數(shù)越多, 所能表示的操作功能就越豐富。指令的操作碼通常有兩種編碼格式: 一種是等長操作碼等長操作碼, 另一種是變長操作碼變長操作碼。 等長操作碼對于簡化硬件設(shè)計(jì)、 減少指令譯碼時(shí)間非常有利, 如IBM370指令系統(tǒng), 操作碼的長度固定為8位。 而變長操作碼的操作碼長度是可變的, 且分散在指令字的不同字段中, 這種格式能夠有效地壓縮程序中操作碼的平均長度, 如Pentium、 SUN SPARC指令系統(tǒng)。 指 令 系 統(tǒng)第 章1.

12、等長操作碼等長操作碼 設(shè)指令格式中等長操作碼的位數(shù)為n位, 則該機(jī)器最多可以設(shè)計(jì)2n條不同功能的指令。 反過來, 若指令系統(tǒng)中包含有N條不同功能的指令, 采用等長操作碼設(shè)計(jì)時(shí), 至少需要lg N位。 等長操作碼的指令格式如圖4.1所示, 由于不同指令的地址碼的個(gè)數(shù)不同, 指令的長度也是變化的。指 令 系 統(tǒng)第 章圖4.1等長操作碼的指令格式指 令 系 統(tǒng)第 章2. 變長操作碼變長操作碼 變長操作碼具體有兩種不同的編碼, 即Huffman(哈夫曼)編碼和擴(kuò)展操作碼。 實(shí)際上, 擴(kuò)展操作碼是Huffman編碼與等長操作碼的折中編碼方案。 擴(kuò)展操作碼的指令格式如圖4.2所示。 圖4.2擴(kuò)展操作碼的指

13、令格式指 令 系 統(tǒng)第 章假設(shè)某機(jī)器的指令系統(tǒng)中所有指令的長度都固定為16位, 有二地址指令、 一地址指令和零地址指令等三種指令格式。 設(shè)二地址指令的操作碼字段為4位, 每一地址碼字段均為6位, 一地址指令和零地址指令的操作碼采用擴(kuò)展操作碼的方法構(gòu)成, 如圖4.2所示。 二地址指令的操作碼為4位, 如果全部用來表示二地址指令, 則可以表示24=16種。 如果機(jī)器只需要15條二地址指令, 則可以取其中的00001110共15種組合來表示二地址指令的操作碼。 將剩下的一種編碼1111作為一地址指令操作碼的擴(kuò)展標(biāo)志, 擴(kuò)展到二地址指令的A1字段,就形成了一地址指令。 指 令 系 統(tǒng)第 章由于A1字段

14、的位數(shù)是6位, 因此用一個(gè)擴(kuò)展標(biāo)志1111就可以擴(kuò)展出26=64種一地址指令的操作碼。 如果機(jī)器只需要62條一地址指令, 即取11110000001111111101作為一地址指令的操作碼, 則余下的兩種編碼1111111110、 1111111111都可以作為零地址指令操作碼的擴(kuò)展標(biāo)志, 擴(kuò)展到一地址指令的A字段, 就形成了零地址指令。 由于A字段的位數(shù)是6位, 因此用兩個(gè)標(biāo)志位最多可以擴(kuò)展出226=128種零地址指令的操作碼。 上面描述的操作碼擴(kuò)展情況如表4.1所示。 指 令 系 統(tǒng)第 章例:一條16位指令:0 xFF23,它是幾地址指令?操作數(shù)是多少?求:能夠編碼的二地址指令的最大條數(shù)?

15、一地址?零地址?指 令 系 統(tǒng)第 章例例4.1設(shè)一臺模型機(jī)共有7種不同的指令, 使用頻度Pi如表4.2所示。 分別用等長操作碼和具有兩種碼長的擴(kuò)展操作兩種碼長的擴(kuò)展操作碼碼對其操作碼進(jìn)行編碼, 并分別計(jì)算操作碼的平均碼長。 解解: 若用等長操作碼表示, 則需要3位; 若用擴(kuò)展操作碼表示, 可以將使用頻度高的指令操作碼用2位表示, 而使用頻度低的指令操作碼用4位來表示, 各種指令的等長操作碼和擴(kuò)展操作碼表示如表4.2所示。 指 令 系 統(tǒng)第 章指 令 系 統(tǒng)第 章指令操作碼的平均碼長, 即平均操作碼編碼長度可用如下公式計(jì)算: n1iii)lP(指令操作碼長度指令的使用頻度指令操作碼的平均碼長其中

16、, n為指令的種類。 在表4.2中, 等長操作碼的平均碼長為3位; 擴(kuò)展操作碼的平均碼長為指 令 系 統(tǒng)第 章=0.402+0.302+0.152+0.054+0.044+0.034+0.034=2.3(位)由此可見, 操作碼擴(kuò)展技術(shù)是一種重要的指令優(yōu)化技術(shù)指令優(yōu)化技術(shù), 它可以縮短指令的平均長度,減少程序的總位數(shù)及增加指令字所能表示的操作信息和地址信息。 當(dāng)然, 擴(kuò)展操作碼比等長操作碼的譯碼要復(fù)雜, 相應(yīng)控制器的電路設(shè)計(jì)也較復(fù)雜。 71iiilP)(指 令 系 統(tǒng)第 章4.2.3指令字長與機(jī)器字長的關(guān)系指令字長與機(jī)器字長的關(guān)系一個(gè)指令字中所包含的二進(jìn)制代碼的位數(shù), 稱為指令字長度, 簡稱指令

17、字長指令字長。 而機(jī)器字長是指計(jì)算機(jī)一次能直接處一次能直接處理理的二進(jìn)制數(shù)據(jù)的位數(shù)二進(jìn)制數(shù)據(jù)的位數(shù), 通常所說的64位機(jī)就是指機(jī)器字長為64位。 指令字長與機(jī)器字長有密切關(guān)系。 1、指令字長等于機(jī)器字長的指令, 稱為單字長指令單字長指令;2、指令字長等于機(jī)器字長一半的指令, 稱為半字長指令半字長指令; 3、指令字長等于機(jī)器字長兩倍的指令, 稱為雙字長指令雙字長指令。 在很多計(jì)算機(jī)系統(tǒng)中, 為便于指令的存取, 機(jī)器字長通常與主存單元的位數(shù)相一致。 指 令 系 統(tǒng)第 章在計(jì)算機(jī)系統(tǒng)中, 如果各種指令的指令字長度是相等的, 則稱為定長的指令格式定長的指令格式。 如果各種指令的指令字長度是變化的, 則

18、稱為變長的指令格式變長的指令格式。 如SUN SPRAC采用的是定長的指令格式, 而IBM370、 PDP-11、 Pentium采用的則是變長的指令格式。 計(jì)算機(jī)的指令格式與機(jī)器的字長、 存儲器結(jié)構(gòu)及指令的功能都有很大的關(guān)系。 因此, 如何合理、 科學(xué)地設(shè)計(jì)指令系統(tǒng), 使指令字既能給出足夠的信息, 其長度又盡可能地短, 又能方便存取、 縮短取指時(shí)間和節(jié)省存儲空間, 是提高機(jī)器綜合性能的主要措施之一。 指 令 系 統(tǒng)第 章例例4.2某指令系統(tǒng)采用定長的指令格式定長的指令格式, 設(shè)指令字長為16位, 每個(gè)地址碼的長度為6位, 指令分為二地址指令、 一地址指令和零地址指令三類。 若二地址指令為K種

19、, 零地址指令為L種, 問一地址指令最多能設(shè)計(jì)設(shè)計(jì)多少種。(K 241, L 26 )解解: 畫出三類指令的指令格式如圖4.3所示。設(shè)一地址指令為X種, 根據(jù)題意, 有(24K)26X)26LX210K26L26所以, 一地址指令最多能設(shè)計(jì)210K26L26種(加括號“ ”表示取整)。 指 令 系 統(tǒng)第 章圖4.3三類指令的指令格式指 令 系 統(tǒng)第 章4.2.4指令格式舉例指令格式舉例不同的機(jī)器在指令格式的設(shè)置上各有不同的考慮, 即使同一種機(jī)器也因?yàn)橹噶顬椴煌愋投捎脦追N格式, 下面以IBM370和PDP-11為例, 簡要介紹大型機(jī)和小型機(jī)中有代表性的指令格式的設(shè)置情況。 1. IBM370

20、的指令格式的指令格式IBM370曾是大型機(jī)的重要代表, 它根據(jù)操作數(shù)的不同來源將指令分為RR型、 RS型、 RX型、 SI型和SS型。 相應(yīng)地設(shè)置了5種主要的指令格式, 如圖4.4所示。指 令 系 統(tǒng)第 章圖4.4IBM370的指令格式指 令 系 統(tǒng)第 章IBM370是32位機(jī)器, 按字節(jié)尋址, 支持的數(shù)據(jù)類型有字節(jié)、 半字、 字、 雙字、 壓縮BCD碼和非壓縮BCD碼。 機(jī)內(nèi)有16個(gè)32位的通用寄存器、 4個(gè)雙精度(64位)浮點(diǎn)寄存器。 IBM370采用變長的指令格式, 指令基本字長為16位, 根據(jù)指令中所包含的存儲單元地址數(shù), 指令長度可增加到32位或48位。 沒有對操作碼進(jìn)行擴(kuò)展的情況,

21、 幾乎所有指令的操作碼都集中在指令字的高8位, 其中最左邊兩位表明指令的格式和長度, 其余6位用來規(guī)定具體的操作。指 令 系 統(tǒng)第 章圖4.4中, Ri、 Rj為16個(gè)通用寄存器中的任意兩個(gè)寄存器號, 分別用4位字段表示。 Rx為變址寄存器號, Rb為基址寄存器號, 均借用16個(gè)通用寄存器, 因此也分別占4位。 A為形式地址, 占12位。 I為立即數(shù), 占8位, 一般用來表示較小的常數(shù)或字符。 L可以是一個(gè)8位字段或兩個(gè)4位字段, 用來指定一個(gè)或兩個(gè)操作數(shù)的長度。 在RR格式中, 兩操作數(shù)均來自通用寄存器, 所以指令字長為16位。 RX格式中, 一個(gè)操作數(shù)來自通用寄存器, 另一操作數(shù)通過Rx和

22、Rb的內(nèi)容與A相加, 獲得其存儲器有效地址, 指令字長增加到32位。指 令 系 統(tǒng)第 章RS格式與SI格式類似, 只不過前者指令提供了三個(gè)地址信息, 兩個(gè)為通用寄存器號, 另一個(gè)是由基址寄存器和位移量形成的有效地址; 后者則在指令中直接給定立即數(shù)。 SS格式給出兩個(gè)存儲單元地址, 均通過基址尋址獲得, 使指令字長增加為48位。 用SS格式來實(shí)現(xiàn)將一組數(shù)據(jù)從存儲器某一區(qū)間傳送到另一區(qū)間的操作是非常方便的。指 令 系 統(tǒng)第 章 4.3指令和數(shù)據(jù)的尋址方式指令和數(shù)據(jù)的尋址方式4.3.1 指令的尋址方式指令的尋址方式 形成指令有效地址的方式形成指令有效地址的方式, 稱為指令的尋址方式指令的尋址方式。

23、指令的尋址方式有兩種, 即順序?qū)ぶ贩绞巾樞驅(qū)ぶ贩绞胶吞S尋址方式跳躍尋址方式。 1. 順序?qū)ぶ贩绞巾樞驅(qū)ぶ贩绞?計(jì)算機(jī)每次訪存取指時(shí), 指令的地址都是直接由程序計(jì)數(shù)器PC給出的, 取指完成后PC自動進(jìn)行調(diào)整, 形成下一條指令在主存單元的地址, 從而保證程序的順序執(zhí)行。 指令的順序?qū)ぶ贩绞绞侵府?dāng)執(zhí)行一段程序時(shí), 要執(zhí)行的下一條指令便要執(zhí)行的下一條指令便是程序中當(dāng)前正在執(zhí)行指令的下一條指令是程序中當(dāng)前正在執(zhí)行指令的下一條指令。 需要分析這句話需要分析這句話題目解讀題目解讀指 令 系 統(tǒng)第 章假定每條指令字長為2字節(jié)。程序在內(nèi)存中的存儲如下:.0 x0FE:340 x0FF:100 x100:AB0

24、 x101:CD0 x102:120 x103:34.當(dāng)前PC=0 x100,則:1、要取出的指令的有效地址是?2、指令字是什么?3、下一條指令的有效地址是什么?指 令 系 統(tǒng)第 章2. 跳躍尋址方式跳躍尋址方式指令的跳躍尋址方式是指程序不是順序執(zhí)行的, 要執(zhí)行的下一條指令的地址并不是程序計(jì)數(shù)器PC的當(dāng)前值, 而是根據(jù)當(dāng)前指令的執(zhí)行結(jié)果來確定的。 例如條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令, 它在條件滿足的情況下立即修改程序計(jì)數(shù)器PC的內(nèi)容, 等到下一次取指令時(shí), 就已經(jīng)完成轉(zhuǎn)移了。再如無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令、 調(diào)用子程序指令調(diào)用子程序指令等都是直接跳躍到另外一個(gè)地址去執(zhí)行程序, 這些指令都有修改都有

25、修改PC內(nèi)容的功內(nèi)容的功能能。 修改PC的方法有兩種: 一種是在當(dāng)前PC值的基礎(chǔ)上加減一個(gè)位移量, 這稱為相對尋址相對尋址; 另一種是直接替換直接替換PC的值, 稱為絕對尋址絕對尋址。 指 令 系 統(tǒng)第 章復(fù)習(xí):1. 計(jì)算機(jī)系統(tǒng)中,硬件能夠直接識別的指令是() A. 機(jī)器指令 B. 匯編語言指令 C. 高級語言命令 D. 特權(quán)指令2. 下列幾項(xiàng)中,不符合RISC指令系統(tǒng)特點(diǎn)的是() A. 指令長度固定,指令種類少 B. 尋址方式種類盡量多,指令功能盡可能強(qiáng) C. 增加寄存器的數(shù)目,以盡量減少訪存次數(shù) D. 選取使用頻率最高的一些簡單指令以及很有用但不復(fù)雜的指令3. 尋址方式是指尋找指令或操作數(shù)

26、的_地址的方法。4. 尋址分為_尋址和_尋址。5.指令集大致可以分為RISC指令集和_指令集。6. 某指令系統(tǒng)字長為16位,地址碼4位,試提出一種方案,使該指令系統(tǒng)有8條三地址指令、16條二地址指令、128條一地址指令。指 令 系 統(tǒng)第 章4.3.2操作數(shù)的尋址方式操作數(shù)的尋址方式所謂操作數(shù)的尋址方式, 是指形成操作數(shù)的有效地址的指形成操作數(shù)的有效地址的方式方式。 常見的尋址方式有隱含尋址、 立即尋址、 寄存器直接尋址、 寄存器間接尋址、直接尋址、 間接尋址、 相對尋址、 基址尋址、變址尋址、自動增量/減量尋址及堆棧尋址共11種。 需要提醒讀者的是, 一臺計(jì)算機(jī)的指令系統(tǒng)不一定同時(shí)具有這11種

27、尋址方式, 而有的還可能會采用一些更復(fù)雜的尋址方式, 如x86系列機(jī)中采用的段尋址方式, 某些大型機(jī)中采用的存儲器二次間接尋址方式、 復(fù)合尋址方式等。指 令 系 統(tǒng)第 章在描述操作數(shù)的尋址方式時(shí), 本書將使用如下符號: OP: 操作碼。 X: 尋址模式。 I: 間接特征。 R: 通用寄存器。 Rb: 基址寄存器。 Rx: 變址寄存器。 A: 形式地址, 它可以是操作數(shù)的有效地址、 地址位移量或立即數(shù)等。 E: 操作數(shù)的有效地址。 (E): 地址E的內(nèi)容。 S: 操作數(shù)。指 令 系 統(tǒng)第 章以下我們以一地址指令為例, 介紹操作數(shù)的尋址方式。 設(shè)一地址指令的基本格式如下: 其中, X、 I、 A組

28、成該指令操作數(shù)的有效地址。 若操作數(shù)的尋址方式中只有直接和間接兩種, 則只設(shè)計(jì)間接特征位I, 一般I=0表示直接, I=1表示間接; 若操作數(shù)的尋址方式中直接和間接特征與其他尋址方式的結(jié)合不是很明顯, 則只設(shè)計(jì)尋址模式, 一般用X、 MOD或M等表示。指 令 系 統(tǒng)第 章若操作數(shù)的尋址方式中直接和間接特征能與其他尋址方式結(jié)合成各種復(fù)合尋址方式, 則可同時(shí)設(shè)計(jì)尋址模式X和間接特征位I。 另外, 在此格式中假設(shè)系統(tǒng)中的特殊寄存器都只有一個(gè), 若有多個(gè)特殊寄存器, 則需要在指令格式中設(shè)計(jì)相應(yīng)的地址字段。 1. 隱含尋址隱含尋址 有些類型的指令不是明顯不是明顯地給出操作數(shù)的地址, 而是隱含地由累加器給

29、出操作數(shù)。 例如, 8086匯編語言中有:CWD; 把AX中的內(nèi)容按照符號位擴(kuò)展為DX: AX雙字, 源操作數(shù)的地 址隱含為AX寄存器。指 令 系 統(tǒng)第 章IDIV BL; 把AX中的帶符號數(shù)除以BL寄存器中的帶符號數(shù), 其中一個(gè)源 操作數(shù)的地址隱含為AX寄存器又例如, Z80匯編語言中有: AND 0FH; 把累加器A的內(nèi)容與立即數(shù)0FH相“與”, 其中一個(gè)源操作數(shù) 的地址隱含為累加器A2. 立即尋址立即尋址 指令的形式地址字段給出的不是操作數(shù)的地址, 而是操操作數(shù)本身作數(shù)本身, 這種尋址方式稱為立即尋址。例如, 8086匯編語言中有: 指 令 系 統(tǒng)第 章MOV AX, 1234H; 把立

30、即數(shù)1234H傳送到AX寄存器, 源操作數(shù)采用的就是立即尋址。立即尋址用于給寄存器或存儲單元賦初值。 由于指令自帶操作數(shù), 因此取操作數(shù)時(shí)不需不需要額外的訪存時(shí)間要額外的訪存時(shí)間。 3. 寄存器直接尋址寄存器直接尋址 寄存器尋址可分為寄存器直接尋址寄存器直接尋址和寄存器間接尋址寄存器間接尋址兩種, 通常所說的寄存器尋址指的是寄存器直接尋址。 這里的寄存器一般為通用寄存器, 在某些計(jì)算機(jī)系統(tǒng)中, 基址寄存器和變址寄存器也可以作為通用寄存器使用。 指 令 系 統(tǒng)第 章 在單地址指令中, 若操作數(shù)的尋址方式同時(shí)具有寄存器直接尋址和寄存器間接尋址兩種尋址方式, 并且不再采用其他的尋址方式, 則該指令的

31、指令格式設(shè)計(jì)如圖4.6和4.7所示,指令格式中, I為間接特征位, 占1位。 I=0, 表示寄存器直接尋址, I=1, 表示寄存器間接尋址。 R為寄存器的編碼, 即寄存器的地址。 如果CPU中有N個(gè)通用寄存器, 則指令格式中的寄存器尋址段占lb N位。 寄存器直接尋址的操作示意圖如圖4.6所示。 在寄存器直接尋址中, 寄存器的編碼R為操作數(shù)的有效地址, 而寄存器R中的內(nèi)容為操作數(shù)。 即操作數(shù)的有效地址E=R, 操作數(shù)S=(E)=(R)。指 令 系 統(tǒng)第 章圖4.6寄存器直接尋址方式指 令 系 統(tǒng)第 章由于采用寄存器尋址時(shí), 操作數(shù)均來自于CPU內(nèi)的通用寄存器, 因此操作速度快。 這種尋址方式被

32、廣泛應(yīng)用于使用頻度高的算術(shù)邏輯運(yùn)算類指令中, 在匯編程序設(shè)計(jì)中應(yīng)用得最普遍。 4. 寄存器間接尋址寄存器間接尋址 寄存器間接尋址的操作示意圖如圖4.7所示。 在寄存器間接尋址中, 寄存器寄存器R的內(nèi)容為操作數(shù)在主存中的有效地址的內(nèi)容為操作數(shù)在主存中的有效地址, 由寄存器R的內(nèi)容訪存所得到的內(nèi)容才是真正的操作數(shù), 即操作數(shù)的有效地址E=(R), 操作數(shù)S=(E)=(R)。 指 令 系 統(tǒng)第 章圖4.7寄存器間接尋址方式指 令 系 統(tǒng)第 章5. 直接尋址直接尋址 在單地址指令中, 若操作數(shù)的尋址方式同時(shí)具有直接尋址和間接尋址兩種尋址方式, 并且不再采用其他的尋址方式, 則該指令的指令格式設(shè)計(jì)如圖4

33、.8和4.9所示, 指令格式中, I為間接特征位, 占1位。 I=0, 表示直接尋址, I=1, 表示間接尋址。 直接尋址的操作示意圖如圖4.8所示。 在直接尋址中, 指令中的形式地址就是操作數(shù)在主存中的有效地址, 即操作數(shù)的有效地址E=A, 操作數(shù)S=(E)=(A)。 指 令 系 統(tǒng)第 章圖4.8直接尋址方式在直接尋址中, 指令中的形式地址就是操作數(shù)在主存中的有效地址, 即操作數(shù)的有效地址E=A, 操作數(shù)S=(E)=(A)。 指 令 系 統(tǒng)第 章6. 間接尋址間接尋址通常所說的間接尋址是指存儲器間接尋址。 在間接尋址中, 指令的形式地址字段并不是操作數(shù)在主存的有效地址, 而是操作數(shù)有效地址的

34、指示器。 由指令中的形式地址可以間接找到或推導(dǎo)出操作數(shù)在主存的有效地址。 存儲器間接尋址有一次間接和多次間接兩種情況, 大多數(shù)計(jì)算機(jī)只允許一次間接。 存儲器一次間接尋址的操作示意圖如圖4.9所示。 指令中的形式地址A是操作數(shù)在主存中有效地址的地址, 即操作數(shù)的有效地址E=(A),操作數(shù)S=(E)=(A)。 指 令 系 統(tǒng)第 章圖4.9一次間接尋址方式操作數(shù)的有效地址E=(A),操作數(shù)S=(E)=(A)指 令 系 統(tǒng)第 章7. 相對尋址相對尋址通常用于通常用于指令尋址指令尋址相對尋址是相對于程序計(jì)數(shù)器相對尋址是相對于程序計(jì)數(shù)器PC而言的。 指令中的形式地址A是一個(gè)地址位移量地址位移量, 用補(bǔ)碼表

35、示, 即位移量的最高位為符號位, 其值可正可負(fù)。 相對尋址方式的操作示意圖如圖4.10所示。 在相對尋址方式中, 操作數(shù)在主存中的有效地址有效地址等于程序計(jì)數(shù)器PC的內(nèi)容加上指令格式中的位移量, 即操作數(shù)的有效地址E=(PC)+A, 操作數(shù)S=(E)=(PC)+A)。 指 令 系 統(tǒng)第 章圖4.10相對尋址方式指 令 系 統(tǒng)第 章8. 基址尋址基址尋址在基址尋址中, 指令中的形式地址A是一個(gè)地址位移量地址位移量, 用補(bǔ)碼表示, 其值可正可負(fù)?;穼ぶ返牟僮魇疽鈭D如圖4.11所示。 操作數(shù)在主存中的有效地址等于基址寄存器的內(nèi)容基址寄存器的內(nèi)容加上地址位移量加上地址位移量, 即操作數(shù)的有效地址E=

36、(Rb)+A, 操作數(shù)S=(E)=(Rb)+A)。 基址尋址的優(yōu)點(diǎn)在于可以擴(kuò)大尋址的空間, 因?yàn)榛芳拇嫫鞯奈粩?shù)遠(yuǎn)超過形式地址的位數(shù)。 指 令 系 統(tǒng)第 章圖4.11基址尋址方式指 令 系 統(tǒng)第 章9. 變址尋址變址尋址在變址尋址中, 指令中的形式地址A是一個(gè)地址位移量, 用補(bǔ)碼表示, 其值可正可負(fù)。變址尋址的操作示意圖如圖4.12所示。 操作數(shù)在主存中的有效地址等于變址寄存器的內(nèi)容加上地址位移量變址寄存器的內(nèi)容加上地址位移量, 即操作數(shù)的有效地址E=(Rx)+A, 操作數(shù)S=(E)=(Rx)+A)。 指 令 系 統(tǒng)第 章圖4.12變址尋址方式指 令 系 統(tǒng)第 章變址尋址的優(yōu)點(diǎn)在于可以對一個(gè)連

37、續(xù)存儲區(qū)域中的數(shù)據(jù)連續(xù)存儲區(qū)域中的數(shù)據(jù), 如數(shù)組或表格類的數(shù)據(jù)進(jìn)行相同的操作或運(yùn)算數(shù)組或表格類的數(shù)據(jù)進(jìn)行相同的操作或運(yùn)算, 也可實(shí)現(xiàn)程序塊有規(guī)律的變化, 因?yàn)樾问降刂诽峁┝藬?shù)據(jù)在存儲區(qū)域的形式地址提供了數(shù)據(jù)在存儲區(qū)域的起始地址起始地址, 而變址寄存器的內(nèi)容相當(dāng)于相對于起始地址的位變址寄存器的內(nèi)容相當(dāng)于相對于起始地址的位移量移量, 在不改變指令本身的前提下,若使變址寄存器的內(nèi)容有規(guī)律的變化(如自增或自減一個(gè)常數(shù)), 就可實(shí)現(xiàn)對數(shù)據(jù)有規(guī)律的訪問。 指 令 系 統(tǒng)第 章在基址或變址尋址中, 若基址或變址寄存器的個(gè)數(shù)超過1個(gè), 則需在指令格式中對基址或變址寄存器進(jìn)行編碼。 例如, 假設(shè)系統(tǒng)中有4個(gè)變址

38、寄存器, 則變址寄存器的編碼占用2位, 對應(yīng)的一地址指令格式可設(shè)計(jì)如下: 指 令 系 統(tǒng)第 章10. 自動增量自動增量/減量尋址減量尋址這是寄存器間接尋址的一種變型, 某些機(jī)器設(shè)計(jì)有能夠自動增加/減少其內(nèi)容的寄存器,每執(zhí)行該指令一次, 寄存器的內(nèi)容就可以自動增量/減量。在自動增量尋址方式中, 操作數(shù)在主存中的有效地址等于寄存器的內(nèi)容或寄存器的內(nèi)容與位移量之和, 同時(shí)每執(zhí)行該指令一次, 寄存器的內(nèi)容就自動增量(根據(jù)操作數(shù)是字節(jié)、 字、 雙字或四倍字分別增加1、 2、 4、8)。 常用助記符為(R)+, 加號在括號之后, 形象地表示先操作后修改寄存器的內(nèi)容。 指 令 系 統(tǒng)第 章在自動減量尋址方式

39、中, 寄存器內(nèi)容先減去數(shù)據(jù)類型長度, 然后再用寄存器的內(nèi)容或寄存器的內(nèi)容與位移量之和形成操作數(shù)在主存中的有效地址。 常用助記符為-(R), 減號在括號之前, 形象地表示先修改寄存器的內(nèi)容后操作。 其具體操作過程如圖4.13所示。指 令 系 統(tǒng)第 章圖4.13自動增量/減量尋址方式操作數(shù)的有效地址:E=(R)S=(E)=(R)操作的后效:(R)=(R)+1,2,4,8操作數(shù)的有效地址:E=(R)+AS=(E)=(R)+A)操作的后效:(R)=(R)+1,2,4,8指 令 系 統(tǒng)第 章在自動增量/減量尋址中, 操作數(shù)在主存中的有效地址都為E=(R)或E=(R)+A, 操作數(shù)S=(E)=(R)或S=

40、(E)=(R)+A), 只是修改R內(nèi)容與尋址的先后次序不一樣而已。 在相對尋址、 基址尋址、 變址尋址、 自動增量/減量尋址等尋址方式中, 為保證加法運(yùn)算結(jié)果的正確性, 在進(jìn)行加法運(yùn)算前, 需將位移量的符號位向前擴(kuò)展直到與程序計(jì)數(shù)器PC、 基址寄存器Rb、 變址寄存器Rx、 通用寄存器R的位數(shù)相同。指 令 系 統(tǒng)第 章11. 堆棧尋址堆棧尋址 堆棧有寄存器堆棧寄存器堆棧和存儲器堆棧存儲器堆棧兩種形式, 現(xiàn)代計(jì)算機(jī)大都采用存儲器堆棧。 存儲器堆棧是由程序員在主存空間開辟的一個(gè)以后進(jìn)先出(LIFO)方式來訪問的存儲區(qū)域。 使用存儲器堆棧的優(yōu)點(diǎn)是堆棧的容量大, 并且訪問方便, 缺點(diǎn)是進(jìn)棧和出棧的速度

41、慢。 操作數(shù)存放在堆棧的尋址方式, 稱為堆棧尋址。 采用堆棧尋址的典型指令包括堆棧操作指令堆棧操作指令、 中中斷調(diào)用與返回指令斷調(diào)用與返回指令、 子程序調(diào)用與返回指令子程序調(diào)用與返回指令等。 指 令 系 統(tǒng)第 章堆棧的棧頂由堆棧指針堆棧指針SP指示, 通常堆棧的操作都在棧頂進(jìn)行。 堆棧操作指令一般只有兩條:1、進(jìn)棧指令Push:用來將CPU內(nèi)寄存器的內(nèi)容或某一存儲單元的內(nèi)容壓入堆棧棧頂, 同時(shí)修改堆棧指針SP的值2、出棧指令Pop:從棧頂取出數(shù)據(jù)送入CPU內(nèi)的通用寄存器或某一存儲單元, 同時(shí)修改堆棧指針SP的值。 數(shù)據(jù)的進(jìn)棧和出棧操作與堆棧指針的修改是有次序的, 對于不同的計(jì)算機(jī), 其操作次序

42、不一定相同。 例如, 對于8086 CPU而言,進(jìn)棧和出棧操作均以字(兩個(gè)字節(jié))為單位,內(nèi)存按字節(jié)編址, 進(jìn)棧時(shí)SP向地址減小地址減小的方向變化, 其進(jìn)棧操作過程為:指 令 系 統(tǒng)第 章(1)先將(SP)-2SP,(2)數(shù)據(jù)進(jìn)棧, 即將數(shù)據(jù)送入以(SP)和(SP)+1為地址的兩個(gè)字 節(jié)單元中。 出棧操作過程正好相反:(1) 先將數(shù)據(jù)出棧, 即將以(SP)和(SP)+1為地址的兩個(gè)字節(jié)單元中的數(shù)據(jù)彈出,(2) 將(SP)+2SP。 但對于MCS-51系列單片機(jī)而言, 進(jìn)棧和出棧操作均以字節(jié)為單位, 進(jìn)棧時(shí)SP向地址增大的方向變化。若主存按字編址, 進(jìn)棧和出棧均以字為單位, 假設(shè)一個(gè)機(jī)器字為兩個(gè)字

43、節(jié), 進(jìn)棧時(shí)SP向地址減小的方向變化, 則進(jìn)棧、 出棧操作過程如圖4.14所示。 指 令 系 統(tǒng)第 章圖4.14堆棧操作示意圖(a) 進(jìn)棧操作; (b) 出棧操作push Rpop R指 令 系 統(tǒng)第 章我們用Hoare邏輯來表示指令push R的語義:pre push R post(sp)是合法的棧頂?shù)刂? (R)是合法的操作數(shù)push R (sp)= = (sp)-2 / (sp)= = Low(R) / (sp)+1)= =High(R) / (R)= =(R)指 令 系 統(tǒng)第 章4.3.3指令格式的分析與設(shè)計(jì)指令格式的分析與設(shè)計(jì)例例4.3設(shè)某類指令格式如下所示, 其中OP為操作碼字段,

44、 試分析指令格式的特點(diǎn)。解解: 指令格式的特點(diǎn)如下: 單字長二地址指令; 操作碼字段OP為6位,最多可以設(shè)計(jì)64條不同功能的指令; 源操作數(shù)和目的操作數(shù)均來自于通用寄存器(可分別指定16個(gè)通用寄存器), 所以該類指令為RR型。 由于該類指令的操作數(shù)均來自于CPU內(nèi)的寄存器, 因此操作速度快, 這類指令結(jié)構(gòu)常用于使用頻度較高的算術(shù)邏輯運(yùn)算類指令。指 令 系 統(tǒng)第 章例例4.4設(shè)某類指令格式如下所示, 其中OP為操作碼字段, 試分析指令格式的特點(diǎn)。 解解:指令格式的特點(diǎn)如下:1、雙字長二地址指令;2、 操作碼字段OP為6位, 最多可以設(shè)計(jì)64條不同功能的指令;3、一個(gè)源操作數(shù)來自于通用寄存器(可分

45、別指定16個(gè)通用寄存器)4、另一個(gè)源操作數(shù)來自于存儲器且采用變址尋址, 操作數(shù)在存儲單元的有效地址等于變址寄存器(可分別指定16個(gè)變址寄存器)的內(nèi)容加上位移量, 所以該類指令為RS型。 指 令 系 統(tǒng)第 章分析指令主要從這幾方面入手: 幾字長幾地址指令; 操作碼字段為多少位, 最多可以設(shè)計(jì)多少條不同功能的指令; 源操作數(shù)和目的操作數(shù)分別來自于通用寄存器還是存儲器, 分別說明其尋址方式, 可分別指定多少個(gè)通用寄存器或特殊寄存器, 該類指令為什么類型; 該類指令的適用場合。 指 令 系 統(tǒng)第 章例例4.5一種RS型指令的結(jié)構(gòu)如下所示:其中, OP為操作碼字段, R為通用寄存器字段, MOD為尋址方

46、式字段, Rb為基址寄存器字段, Rx為變址寄存器字段, 通過MOD、 R、 Rb、 Rx、 A的組合, 可構(gòu)成如表4.3所示的尋址方式。 請寫出6種尋址方式的名稱指 令 系 統(tǒng)第 章指 令 系 統(tǒng)第 章解解: 直接尋址; 相對尋址; 基址尋址; 變址尋址; 間接尋址; 寄存器間接尋址。 值得注意的是, 此題的RS型指令格式中設(shè)計(jì)了MOD、 R、 Rb和Rx字段, 表示該類指令的存儲器操作數(shù)最多可采用8種不同的尋址方式, 可訪問的通用寄存器最多為4個(gè), 基址寄存器最多為2個(gè), 變址寄存器最多為4個(gè)。 若在使用基址尋址時(shí)所訪問的基址寄存器是系統(tǒng)默認(rèn)的某一個(gè)特定的寄存器, 則指令格式設(shè)計(jì)時(shí)不必設(shè)計(jì)

47、Rb字段。 Rx的設(shè)計(jì)與Rb的設(shè)計(jì)類似。 指 令 系 統(tǒng)第 章例例4.6設(shè)有一臺計(jì)算機(jī), 其指令長度為16位, 有一類RS型指令的格式如下:其中, OP為操作碼, 占6位; R為寄存器編號, 占2位, 可訪問4個(gè)不同的通用寄存器; MOD為尋址方式, 占2位, 與形式地址A一起決定源操作數(shù), 規(guī)定如下: MOD=00, 為立即尋址, A為立即數(shù); MOD=01, 為相對尋址, A為位移量; MOD=10, 為變址尋址, A為位移量。R采用寄存器直接尋址采用寄存器直接尋址指 令 系 統(tǒng)第 章如圖4.15所示, 假定要執(zhí)行的指令為加法指令, 存放在1000H單元中, 形式地址A的編碼為的編碼為01

48、H, 其中H表示十六進(jìn)制數(shù)。 該指令執(zhí)行前存儲器和寄存器的存儲情況如圖4.15所示, 假定此加法指令的兩個(gè)源操作數(shù)中一個(gè)來自于形式地址A或者主存, 另一個(gè)來自于目的寄存器R0, 并且加法的結(jié)果一定存放在目的寄存器R0中。 指 令 系 統(tǒng)第 章圖4.15存儲器和寄存器中的數(shù)據(jù)指 令 系 統(tǒng)第 章在以下幾種情況下, 該指令執(zhí)行后, R0和PC的內(nèi)容為多少? (1) 若MOD=00, (R0)=_; (2) 若MOD=01, (R0)=_; (3) 若MOD=10, (R0)=_; (PC)=_。 解解:(1) 若MOD=00, 為立即尋址, 則指令格式中的形式地址部分即為立即數(shù), 因此一個(gè)源操作數(shù)

49、為01H, 另一個(gè)源操作數(shù)為R0的內(nèi)容0015H, 加法指令執(zhí)行的結(jié)果為(R0)=0016H。 注意:要執(zhí)行的指令在地址1000H中,當(dāng)把該指令讀入CPU開始執(zhí)行之前,(PC)=(PC)+1指 令 系 統(tǒng)第 章(2) 若MOD=01, 為相對尋址, 則一個(gè)源操作數(shù)的有效地址E=(PC)+A,在執(zhí)行加法指令時(shí),PC的值為下一條指令的地址, 即(PC)=1001H, 由此可以算出這個(gè)源操作數(shù)的有效地址為E=1001H+01H=1002H, 這個(gè)操作數(shù)為(E)=1150H, 另一個(gè)源操作數(shù)為R0的內(nèi)容0015H, 加法指令執(zhí)行的結(jié)果為(R0)=1165H。 (3) 若MOD=10, 為變址尋址, 則

50、一個(gè)源操作數(shù)的有效地址E=(Rx)+A, 由此可以算出這個(gè)源操作數(shù)的有效地址為E=1002H+01H=1003H, 這個(gè)操作數(shù)為(E)=1250H, 另一個(gè)源操作數(shù)為R0的內(nèi)容0015H, 加法指令執(zhí)行的結(jié)果為(R0)=1265H; 在執(zhí)行加法指令時(shí), PC的值為下一條指令的地址, 即(PC)=1001H。 指 令 系 統(tǒng)第 章例例4.7已知某計(jì)算機(jī)系統(tǒng)中有一類RS型指令, 其指令格式如下: 該指令長度為16位, 已知CPU中有8個(gè)16位長的通用寄存器, 這些寄存器也可作為基址寄存器使用, 若要構(gòu)造16條RS型指令, 問: (1) 該類指令各段占用多少位? (2) 能尋址的最大主存地址為多少?

51、 指 令 系 統(tǒng)第 章 (3) 若將RS型指令中的操作碼段擴(kuò)展到寄存器尋址段而構(gòu)成S型指令, 那么此時(shí)RS型指令最多為多少條?在此此基礎(chǔ)上S型指令最多可以設(shè)計(jì)多少條?基址尋址的有效地址E=(Rj)+A(Rj)的范圍:0 x00000 xFFFF(0216-1)A用補(bǔ)碼來表示,其范圍是100000b011111b(-2525-1) 位移量A用補(bǔ)碼表示, 最大值為251, 基址寄存器的最大值為2161,因此該類指令能尋址的最大主存地址為216+252。 指 令 系 統(tǒng)第 章(2) 由于該類指令只有基址尋址訪問主存, 因此尋址的最大主存地址只由基址尋址決定。基址尋址的有效地址E=(Rj)+A, 位移

52、量A用補(bǔ)碼表示, 最大值為251, 基址寄存器的最大值為2161,因此該類指令能尋址的最大主存地址為216+252。 (3) RS型指令的操作碼段占4位, 最多有16種編碼, 但至少要留一種編碼作為S型指令操作碼的擴(kuò)展標(biāo)志, 因此RS型指令最多為15條; 在S型指令操作碼只使用一種擴(kuò)展標(biāo)志的基礎(chǔ)上, S型指令最多可以設(shè)計(jì)8條。 指 令 系 統(tǒng)第 章此例中要求計(jì)算能尋址的最大主存地址, 除此之外, 還要區(qū)分諸如尋址的范圍、 尋址的地址空間大小、 尋址的最大存儲空間大小等概念。 尋址的范圍是指在所有訪存的尋址方式中,從0到某一最大訪存地址, 如此例中的尋址范圍為0216+252; 尋址的地址空間大

53、小是指在所有訪存的尋址方式中, 能訪問的地址的個(gè)數(shù), 如此例中能尋址的地址空間大小為216+251; 尋址的最大存儲空間大小帶有存儲單位, 如B、 KB、 MB等, 它等于能尋址的地址空間的大小乘以一個(gè)地址所存儲的字節(jié)數(shù), 如此例中能尋址的存儲器空間的大小為(216+251)2 B。 指 令 系 統(tǒng)第 章4.4典典 型型 指指 令令4.4.1指令的分類指令的分類 不同計(jì)算機(jī)的指令系統(tǒng)包含的指令條數(shù)各不相同, 有的只有幾十條指令, 如RISC-只有31條指令, SUN SPARC只有75條指令, 有的則有幾百條, 如VAX 11/780有303條指令, Pentium有191條指令, Penti

54、um 4有385條指令。 指令的類型在不同的計(jì)算機(jī)中也具有很大的差別, 但有些常用的指令類型是所有計(jì)算機(jī)共有的。 指 令 系 統(tǒng)第 章 按指令功能的不同, 一個(gè)較完善的指令系統(tǒng)應(yīng)包括數(shù)據(jù)數(shù)據(jù)傳送指令傳送指令、 算術(shù)運(yùn)算指令、 邏輯運(yùn)算指令、 移位指令、 程序程序控制指令控制指令、 輸入輸入/輸出指令輸出指令、 字符串處理指令、 特權(quán)指令特權(quán)指令、 處理器控制指令處理器控制指令等。 1. 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 數(shù)據(jù)傳送指令的功能是實(shí)現(xiàn)立即數(shù)到寄存器或主存單元以及數(shù)據(jù)在寄存器與寄存器之間、寄存器與主存單元之間、 主存單元與主存單元之間的傳送。 數(shù)據(jù)傳送指令一般包括取數(shù)指令、 存數(shù)指令、 傳送指

55、令、 成組傳送指令、 數(shù)據(jù)交換指令、 清累加器指令、 堆棧操作指令堆棧操作指令等。 指 令 系 統(tǒng)第 章2. 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 算術(shù)運(yùn)算指令的功能是實(shí)現(xiàn)定點(diǎn)數(shù)或浮點(diǎn)數(shù)的加減乘除運(yùn)算。 算術(shù)運(yùn)算指令一般包括二進(jìn)制定點(diǎn)加減乘除指令、 二進(jìn)制浮點(diǎn)加減乘除指令、 十進(jìn)制定點(diǎn)加減乘除指令、 十進(jìn)制浮點(diǎn)加減乘除指令等。 不同的機(jī)器, 包含的指令條數(shù)各不相同, 如有的只具有定點(diǎn)數(shù)算術(shù)運(yùn)算指令, 有的則具有浮點(diǎn)運(yùn)算與十進(jìn)制運(yùn)算指令。 3. 邏輯運(yùn)算指令邏輯運(yùn)算指令 邏輯運(yùn)算指令的功能是完成邏輯運(yùn)算。 邏輯運(yùn)算指令一般包括邏輯非指令、 邏輯加指令、邏輯乘指令、 按位加指令等。 這類指令不只在數(shù)據(jù)運(yùn)算中有

56、用, 在無符號數(shù)的位操作、 代碼轉(zhuǎn)換和條件判斷等方面更加有用。 指 令 系 統(tǒng)第 章4. 移位指令移位指令 移位指令包括算術(shù)移位指令、 邏輯移位指令、 帶進(jìn)位的循環(huán)移位指令、 不帶進(jìn)位的循環(huán)移指令等, 移位的方向又分為左移和右移兩種。 5. 程序控制指令程序控制指令 程序控制指令一般包括轉(zhuǎn)移指令轉(zhuǎn)移指令、 轉(zhuǎn)子程序指令轉(zhuǎn)子程序指令、 返回返回主程序指令主程序指令、 中斷指令中斷指令等。 而轉(zhuǎn)移指令又可分為條件轉(zhuǎn)移條件轉(zhuǎn)移指令和無條件轉(zhuǎn)移無條件轉(zhuǎn)移指令兩類。 指 令 系 統(tǒng)第 章6. 輸入輸入/輸出指令輸出指令 輸入/輸出指令用來實(shí)現(xiàn)CPU與輸入輸入/輸出設(shè)備輸出設(shè)備之間的信息交換。 對于計(jì)算機(jī)

57、系統(tǒng)來說, 輸入輸入/輸出輸出指令都是相對于相對于CPU而言而言的的。 1、若指令完成的功能是將外設(shè)端口的數(shù)據(jù)或狀態(tài)送入CPU內(nèi)的通用寄存器, 則稱之為輸入指令; 2、 若指令完成的功能是將CPU內(nèi)通用寄存器的內(nèi)容送至外設(shè)端口, 則稱之為輸出指令。 這里“端口”是指外設(shè)接口電路中的控制寄存器、 狀態(tài)寄存器和數(shù)據(jù)緩沖器的地址。 指 令 系 統(tǒng)第 章7. 字符串處理指令字符串處理指令 字符串處理是現(xiàn)代計(jì)算機(jī)的非數(shù)值處理功能, 一般包括字符串傳送指令、 字符串比較指令、 字符串搜索指令、 字符串轉(zhuǎn)換指令、 取子串指令、 字符串替換指令等。 8. 特權(quán)指令特權(quán)指令 某些指令的使用可能會破壞系統(tǒng)或其他用戶信息, 因此為了安全起見, 這類指令只能用于操作系統(tǒng)或其他系統(tǒng)軟件, 而不提供給用戶使用, 故稱為特權(quán)指令。 指 令 系 統(tǒng)第 章一般來說,

溫馨提示

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

評論

0/150

提交評論