計算機組成原理-第3章指令集結(jié)構(gòu)_第1頁
計算機組成原理-第3章指令集結(jié)構(gòu)_第2頁
計算機組成原理-第3章指令集結(jié)構(gòu)_第3頁
計算機組成原理-第3章指令集結(jié)構(gòu)_第4頁
計算機組成原理-第3章指令集結(jié)構(gòu)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 指令集結(jié)構(gòu)3.1 3.1 程序設(shè)計語言的級別程序設(shè)計語言的級別3.2 3.2 機器語言指令機器語言指令3.3 3.3 指令集結(jié)構(gòu)設(shè)計指令集結(jié)構(gòu)設(shè)計3.4 3.4 相對簡單的指令集結(jié)構(gòu)相對簡單的指令集結(jié)構(gòu)3.5 3.5 實例實例3.1 程序設(shè)計語言的級別 3.1.1 語言種類 高級語言(高級語言(high-level languageshigh-level languages) 匯編語言(匯編語言(assembly languageassembly language) 向下兼容(backward compatible) 平臺無關(guān)(platform-independent) 機器語言機器語

2、言3.1.2 編譯和匯編程序 1. 1. 編譯、匯編編譯、匯編2. 2. 編譯器編譯器 源程序、源代碼、目標代碼源程序、源代碼、目標代碼 連接器連接器、裝載器裝載器3. 3. 編譯過程編譯過程 同一高級語言源代碼可以經(jīng)過編譯在不同一高級語言源代碼可以經(jīng)過編譯在不 同的微處理器和操作系統(tǒng)或者計算平臺上運行同的微處理器和操作系統(tǒng)或者計算平臺上運行。圖圖3.1 3.1 高級程序的編譯過程高級程序的編譯過程 裝載器包含在計算平臺中裝載器包含在計算平臺中 4.4.匯編器和匯編過程匯編器和匯編過程 圖圖3.2 3.2 匯編語言程序的匯編過程匯編語言程序的匯編過程 每一種匯編語言對應(yīng)一種微處理器,不需要針對

3、不同平臺的匯編器 。1. 1. 什么是指令?什么是指令?指令指令:指示計算機執(zhí)行某種操作的命令。指示計算機執(zhí)行某種操作的命令。機器語言:機器語言:計算機硬件實體直接表示控制信息的語言。計算機硬件實體直接表示控制信息的語言。 (計算機硬件能直接理解并執(zhí)行的語言計算機硬件能直接理解并執(zhí)行的語言)指令集指令集一臺計算機能執(zhí)行的全部指令的集合。一臺計算機能執(zhí)行的全部指令的集合。 (計算機程序員接觸到的計算機的所有功能計算機程序員接觸到的計算機的所有功能) 一條指令就是機器語言的一個語句,用來說明機器一條指令就是機器語言的一個語句,用來說明機器硬件應(yīng)完成的操作。硬件應(yīng)完成的操作。 3.1.3 機器語言與

4、指令 指令集指令集表征著計算機的表征著計算機的基本功能和使用屬性基本功能和使用屬性,是計,是計算機系統(tǒng)設(shè)計中的算機系統(tǒng)設(shè)計中的核心向題核心向題。是表征一臺計算機性能的。是表征一臺計算機性能的重要因素,它的格式與功能不僅直接影響到機器的硬件重要因素,它的格式與功能不僅直接影響到機器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機器的適用結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機器的適用范圍。范圍。操作碼地址碼2. 2. 指令的組成指令的組成 一條指令一般應(yīng)包含如下信息:一條指令一般應(yīng)包含如下信息: (1) (1) 操作碼操作碼 (2) (2) 操作數(shù)的地址操作數(shù)的地址 (3) (3) 操作結(jié)果的地址

5、操作結(jié)果的地址 (4) (4) 下一條指令地址下一條指令地址 指令的基本格式指令的基本格式操作碼操作碼:表示指令應(yīng)執(zhí)行的操作和應(yīng)具有的功能。表示指令應(yīng)執(zhí)行的操作和應(yīng)具有的功能。地址碼:地址碼:表示參與操作的操作數(shù)的存放地址或操作結(jié)表示參與操作的操作數(shù)的存放地址或操作結(jié) 果的存放地址。果的存放地址。3.2 機器語言指令 3.2.1 指令類型與功能 3.2.1.1 3.2.1.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 將數(shù)據(jù)從一個地方移到另一個地方(實際是將數(shù)據(jù)從一個地方移到另一個地方(實際是“拷貝拷貝”)。)。 例:例: 8086 8086指令指令 MOV ALMOV AL,BL BL ;ALBLALBL

6、MOV AL MOV AL,Disp(BX)(SI) Disp(BX)(SI) ;AL(BX)(SI)+Disp)AL(BX)(SI)+Disp) IBM370 IBM370機的成組取指令:機的成組取指令:成組取R1R3B2D23.2.1.2 3.2.1.2 數(shù)據(jù)運算指令數(shù)據(jù)運算指令 包括包括算術(shù)運算算術(shù)運算指令、指令、邏輯運算邏輯運算指令指令 、移位移位指令。指令。例:例:80868086指令系統(tǒng)中指令系統(tǒng)中 ADD ALADD AL,BL BL ;ALAL+BLALAL+BL MUL BL MUL BL ;AXALAXALBLBL AND AL AND AL,0FEH 0FEH ;ALAL

7、FEHALALFEH,即,即ALAL的最低位的最低位 ;清;清0 0,其余位不變。,其余位不變。 OR ALOR AL,0F0H 0F0H ;ALALF0ALALF0,即,即ALAL的高的高4 4位置位置1 1, ;其余位不變;其余位不變 TEST ALTEST AL,00000001B 00000001B ; AL00000001BAL00000001B A A0 00 0 結(jié)果為結(jié)果為0 0 ;A A0 01 1 結(jié)果不為結(jié)果不為0 0 移位指令移位指令 實現(xiàn)對操作數(shù)的左、右移位。實現(xiàn)對操作數(shù)的左、右移位。 移位操作指令分為移位操作指令分為算術(shù)移位算術(shù)移位、邏輯移位邏輯移位和和 循環(huán)移位循

8、環(huán)移位三種,可以實現(xiàn)對操作數(shù)左移或右移三種,可以實現(xiàn)對操作數(shù)左移或右移 一位或幾位。一位或幾位。 3.2.1.3 3.2.1.3 程序控制指令程序控制指令 控制程序流程的指令,包括:控制程序流程的指令,包括:跳轉(zhuǎn)跳轉(zhuǎn)指令(條件或無指令(條件或無條件)條件)或分支或分支指令、指令、子程序調(diào)用子程序調(diào)用和和子程序返回子程序返回指令、指令、“軟中斷軟中斷”指令、指令、停機停機指令。指令。3.2.2 數(shù)據(jù)類型 數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù) 無符號整型數(shù)、有符號整型數(shù)、浮點數(shù)據(jù)無符號整型數(shù)、有符號整型數(shù)、浮點數(shù)據(jù) 布爾類型布爾類型 數(shù)據(jù)值常以數(shù)據(jù)值常以0 0表示表示FALSEFALSE,以,以非非0 0表示表示TR

9、UETRUE 字符數(shù)據(jù)字符數(shù)據(jù) 字符編碼標準字符編碼標準 (ASCII、EBCDIC、UNICODE、或別的)例:例:80868086指令系統(tǒng)指令系統(tǒng)JMP L1JMP L1 ;直接尋址的轉(zhuǎn)移,無條件轉(zhuǎn)移到;直接尋址的轉(zhuǎn)移,無條件轉(zhuǎn)移到L1L1處,處,JNZ 50HJNZ 50H ;相對尋址的轉(zhuǎn)移。若操作結(jié)果不為;相對尋址的轉(zhuǎn)移。若操作結(jié)果不為0 0,則,則轉(zhuǎn)移到當前轉(zhuǎn)移到當前PCPC50H50H處。設(shè)指令地址為處。設(shè)指令地址為1000H1000H,則當前,則當前PCPC1002H1002H,轉(zhuǎn)移地址為:,轉(zhuǎn)移地址為:1002H1002H50H50H1052H1052H3.2.3 尋址方式 尋

10、址方式:尋址方式:確定操作數(shù)地址的方法。確定操作數(shù)地址的方法。 形式地址:形式地址:指令中直接給出的地址。指令中直接給出的地址。 有效地址:有效地址:形式地址經(jīng)一定的計算而得到的操作數(shù)的形式地址經(jīng)一定的計算而得到的操作數(shù)的 實際地址。實際地址。3.2.3.1 3.2.3.1 直接尋址直接尋址 指令字中直接給出操作數(shù)指令字中直接給出操作數(shù)的有效地址。的有效地址。 例:例:Intel 8086Intel 8086指令指令 MOV AXMOV AX,2000H2000H 將有效地址為將有效地址為2000H2000H的內(nèi)存單元的內(nèi)容讀入累加器的內(nèi)存單元的內(nèi)容讀入累加器AXAX中。中。 例如:例如:LD

11、AC 5LDAC 5 從內(nèi)存單元從內(nèi)存單元5 5讀取數(shù)據(jù)并且把數(shù)據(jù)存儲在讀取數(shù)據(jù)并且把數(shù)據(jù)存儲在CPUCPU的累加器中。的累加器中。 這種方式簡單直觀,便于硬件實現(xiàn)。但隨著存儲器容這種方式簡單直觀,便于硬件實現(xiàn)。但隨著存儲器容 量不斷擴大,要尋址整個主存空間,將造成指令長度量不斷擴大,要尋址整個主存空間,將造成指令長度 加長。另外程序位置受到限制。加長。另外程序位置受到限制。3.2.3.2 3.2.3.2 間接尋址間接尋址指令中指定的指令中指定的是是含含有有操作數(shù)操作數(shù)地址的地址的內(nèi)存單元的內(nèi)存單元的地址地址。至少至少要進行兩次內(nèi)存訪問。要進行兩次內(nèi)存訪問。例如:例如:LDACLDAC 5 5

12、 或或 LDACLDAC (5 5)OP5IR10操作數(shù)35操作數(shù)的地址105 間接尋址的特點間接尋址的特點 間接尋址比直接尋址靈活,可擴大尋址范圍,以短間接尋址比直接尋址靈活,可擴大尋址范圍,以短 的地址碼訪問大的存儲空間。的地址碼訪問大的存儲空間。 采用間接尋址,當操作數(shù)地址需要改變時,可不必采用間接尋址,當操作數(shù)地址需要改變時,可不必 修改指令,只要修改地址指示字中內(nèi)容修改指令,只要修改地址指示字中內(nèi)容( (即存放有效即存放有效 地址的單元內(nèi)容地址的單元內(nèi)容) )即可。即可。 間接尋址需多次訪存才能取得操作數(shù),因而降低了間接尋址需多次訪存才能取得操作數(shù),因而降低了 指令的執(zhí)行速度。指令的

13、執(zhí)行速度。3.2.3.3 3.2.3.3 寄存器直接尋址和寄存器間接尋址寄存器直接尋址和寄存器間接尋址 寄存器尋址寄存器尋址 與直接和間接尋址方式相似,但指定的是寄存器,而與直接和間接尋址方式相似,但指定的是寄存器,而 不是內(nèi)存單元。不是內(nèi)存單元。 寄存器存取信息的速度比主存快,需要的地址短,可寄存器存取信息的速度比主存快,需要的地址短,可 壓縮指令長度,有利于加快指令執(zhí)行速度。但寄存器壓縮指令長度,有利于加快指令執(zhí)行速度。但寄存器 的數(shù)量有限。的數(shù)量有限。 寄存器寄存器直接尋址直接尋址OP寄存器尋址Rn操作數(shù)操作數(shù)RnRn例如:假設(shè)寄存器R中存儲了數(shù)值5,則: LDAC R ;把數(shù)值5從寄存

14、器R中拷貝到CPU的累加器中例如:假設(shè)寄存器R中存儲了數(shù)值5,則: LDAC (R) 或 LDAC R ;相當于 LDAC 5,從寄存器R中獲取地址 寄存器寄存器間接尋址間接尋址3.2.3.4 3.2.3.4 立即值尋址立即值尋址指定的操作數(shù)不是一個地址,而是確實要用到的數(shù)據(jù)。指定的操作數(shù)不是一個地址,而是確實要用到的數(shù)據(jù)。例如:例如: Intel 8086Intel 8086指令指令 MOV AXMOV AX,2000H2000H ;將數(shù)據(jù);將數(shù)據(jù)2000H2000H存入累加器存入累加器AXAX中中例如:例如:LDAC #5LDAC #5 ;把數(shù)據(jù)值;把數(shù)據(jù)值5 5移到累加器中移到累加器中O

15、P立即尋址D 這種尋址方式在取指令的同時操作數(shù)即被取出,這種尋址方式在取指令的同時操作數(shù)即被取出,不必再次訪問存儲器,提高了指令執(zhí)行速度。但由不必再次訪問存儲器,提高了指令執(zhí)行速度。但由于指令字有限,使得數(shù)據(jù)范圍受限。于指令字有限,使得數(shù)據(jù)范圍受限。3.2.3.5 3.2.3.5 隱含尋址隱含尋址 并不明確地指出操作數(shù),因為總是用到特定的寄存器。并不明確地指出操作數(shù),因為總是用到特定的寄存器。例如:例如: CLACCLAC ;清空;清空CPUCPU中的累加器,即將其值置為中的累加器,即將其值置為0 0 常用于用堆棧存儲數(shù)據(jù)的常用于用堆棧存儲數(shù)據(jù)的CPUCPU中。指令中不需要指定中。指令中不需要

16、指定操作數(shù),因為它暗示操作數(shù)一定來自堆棧。操作數(shù),因為它暗示操作數(shù)一定來自堆棧。 堆棧及堆棧操作 一種按一種按“后進先出后進先出”存取順序進行存取的存儲結(jié)構(gòu)存取順序進行存取的存儲結(jié)構(gòu) 堆棧操作指令是一種特殊的數(shù)據(jù)傳送指令堆棧操作指令是一種特殊的數(shù)據(jù)傳送指令 堆棧有兩種生成方式堆棧有兩種生成方式 自底向上生成方式自底向上生成方式:棧底占最高地址,棧頂為較低地:棧底占最高地址,棧頂為較低地 址,壓入數(shù)據(jù)時,按由高地址向低地址順序進行,彈出址,壓入數(shù)據(jù)時,按由高地址向低地址順序進行,彈出 數(shù)據(jù)數(shù)據(jù)(即取出數(shù)據(jù)即取出數(shù)據(jù))時,由低地址向高地址順序進行。時,由低地址向高地址順序進行。 自頂向下生成方式自

17、頂向下生成方式:與自底向上生成方式順序相反。:與自底向上生成方式順序相反。自底向上生成堆棧的工作過程自底向上生成堆棧的工作過程 堆棧操作有兩種堆棧操作有兩種 壓入(進棧)指令:把指定的操作數(shù)送入棧頂。壓入(進棧)指令:把指定的操作數(shù)送入棧頂。 SPSP減量,減量,(SP)數(shù)據(jù)數(shù)據(jù) 彈出(退棧、出棧)指令:從棧頂彈出數(shù)據(jù),送到彈出(退棧、出棧)指令:從棧頂彈出數(shù)據(jù),送到 指令指定的目的地址中。指令指定的目的地址中。 目的目的(SP),SPSP增量增量例:例:80868086的指令系統(tǒng)中的指令系統(tǒng)中 進棧指令:進棧指令:PUSH AXPUSH AX SPSP SPSP1 1,(SP)AH(SP)A

18、H,SPSPSPSP1 1,(SP)AL(SP)AL 出棧指令:出棧指令:POP AXPOP AX AL(SP) AL(SP),SPSPSPSP1 1,AH(SP)AH(SP),SPSPSPSP1 1低地址ALAH高地址SPSPSP-1SP-1SP-1SP-1低地址ALAH高地址SP+1SP+1SP+1SP+1SPSPALALAHAH3.2.3.6 3.2.3.6 相對尋址相對尋址 將程序計數(shù)器將程序計數(shù)器 PC PC 的當前內(nèi)容與指令中給出的形式地址的當前內(nèi)容與指令中給出的形式地址相加形成操作數(shù)的有效地址。相加形成操作數(shù)的有效地址。 有效地址有效地址E E(PC)(PC)DispDisp 程

19、序計數(shù)器程序計數(shù)器 PCPC的內(nèi)容的內(nèi)容一般為現(xiàn)行指令的下一條指令的一般為現(xiàn)行指令的下一條指令的 地址。地址。 形式地址形式地址是操作數(shù)地址相對于是操作數(shù)地址相對于PCPC當前內(nèi)容的一個相對當前內(nèi)容的一個相對 位移量(位移量(DispDisp),位移量可正可負,一般用補碼表示。),位移量可正可負,一般用補碼表示。 在相對尋址中,只要保持位移量不變,就可實現(xiàn)指令在相對尋址中,只要保持位移量不變,就可實現(xiàn)指令 帶著數(shù)據(jù)在存儲器中浮動,有利于實現(xiàn)程序再定位。帶著數(shù)據(jù)在存儲器中浮動,有利于實現(xiàn)程序再定位。KOP 相對尋址 5K+1K+2K+6操作數(shù)MOP 相對尋址 5M+1M+2M+6操作數(shù) 例:例:

20、80868086指令指令 JNC 03HJNC 03H 的功能為,如果進位為的功能為,如果進位為0 0,則,則轉(zhuǎn)移到目標地址為轉(zhuǎn)移到目標地址為 (PC)(PC)03H03H處進行執(zhí)行。處進行執(zhí)行。設(shè)指令為雙字節(jié)指令,本條指令地址為設(shè)指令為雙字節(jié)指令,本條指令地址為1000H1000H。本條指令取指后,本條指令取指后,PCPC1002H1002H轉(zhuǎn)移目標地址為轉(zhuǎn)移目標地址為 1002H1002H0003H0003H1005H1005H若指令為若指令為JNC 0FDHJNC 0FDH 則轉(zhuǎn)移目標地址為則轉(zhuǎn)移目標地址為1002H1002HFFFDHFFFDH0FFFH0FFFH0FFDH0FFEH0

21、FFFH1000HJNC1001H03H1002H1003H1004H1005HDFDHD03H3.2.3.7 3.2.3.7 變址尋址方式和基址尋址變址尋址方式和基址尋址1.1.變址尋址方式變址尋址方式 變址尋址方式變址尋址方式與相對尋址方式類似,但它是將與相對尋址方式類似,但它是將指令提供的地址與指令提供的地址與變址寄存器變址寄存器中而不是程序計數(shù)器中中而不是程序計數(shù)器中的內(nèi)容相加。的內(nèi)容相加。 例如:例如: Intel 8086Intel 8086指令指令 MOV ALMOV AL,BX+4BX+4 設(shè)設(shè) BXBX2000H2000H,BX+4BX+42004H2004H (2004H)

22、 (2004H)82H82H,則,則 AL82HAL82H例如:例如: LDAC 5(X)LDAC 5(X) ;變址寄存器;變址寄存器X X:數(shù)值數(shù)值1010,則,則 5 510101515 ;讀??;讀取1515號號單元中的數(shù)據(jù)并且把它存儲在累加器中。單元中的數(shù)據(jù)并且把它存儲在累加器中。 變址尋址可用于數(shù)組、向量、字符串等數(shù)據(jù)的處理變址尋址可用于數(shù)組、向量、字符串等數(shù)據(jù)的處理 例:例: Intel 8086Intel 8086指令指令 LODS LODS ;AL(SI)AL(SI),SISISISI1 1SIAAa0A1a1A2a2+1+12 2基址尋址基址尋址 操作數(shù)的有效地址等于指令中的形

23、式地址與基址操作數(shù)的有效地址等于指令中的形式地址與基址 寄存器中的內(nèi)容之和。寄存器中的內(nèi)容之和。 基址寄存器可以是一個專用的寄存器,也可以是基址寄存器可以是一個專用的寄存器,也可以是 由指令指定的一個通用寄存器。由指令指定的一個通用寄存器。 基址尋址主要用于將用戶程序的基址尋址主要用于將用戶程序的邏輯地址邏輯地址(用戶編寫(用戶編寫 程序時所使用的地址)轉(zhuǎn)換成主存的程序時所使用的地址)轉(zhuǎn)換成主存的物理地址物理地址(程序(程序 在主存中的實際地址)。在主存中的實際地址)。 基址尋址與變址尋址在形式上以及有效地址的計算基址尋址與變址尋址在形式上以及有效地址的計算 方法上都是相似的,但它們的應(yīng)用場合

24、是不同的。方法上都是相似的,但它們的應(yīng)用場合是不同的。 基址尋址是面向系統(tǒng)的基址尋址是面向系統(tǒng)的,主要用于邏輯地址到,主要用于邏輯地址到 物理地址的變換,用以解決程序定位問題?;芳奈锢淼刂返淖儞Q,用以解決程序定位問題。基址寄 存器由系統(tǒng)程序使用,對用戶是透明的。存器由系統(tǒng)程序使用,對用戶是透明的。 變址尋址是面向用戶的變址尋址是面向用戶的,主要用于訪問數(shù)組、,主要用于訪問數(shù)組、 向量、字符串等成批數(shù)據(jù),用以解決程序的循環(huán)控向量、字符串等成批數(shù)據(jù),用以解決程序的循環(huán)控 制問題。制問題。3.2.4 指令格式操作碼地址碼指令的基本格式:指令的基本格式:指令格式的設(shè)計包含兩個方面:指令格式的設(shè)計包含

25、兩個方面: 1. 確定指令的長度;確定指令的長度; 2. 劃分指令的字段,定義各字段的位數(shù)、含義劃分指令的字段,定義各字段的位數(shù)、含義 。一、指令長度 指令字長度指令字長度:一個指令字所包含的二進制信息的位數(shù)。:一個指令字所包含的二進制信息的位數(shù)。 定長指令定長指令:指令系統(tǒng)中所有指令的長度都是一樣的。:指令系統(tǒng)中所有指令的長度都是一樣的。 可變長指令可變長指令:各指令的長度可以不同。:各指令的長度可以不同。 指令長度與機器字長指令長度與機器字長二.指令的地址碼 考慮的問題:需要多少地址信息及如何給出地址。考慮的問題:需要多少地址信息及如何給出地址。1. 1. 零地址指令零地址指令 格式:格式

26、: (1) (1) 無需任何操作數(shù)無需任何操作數(shù), , 如空操作,停機等指令。如空操作,停機等指令。 (2) (2) 所需操作數(shù)是隱含指定的,如堆棧運算指令。所需操作數(shù)是隱含指定的,如堆棧運算指令。2. 2. 一地址指令一地址指令 格式:格式: 意義:意義: (1) A OP (A) (2) AC (AC) OP (A)OPOPA指令短,節(jié)省空間,執(zhí)行快,常用于微、小型機中。指令短,節(jié)省空間,執(zhí)行快,常用于微、小型機中。3. 3. 二地址指令二地址指令 格式:格式: 意義:意義: A1 (A1) OP (A2) 最常用的指令格式,適用于中、小、微型機。最常用的指令格式,適用于中、小、微型機。O

27、PA1A2 二地址指令的幾種形式二地址指令的幾種形式 存儲器存儲器存儲器型(存儲器型(SSSS型)指令型)指令 寄存器寄存器寄存器型(寄存器型(RRRR型)指令型)指令 寄存器寄存器存儲器型(存儲器型(RSRS型)指令型)指令OPR1R2OPRnA4. 三地址指令三地址指令 格式:格式: 意義:意義: A3 (A1) OP (A2) 常用于大、中型機中。常用于大、中型機中。OPA1A2A35. 5. 多地址指令多地址指令 考慮一個簡單的例子:ABC 一個操作: 加法 三個操作數(shù): 兩個源操作數(shù) B、C 一個目的操作數(shù) A 假定微處理器可以執(zhí)行16種不同的操作。 需要4位來代表其中的操作(因為2

28、416) (假設(shè)位模式1010 加法) 假定僅有4種可能的操作數(shù)A,B,C和D。 用兩位來表示每一種操作數(shù): 00A ,01B ,10C ,11D圖圖3.4 3.4 采用采用(a)(a)三操作數(shù),三操作數(shù),(b)(b)二操作數(shù),二操作數(shù),(c)(c)單操作數(shù),單操作數(shù),(d)0(d)0操作數(shù)的指操作數(shù)的指令格式和計算令格式和計算A AB BC C的匯編語言程序以及機器代碼。的匯編語言程序以及機器代碼。 微處理器可以設(shè)計成能運行具有3、2、1或0個操作數(shù)的指令。 二、指令的操作碼 指令系統(tǒng)中的每一條指令都有唯一確定的操作碼。指令系統(tǒng)中的每一條指令都有唯一確定的操作碼。 操作碼位數(shù)取決于機器指令系

29、統(tǒng)的規(guī)模。操作碼位數(shù)取決于機器指令系統(tǒng)的規(guī)模。 1.1.固定長度操作碼固定長度操作碼 操作碼的長度固定,且集中放在指令字的一操作碼的長度固定,且集中放在指令字的一 個字段中,其余部分全部用于地址碼。個字段中,其余部分全部用于地址碼。 此方式有利于簡化硬件設(shè)計和減少指令譯碼此方式有利于簡化硬件設(shè)計和減少指令譯碼 時間,用于字長較長的大、中型及超級小型機中。時間,用于字長較長的大、中型及超級小型機中。 2.2.可變長度操作碼可變長度操作碼 操作碼的長度允許有幾種不同的選擇,對地址操作碼的長度允許有幾種不同的選擇,對地址 數(shù)少的指令允許操作碼長些,對地址數(shù)多的指令,數(shù)少的指令允許操作碼長些,對地址數(shù)

30、多的指令, 則操作碼就短些。則操作碼就短些。 若指令長度一定,則若指令長度一定,則操作碼操作碼字段與地址碼字字段與地址碼字 段之間存在平衡問題一般均采用段之間存在平衡問題一般均采用 “擴展操作碼擴展操作碼” 的的 方法。方法。 擴展操作碼擴展操作碼 目的:目的:在滿足需要的前提下,有效地縮短指令字長。在滿足需要的前提下,有效地縮短指令字長。 例例設(shè)某機指令字長為設(shè)某機指令字長為1616位,若固定位,若固定OPOP為為4 4位,三個地址位,三個地址 碼,每個碼,每個4 4位,其格式為:位,其格式為:OPA1A2A3若采用固定長度操作碼,則最多只允許有若采用固定長度操作碼,則最多只允許有1616種

31、三地址指令。種三地址指令。0 0 0 01 1 1 1條條零零地地址址指指令令條條單單地地址址指指令令條條二二地地址址指指令令條條三三地地址址指指令令161515151111 1111 1111 11110000 1111 1111 1111xxxx 1110 1111 1111xxxx 0000 1111 1111xxxx xxxx 1110 1111xxxx xxxx 0000 1111xxxx xxxx xxxx 1110 xxxx xxxx xxxx 000015/15/1515/15/15擴展法擴展法 1515條三地址指令、條三地址指令、1414條二地址指令、條二地址指令、3131條

32、一地址指條一地址指 令、令、1616條條0 0地址指令,共地址指令,共7676條指令,其擴展方法如下:條指令,其擴展方法如下:0 0 0 01 1 1 00 0 0 115條三地址指令1 1 1 11 1 1 11 1 0 114條二地址指令0 0 0 01 1 1 11 1 1 11 1 1 031條一地址指令1 1 1 00 0 0 01 1 1 11 1 1 11 1 1 116條0地址指令1 1 1 11 1 1 10 0 0 01 1 1 11 1 1 11 1 1 1Pentium 的指令格式:的指令格式: 指令長度是可變的,從指令長度是可變的,從1個字節(jié)到個字節(jié)到12個字節(jié)個字節(jié)

33、 。前綴 操作碼 MOD Reg/OP R/M 比例 S 變址 I 基址 B 位移量 立即數(shù) 模式 額外模式字節(jié)SIB 字節(jié)數(shù) 04 12 01 01 04 04 2 位 3位3 3 位 2 位 3 位1 3位 MODMOD字段與字段與R/MR/M字段:字段:5 5位位,表示,表示8 8個個寄存器和寄存器和2424種種尋址方法尋址方法 rt 操作碼 rs 6 5 5 6 rt 5 rd 26 funct (b) R 類指令 操作碼 6 與 PC 相加的偏移量 (a) I 類指令 (c) J 類指令 rs 立即數(shù)(immediate) 操作碼 6 5 5 16 0 5 6 10 11 15 16

34、 31 0 5 6 10 11 15 16 31 31 20 21 0 5 6 shamt 25 26 5 3.3 指令集結(jié)構(gòu)設(shè)計 一、指令系統(tǒng)的基本要求1. 1. 完備性完備性 任何運算都可以用指令編程實現(xiàn)。即要求指令系任何運算都可以用指令編程實現(xiàn)。即要求指令系 統(tǒng)的指令豐富、功能齊全、使用方便,應(yīng)具有所有基統(tǒng)的指令豐富、功能齊全、使用方便,應(yīng)具有所有基 本指令。本指令。2. 2. 有效性有效性 用指令系統(tǒng)中的指令編寫的程序能高效率運行,占用指令系統(tǒng)中的指令編寫的程序能高效率運行,占 用空間小、執(zhí)行速度快。用空間小、執(zhí)行速度快。3. 3. 規(guī)整性規(guī)整性 指令系統(tǒng)具有對稱性、勻齊性,指令與數(shù)據(jù)

35、格式指令系統(tǒng)具有對稱性、勻齊性,指令與數(shù)據(jù)格式的一致性。的一致性。 對稱性:對稱性:所有寄存器和存儲單元均同等對待,所有所有寄存器和存儲單元均同等對待,所有 指令可以使用所有尋址方式,減少特殊操指令可以使用所有尋址方式,減少特殊操 作和例外情況。作和例外情況。 勻齊性:勻齊性:一種操作可支持各種數(shù)據(jù)類型。一種操作可支持各種數(shù)據(jù)類型。 指令與數(shù)據(jù)格式的一致性:指令與數(shù)據(jù)格式的一致性:指令長度與指令長度與數(shù)據(jù)長度有數(shù)據(jù)長度有 一定的關(guān)系,以便于存取和處理。一定的關(guān)系,以便于存取和處理。4. 4. 兼容性兼容性 二、指令系統(tǒng)的兩種設(shè)計風格 1. 1. 復雜指令系統(tǒng)計算機復雜指令系統(tǒng)計算機 CISCC

36、ISC 靠增強指令的功能,增加指令系統(tǒng)的復雜程靠增強指令的功能,增加指令系統(tǒng)的復雜程 度來提高計算機系統(tǒng)的性能。度來提高計算機系統(tǒng)的性能。 特點:特點: (1) (1) 指令系統(tǒng)復雜龐大,指令數(shù)目一般多達指令系統(tǒng)復雜龐大,指令數(shù)目一般多達 200200300300條。條。 (2) (2) 指令格式多,指令字長不固定,使用多種不指令格式多,指令字長不固定,使用多種不 同的尋址方式。同的尋址方式。 (3) (3) 可訪存指令不受限制。可訪存指令不受限制。 (4) (4) 各種指令的執(zhí)行時間和使用頻率相差很大。各種指令的執(zhí)行時間和使用頻率相差很大。 (5) (5) 大多數(shù)采用微程序控制器。大多數(shù)采用

37、微程序控制器。2. 2. 精簡指令系統(tǒng)計算機精簡指令系統(tǒng)計算機RISCRISC 靠精簡指令系統(tǒng),簡化指令功能及優(yōu)化的編譯程序靠精簡指令系統(tǒng),簡化指令功能及優(yōu)化的編譯程序 來提高計算機系統(tǒng)的性能。來提高計算機系統(tǒng)的性能。 特點:特點: (1) (1) 選取使用頻率高的簡單指令以及很有用但又不復雜選取使用頻率高的簡單指令以及很有用但又不復雜 的指令組成指令系統(tǒng)。的指令組成指令系統(tǒng)。 (2) (2) 指令數(shù)少,指令長度一致,指令格式少,尋址方式指令數(shù)少,指令長度一致,指令格式少,尋址方式 少,指令總數(shù)大都不超過少,指令總數(shù)大都不超過100100條。條。 (3) (3) 以寄存器以寄存器 寄存器方式工

38、作,只有取數(shù)寄存器方式工作,只有取數(shù)/ /存數(shù)存數(shù) (LOAD/STORE)(LOAD/STORE)指令訪問存儲器,其余指令的操作都指令訪問存儲器,其余指令的操作都 在寄存器之間進行。在寄存器之間進行。 (4) (4) 采用指令流水線調(diào)度,使大部分指令在一個機器周采用指令流水線調(diào)度,使大部分指令在一個機器周 期內(nèi)完成。期內(nèi)完成。(5) (5) 使用較多的通用寄存器以減少訪存。使用較多的通用寄存器以減少訪存。(6) (6) 以組合電路控制為主,不用或少用微程序控制。以組合電路控制為主,不用或少用微程序控制。(7)(7) 采用優(yōu)化編譯技術(shù),力求高效率支持高級語言的采用優(yōu)化編譯技術(shù),力求高效率支持高

39、級語言的 實現(xiàn)。實現(xiàn)。 機器名機器名 指令數(shù)指令數(shù) 機器名機器名 指令數(shù)指令數(shù) RISC 39 ACORN 44 MIPS 31 INMOS 111 IBM 801 120 IBMRT 118 MIRIS 64 HPPA 140 PYRAMID 128 CLIPPER 101 RIDGE 128 SPARC 89 3.4 相對簡單的指令集結(jié)構(gòu)存儲器模型:該微處理器可以訪問64K(216)字節(jié) 的存儲器(每字節(jié)8位)或者64K8的 存儲器。從外部設(shè)備輸入數(shù)據(jù)和輸出數(shù) 據(jù)到外部設(shè)備,都可以被看作是訪問內(nèi) 存。三個寄存器:累加器(AC)、寄存器R、1位零標志Z。16條指令,每一條都是8位指令碼,見表

40、3.1。 InstructionInstruction InstructionInstruction CodeCode OperationOperation NOP 0000 0000 No operation LDAC 0000 0001 ACM STAC 0000 0010 MAC MVAC 0000 0011 RAC MOVR 0000 0100 ACR JUMP 0000 0101 GOTO JMPZ 0000 0110 IF(Z1)THEN GOTO JPNZ 0000 0111 IF(Z0)THEN GOTO ADD 0000 1000 ACACR,If(ACR0)Then Z1

41、Else Z0 SUB 0000 1001 ACACR,If(ACR0)Then Z1 Else Z0 INAC 0000 1010 ACAC1,If(AC10)Then Z1 Else Z0 CLAC 0000 1011 AC0,Z1 AND 0000 1101 ACACR,If(ACR0)Then Z1 Else Z0 OR 0000 1101 ACACR,If(ACR0)Then Z1 Else Z0 XOR 0000 1110 ACACR,If(ACR0)Then Z1 Else Z0 NOT 0000 1111 ACAC,If(AC0)Then Z1 Else Z0 表表3.1 3.

42、1 相對簡單相對簡單CPUCPU的指令集的指令集 LDAC、STAC、JUMP、JMPZ和JPNZ指令都需要16位的存儲地址。這些指令在存儲器中每個都需要3字節(jié)。第一個字節(jié)包含指令的操作碼,另外兩字節(jié)對應(yīng)地址。 3 3字節(jié)格式字節(jié)格式 1 1字節(jié)格式字節(jié)格式 相對簡單CPU的指令格式:例如:25:JUMP 1234H該指令以如下形式存儲在存儲器中: 25:0000 0101(JUMP) 26:0011 0100(34H) 27:0001 0010(12H)注意:第二字節(jié)低8位,第三字節(jié)高8位指令集結(jié)構(gòu)的用法舉例: 用相對簡單CPU編程計算12n 。 則其高級語言的代碼片斷如下: 可以把數(shù)值n存

43、儲在標明為n的存儲單元中,結(jié)果存在標明為total的內(nèi)存單元處,內(nèi)存單元i用于存儲求和的次數(shù)。確定運算步驟如下: total 0; FOR i1 TO n DO totaltotali; 1 1:total0,i0 2 2:ii1 3 3:totaltotali 4 4:IF in THEN GOTO 2實現(xiàn)這一算法的相對簡單CPU的代碼如下: CLAC STAC total STAC i Loop: LDAC i INAC STAC i MVAC LDAC total ADD STAC total MVAC LDAC n SUB JPNZ Looptotal0,i0ii1totaltotal

44、iIF in THEN GOTO Loop指令指令 1st Loop1st Loop 2nd Loop2nd Loop 3rd Loop3rd Loop 4th Loop4th Loop 5th Loop5th Loop CLAC AC0 STAC total total0 STAC i i0 LDAC i AC0 AC1 AC2 AC3 AC4 INAC AC1 AC2 AC3 AC4 AC5 STAC i i1 i2 i3 i4 i5 MVAC R1 R2 R3 R4 R5 LDAC total AC0 AC1 AC3 AC6 AC10 ADD AC1 AC3 AC6 AC10 AC15

45、STAC total total1 total3 total6 total10 total15 LDAC n AC5 AC5 AC5 AC5 AC5 SUB AC4, Z0 AC3, Z0 AC2, Z0 AC1, Z0 AC0, Z0 JPNZ Loop JUMP JUMP JUMP JUMP NO JUMP 下表顯示了當n5時代碼的運行過程:表表3.2 3.2 循環(huán)求和程序的執(zhí)行步驟循環(huán)求和程序的執(zhí)行步驟 怎樣看待這個指令集結(jié)構(gòu)? 它滿足了以教學為目的的設(shè)計目標。當我們在第6和7章中設(shè)計這種CPU時我們就會看到,其復雜度足以闡明很多CPU的設(shè)計原則,卻又沒有掉進自身復雜度的陷阱中。 對于簡

46、單的應(yīng)用程序來說,指令集完整。如果一個應(yīng)用程序需要使用浮點型數(shù)據(jù),它就不是十分完整。對于通用計算機(例如個人計算機),該指令集顯然是不夠的。 該指令集是相當正交的。只是多了OR指令,但有時CPU的指令集不是完全正交更好一些。 寄存器組是它最大的弱點。寄存器的缺乏導致執(zhí)行任務(wù)較慢,并且降低了性能。 3.5 實例:8085微處理器指令集結(jié)構(gòu)3.5.1 8085微處理器的寄存器組 通用數(shù)據(jù)寄存器: 累加寄存器A - 總是接收一個8位的算術(shù)或邏輯指令的結(jié)果;也為所有采用二操作數(shù)的指令提供一個操作數(shù)。 六個通用寄存器 - 命名為B,C,D,E,H和L ,可成對訪問:B和C,D和E,H和L 。寄存器對HL

47、常用來指向內(nèi)存單元。 16位的堆棧指針寄存器SP:包含堆棧頂部的地址。 5個標志,共同稱為標志寄存器: 符號標志符號標志S S:表明算術(shù)或邏輯指令計算出的結(jié)果的符號。其中,值1表示負數(shù);值0表示正數(shù)(或零)。 零標志零標志Z Z:如果算術(shù)或邏輯運算指令產(chǎn)生的結(jié)果為0,則將Z置為1;否則Z為0。 奇偶標志奇偶標志P P:如果算術(shù)或邏輯運算結(jié)果中有偶數(shù)個1,則將P置為1;否則P為0。 進位標志進位標志CYCY:當算術(shù)運算產(chǎn)生進位時才去設(shè)置它。 輔助進位標志輔助進位標志ACAC:與進位標志類似。它不指明進位值,但指出從結(jié)果的低四位向高四位傳遞了進位。 例如,加法0000 11110000 10000

48、001 0111中斷標志寄存器IM:用于允許和禁止中斷而且檢查待處理的中斷。程序員可以讀取并且設(shè)置該寄存器中的值來處理中斷。 例如,加法1111 00001000 00001 0111 0000,對兩個8位值相加但產(chǎn)生了9位結(jié)果。最左邊的1被存儲在CY中;如果加法不產(chǎn)生進位1,則CY中會存儲0。 3.5.2 8085微處理器指令集 8085指令集總共包含了74條指令。 可分為三個部分:數(shù)據(jù)傳送指令、數(shù)據(jù)運算指令和程序控制指令。 采用如下記號描述: r r,r1r1,r2r2:表示任何一個8位寄存器A,B,C,D,E,H,或者L。 M M:表示內(nèi)存單元。MHL表明該內(nèi)存單元的地址存在寄存器對HL

49、中。 rprp:表示寄存器對BC,DE,HL,或者堆棧指針SP。 :一個16位地址或者數(shù)據(jù)。 n n:是一個存儲在內(nèi)存中且緊跟操作碼后的8位地址或者數(shù)據(jù)值。 condcond:條件指令的一個條件。值為:NZ、Z、P、N、PO、PE、NC、C。除了POP PSW指令外,其它指令都不會修改標志的值。 (PSWPSW:處理器狀態(tài)字(保存累加器和標志器中的內(nèi)容:處理器狀態(tài)字(保存累加器和標志器中的內(nèi)容 ) 指令 操作操作 NOP No operation MOV r1,r2 r1r2 MOV r,M rMHL MOV M,r MHLr MVI r,n rn MVI M,n MHLn LXI rp, r

50、p LDA AM STA MA LHLD HLM,M1 SHDL M,M1HL 指令指令 操作操作 LDAX rp AMrp(rpBC,DE) STAX rp MrpA(rpBC,DE) XCHC DEHL PUSH rp Stackrp(rpSP) PUSH PSW StackA,flag register POP rp RpStack(rpSP) POP PSW A,flag registerStack XTHL HLStack SPHL SPHL IN n Ainput port n OUT n output port nA 表表3.3 80853.3 8085微處理器的數(shù)據(jù)傳送指令微處

51、理器的數(shù)據(jù)傳送指令 (立即尋址)(立即尋址)(直接尋址直接尋址) 指令的通用格式。一些指令有指定寄存器的字段,而另一些指令這些部分卻是固定的。 圖圖3.6 3.6 80858085的的指令格指令格式式一字節(jié)一字節(jié)二字節(jié)二字節(jié) 指令指令 操作操作 標志標志位位 ADD r AAr ALL ADD M AAMHL ALL ADI n AAn ALL ADC r AArCY ALL ADC M AAMHLCY ALL ACI n AAnCY ALL SUB r AAr ALL SUB M AAMHL ALL SUI n AAn ALL SBB r AArCY ALL SBB M AAMHLCY AL

52、L SBI n AAnCY ALL INR r rr1 Not CY INR M MHLMHL1 Not CY DCR n rr1 Not CY DCR M MHLMHL1 Not CY INX rp rprp1 None DCX rp rprp1 None DAD rp HLHLrp CY DAA Decimal adjust ALL 指令指令 操作操作 標志標志位位 ANA r AAr ALL ANA M AAMHL ALL ANI n AAn ALL ORA r AAr ALL ORA M AAMHL ALL ORI n AAn ALL XRA r AAr ALL XRA M AAMHL ALL XRI n AAn ALL CMP r Compare A and r ALL CMP M Compare A and MHL ALL CPI n Compare A and n ALL RLC CYA7,AA60,A7 ALL RRC CYA0,AA0,A71 ALL RAL CY,AA,CY CY RAR A,CYCY,A CY CMA AA NONE CMC CYCY CY STC CY1 CY 數(shù)據(jù)運算指令大多數(shù)會影響表中的標志。 表表3.4 80853.4 8085微處理器的微處理器的數(shù)據(jù)運算指數(shù)據(jù)運算指令令 13條程序控制指令。DI,

溫馨提示

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

評論

0/150

提交評論