計(jì)算機(jī)組成原理:第5章 指令系統(tǒng)_第1頁(yè)
計(jì)算機(jī)組成原理:第5章 指令系統(tǒng)_第2頁(yè)
計(jì)算機(jī)組成原理:第5章 指令系統(tǒng)_第3頁(yè)
計(jì)算機(jī)組成原理:第5章 指令系統(tǒng)_第4頁(yè)
計(jì)算機(jī)組成原理:第5章 指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩83頁(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)介

1、第 5 章 指令系統(tǒng)7/31/20221本章學(xué)習(xí)內(nèi)容指令系統(tǒng)的設(shè)計(jì)方法指令格式尋址方式CISC和RISC的概念7/31/20222基本概念指令:控制計(jì)算機(jī)執(zhí)行某種操作的命令。機(jī)器語(yǔ)言:計(jì)算機(jī)硬件實(shí)體直接表示控制信息的語(yǔ)言。機(jī)器語(yǔ)言程序:用機(jī)器語(yǔ)言編制的程序。機(jī)器語(yǔ)言是計(jì)算機(jī)硬件能直接理解并執(zhí)行的語(yǔ)言,任何用其它語(yǔ)言編制的程序,都必須經(jīng)過(guò) “翻譯”,翻譯為機(jī)器語(yǔ)言程序,才能在機(jī)器中正確的運(yùn)行。一條指令就是機(jī)器語(yǔ)言的一個(gè)語(yǔ)句,用來(lái)說(shuō)明機(jī)器硬件應(yīng)完成的操作。指令系統(tǒng)(指令集):一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合。7/31/20223機(jī)器語(yǔ)言是面向機(jī)器的:不同的計(jì)算機(jī)系統(tǒng),具有不同的指令,每一計(jì)算機(jī)系

2、統(tǒng)都具有自己的指令系統(tǒng)。指令系統(tǒng)必須是完備的:即任何運(yùn)算都可以用指令系統(tǒng)中的指令編程實(shí)現(xiàn)。指令系統(tǒng)是計(jì)算機(jī)體系結(jié)構(gòu)的核心;是計(jì)算機(jī)系統(tǒng)硬件、軟件的主要界面。它既是計(jì)算機(jī)硬件設(shè)計(jì)的主要依據(jù),又是計(jì)算機(jī)軟件設(shè)計(jì)的基石。所以一臺(tái)計(jì)算機(jī)指令系統(tǒng)的優(yōu)劣,直接影響著計(jì)算機(jī)系統(tǒng)的性能。7/31/202245.1 指令格式指令字(指令代碼):表示一條指令的一串二進(jìn)制代碼。指令格式的設(shè)計(jì)內(nèi)容:確定的指令字長(zhǎng)度劃分指令字字段并加以定義7/31/202255.1.1 指令的組成與指令長(zhǎng)度一條指令中應(yīng)包含的信息: 操作碼:表示指令的操作特性和功能。 操作數(shù)的地址:指示操作數(shù)或操作數(shù)所在的地址。 存放操作結(jié)果的地址。

3、下一條指令的地址。指令的基本格式:操作碼(OP)地址碼(A)7/31/20226各字段的指定方法:顯式指定:在指令字中明顯地指定。隱含指定:由設(shè)計(jì)者用約定的方法指定。指令操作碼均采用顯式指定。下一條指令的地址多采用隱含指定。信息的存儲(chǔ)結(jié)構(gòu)不同,指定的地址也不一樣,地址的結(jié)構(gòu)也不同。7/31/20227指令長(zhǎng)度指令字長(zhǎng)度:一個(gè)指令字所包含的二進(jìn)制信息的位數(shù)。定長(zhǎng)指令:機(jī)器的指令系統(tǒng)中所有指令的長(zhǎng)度都是一樣的。可變長(zhǎng)指令:各指令的長(zhǎng)度可以不同。字長(zhǎng)與指令長(zhǎng)通常等于字符長(zhǎng)度的整倍數(shù)。為了合理地安排存儲(chǔ)空間,并使指令能表達(dá)較豐富的內(nèi)容,采用可變長(zhǎng)指令將更加靈活有效。單字長(zhǎng)指令:指令長(zhǎng)度等于機(jī)器字長(zhǎng)。雙

4、字長(zhǎng)指令:指令長(zhǎng)度等于兩個(gè)機(jī)器字長(zhǎng)。另外還有更多倍字長(zhǎng)的指令、半字長(zhǎng)指令等。短指令占存儲(chǔ)空間少,有利于提高指令執(zhí)行速度,因此通常把最常用指令(如算術(shù)邏輯運(yùn)算指令、數(shù)據(jù)傳送指令等)設(shè)計(jì)成短指令格式。7/31/202285.1.2 指令的地址結(jié)構(gòu)CPU可直接訪問(wèn)的存儲(chǔ)結(jié)構(gòu) 主存儲(chǔ)器:訪存時(shí)要給出存儲(chǔ)器單元地址 CPU寄存器:包括通用寄存器和專用寄存器。 I/O接口寄存器:包括數(shù)據(jù)寄存器和狀態(tài)寄存器。 堆棧7/31/20229堆棧:一種按后進(jìn)先出(LIFO)或先進(jìn)后出(FILO)原則進(jìn)行存取信息的一組存儲(chǔ)器單元的有序集合。堆棧通常是主存的一個(gè)特定區(qū)域,它可以是固定的區(qū)域,也可以是浮動(dòng)的區(qū)域,由軟件定

5、義。堆棧區(qū)域中數(shù)據(jù)的個(gè)數(shù)和內(nèi)容是動(dòng)態(tài)變化的。堆棧結(jié)構(gòu)通常是一端固定,一端浮動(dòng)的。棧底:第一個(gè)存入(稱為壓入)數(shù)據(jù)的堆棧單元。棧底單元是固定的。棧頂:最后壓入數(shù)據(jù)的堆棧單元,棧頂單元是浮動(dòng)的。堆棧7/31/202210堆棧操作總是按地址自動(dòng)增量和自動(dòng)減量方式在棧頂進(jìn)行。堆棧指示器或堆棧指針SP:用于記錄并跟蹤棧頂單元的地址的寄存器。即SP總是指向棧頂單元。堆棧有兩種生成方式:自底向上生成方式:棧底占最高地址,棧頂為較低地址,壓入數(shù)據(jù)時(shí),按由高地址向低地址順序進(jìn)行,彈出數(shù)據(jù)(即取出數(shù)據(jù))時(shí),由低地址向高地址順序進(jìn)行。自頂向下生成方式:與自底向上生成方式順序相反。7/31/202211堆棧的生成方式

6、7/31/202212自底向上生成堆棧的工作過(guò)程7/31/202213指令的地址結(jié)構(gòu)指令的地址結(jié)構(gòu)需考慮的問(wèn)題:需要多少地址信息及如何給出地址。1四地址指令四地址指令格式:A1:第一源操作數(shù)的存儲(chǔ)器地址或寄存器地址;A2:第二源操作數(shù)的存儲(chǔ)器地址或寄存器地址;A3:存放操作結(jié)果的存儲(chǔ)器地址或寄存器地址;A4:指示下一條要執(zhí)行指令的地址。四地址指令的功能:(A1)OP(A2)A3;A4指示下條指令地址四地址指令直觀明了,程序的執(zhí)行流向明確,不存在轉(zhuǎn)移指令。但指令長(zhǎng)度太長(zhǎng),因此在實(shí)際機(jī)器中基本不用。OPA1A2A3A47/31/2022142三地址指令程序在執(zhí)行過(guò)程中大多數(shù)情況是按指令序列依次執(zhí)行

7、的,只有在執(zhí)行轉(zhuǎn)移指令時(shí),程序的執(zhí)行順序才被改變。為了壓縮指令長(zhǎng)度,下一條指令地址采用隱含的方法給出。通常用一個(gè)程序計(jì)數(shù)器 PC 來(lái)跟蹤程序的執(zhí)行并指示將要執(zhí)行的指令地址。每執(zhí)行一條指令,PC自動(dòng)增量,增量值取決于執(zhí)行指令的長(zhǎng)度。當(dāng)程序出現(xiàn)轉(zhuǎn)移時(shí),用專門的轉(zhuǎn)移指令將轉(zhuǎn)移地址直接送入PC。在三地址指令中不明顯地指示下條指令地址。7/31/202215三地址指令格式:A1:第一源操作數(shù)的存儲(chǔ)器地址或寄存器地址;A2:第二源操作數(shù)的存儲(chǔ)器地址或寄存器地址;A3:存放操作結(jié)果的存儲(chǔ)器地址或寄存器地址;三地址指令功能為: (A1)OP(A2)A3; PC指示下條指令地址三地址指令編程方便,結(jié)果不影響運(yùn)算

8、操作數(shù),但指令長(zhǎng)度仍比較長(zhǎng),所以一般在字長(zhǎng)較長(zhǎng)的大、中型機(jī)中使用,而微、小型機(jī)中很少使用三個(gè)地址均為存儲(chǔ)器地址的三地址指令。OPA1A2A37/31/2022163二地址指令二地址指令的格式為: 這里A1、A2是操作數(shù)所在的存儲(chǔ)器地址或寄存器地址。二地址指令功能為:(A1)OP(A2)A1 或 (A1)OP(A2)A2源地址:僅提供操作數(shù)的地址目的地址:既提供一個(gè)操作數(shù),又存放操作結(jié)果的地址。二地址指令的意義是:源地址中的操作數(shù)與目的地址中的操作數(shù)進(jìn)行操作碼所規(guī)定的操作,結(jié)果存入目的地址中。OPA1A27/31/202217 存儲(chǔ)器存儲(chǔ)器型(SS型)指令:A1、A2均為存儲(chǔ)器地址的二地址指令。

9、 寄存器寄存器型(RR型)指令: A1、A2均為寄存器地址的二地址指令。 寄存器存儲(chǔ)器型(RS型)指令: A1、A2中一個(gè)是寄存器地址,另一個(gè)是存儲(chǔ)器地址的二地址指令。也稱一個(gè)半地址指令。OPR1R2二地址指令的幾種形式OPRnA7/31/202218二地址指令的指令長(zhǎng)度短,特別是RR型指令,不需訪問(wèn)存儲(chǔ)器取操作數(shù),指令執(zhí)行速度快,因此是最常用的一種指令格式。尤其在RISC結(jié)構(gòu)機(jī)器中,所有運(yùn)算型指令均為RR型指令。二地址指令執(zhí)行后,參加運(yùn)算的操作數(shù)被破壞,若不希望被破壞,則需提前保護(hù)。7/31/2022194. 一地址指令(單地址指令)一地址指令的格式為:A可以是存儲(chǔ)器地址,也可是寄存器地址。

10、一地址指令有兩種情況 單操作數(shù)指令:如INC、DEC、NEG等,只需一個(gè)操作數(shù),其功能為:OP(A)A。 雙操作數(shù)指令:另一個(gè)操作數(shù)通常采用隱含尋址的方法,將操作數(shù)隱含在約定的累加器AC中,其指令功能為:(AC)OP(A)AC。一地址指令長(zhǎng)度短,指令執(zhí)行速度快(若A為存儲(chǔ)器地址,只需一次訪存取數(shù)),對(duì)于字長(zhǎng)較短的微、小型機(jī),是一種常用的指令格式。OPA7/31/2022205零地址指令零地址指令中只有操作碼而無(wú)地址碼,其指令格式為;零地址指令有兩種情況: 不需操作數(shù)的控制型指令,如HALT、WAIT、NOP等。 運(yùn)算型零地址指令:操作數(shù)隱含在堆棧中。OP7/31/2022215.1.3 指令操

11、作碼指令系統(tǒng)中的每一條指令都有一個(gè)唯一確定的操作碼,用以指示指令的操作功能。不同的指令具有不同的操作碼。為了能表示指令系統(tǒng)中的全部操作,指令字中必須有足夠長(zhǎng)度的操作碼字段。假定指令系統(tǒng)中有m種操作,則操作碼位數(shù)n應(yīng)滿足: nlog2m指令操作碼的編碼有定長(zhǎng)編碼和變長(zhǎng)編碼兩種。7/31/202222定長(zhǎng)編碼的指令操作碼:所有指令碼的長(zhǎng)度一致,位置固定。是一種簡(jiǎn)單規(guī)整的編碼方法。由于定長(zhǎng)編碼的操作碼位數(shù)和位置固定,因而指令譯碼簡(jiǎn)單,有利于簡(jiǎn)化硬件設(shè)計(jì)。在字長(zhǎng)較長(zhǎng)的大、中型機(jī)以及超小型機(jī)中被廣泛采用,例如:在IBM 360/370機(jī)中,所有指令的操作碼均為8位,最多可指定256種操作。定長(zhǎng)編碼的指令

12、操作碼7/31/202223變長(zhǎng)編碼的指令操作碼:不同指令的操作碼長(zhǎng)度不完全相同,操作碼的位數(shù)不固定,分散地放在指令字的不同位置上。采用變長(zhǎng)編碼的方法,可用較短的指令字長(zhǎng)表示更多的操作類型,尋址較大的存儲(chǔ)空間。在早期的微、小型機(jī)中,由于指令字較短,均采用變長(zhǎng)編碼的指令操作碼。如Intel 8086、PDP一11等機(jī)器。變長(zhǎng)編碼的指令操作碼的位數(shù)不固定,且位置分散,因而增加了指令譯碼與分析的難度,使硬件設(shè)計(jì)復(fù)雜化。變長(zhǎng)編碼的指令操作碼7/31/202224擴(kuò)展操作碼法最常用的變長(zhǎng)操作碼的編碼方式是擴(kuò)展操作碼法。擴(kuò)展操作碼法:當(dāng)指令長(zhǎng)度一定時(shí),將操作數(shù)地址多的指令選擇短的操作碼,操作數(shù)地址少的指令

13、選擇較長(zhǎng)操作碼。采用擴(kuò)展操作碼法即能充分地利用指令字的各個(gè)字段,又能在不增加指令長(zhǎng)度的情況下擴(kuò)展操作碼長(zhǎng)度,使它能表示更多的指令。7/31/202225例:設(shè)某機(jī)的指令長(zhǎng)度為16位。操作碼為4位,具有三個(gè)地址字段,每個(gè)地址字段長(zhǎng)為4位。其指令格式為:按照定長(zhǎng)編碼的方法,4位操作碼可表示16條三地址指令。若指令系統(tǒng)中要求有15條三地址指令、15條二地址指令、15條一地址指令和16條零地址指令,共61條指令。則需要采用變長(zhǎng)操作碼方式進(jìn)行編碼。15 1211 87 43 0OPA1A2A37/31/2022267/31/202227例:設(shè)機(jī)器指令字長(zhǎng)為16位,指令中地址字段的長(zhǎng)度為4位,共有11條三

14、地址指令,72條二地址指令,64條零地址指令。問(wèn)最多還能規(guī)定多少條單地址指令? 解:三地址指令的地址字段共需12位,所以可有4位操作碼,可規(guī)定16條三地址指令。現(xiàn)有11條三地址指令,所以還有16115個(gè)編碼用于二地址指令。二地址指令的地址字段共需8位,可有8位操作碼,去掉三地址指令用掉的操作碼,可規(guī)定51680條二地址指令。現(xiàn)有72條二地址指令,所以還有80728個(gè)編碼用于單地址指令。單地址指令的地址字段共需4位,可有12位操作碼,去掉二、三地址指令用掉的操作碼,可規(guī)定816128條單地址指令。由于要求有64條零地址指令,而4位操作碼只能提供16條指令,所以需要由單地址指令提供64/164個(gè)操

15、作碼編碼,因此還能規(guī)定1284124條單地址指令。 7/31/2022287/31/2022295.2 尋址方式尋址方式:形成本條指令的操作數(shù)地址和下一條要執(zhí)行指令的地址的方法。尋址分為指令地址的尋址和操作數(shù)地址的尋址。7/31/2022301. 指令地址的尋址 順序方式:PC增量PC 指令通常順序存放 程序順序執(zhí)行時(shí),可以采用PC增量的方式形成下條指令地址。即按照PC的內(nèi)容依次取指。增量的多少取決于一條指令所占的存儲(chǔ)單元數(shù)。 跳越方式:當(dāng)程序程序轉(zhuǎn)移時(shí),修改PC的內(nèi)容。當(dāng)程序需要轉(zhuǎn)移時(shí),由轉(zhuǎn)移類指令產(chǎn)生轉(zhuǎn)移地址并送入PC中。轉(zhuǎn)移地址的形成有各種方法。5.2.1 尋址的基本概念7/31/202

16、231由于操作數(shù)的存放往往是隨機(jī)的,所以希望有多種方式產(chǎn)生操作數(shù)地址。另外為了提高程序設(shè)計(jì)質(zhì)量,也希望能提供多種靈活的尋址方式。因此,尋址方式主要是指操作數(shù)地址的尋址方式。操作數(shù)地址有多種尋址方式。 形式地址:指令中給出的地址。由于有多種尋址方式,指令中地址字段給出的地址,不一定是操作數(shù)的實(shí)際地址,稱為形式地址。2. 操作數(shù)地址的尋址7/31/202232 有效地址:形式地址經(jīng)過(guò)一定的運(yùn)算而得到的操作數(shù)的實(shí)際地址。有效地址是CPU實(shí)際訪問(wèn)的主存單元的地址。討論各種尋址方式就是為了確定由形式地址變換為有效地址的算法,并按照這些算法確定相應(yīng)的硬件結(jié)構(gòu),自動(dòng)地實(shí)現(xiàn)尋址。7/31/202233 尋址方

17、式的要求: 指令內(nèi)包含的地址盡可能短,以縮短指令長(zhǎng)度。 能訪問(wèn)盡可能大的存儲(chǔ)空間。即能提供盡可能長(zhǎng)的地址信息。根據(jù)程序所具有的局部性特性,大多數(shù)程序在一段時(shí)間內(nèi)都使用存儲(chǔ)器的一個(gè)小區(qū)域,所以,可以用短地址訪問(wèn)該區(qū)域內(nèi)的任一單元的。 希望地址能隱含在寄存器中。因?yàn)榧拇嫫鞯刂繁容^短,而寄存器長(zhǎng)度一般與機(jī)器字長(zhǎng)相同,在字長(zhǎng)較長(zhǎng)的機(jī)器中寄存器內(nèi)存放的地址可訪問(wèn)很大的存儲(chǔ)空間,所以地址隱含在寄存器,可以減少指令長(zhǎng)度 能在不改變指令的情況下改變地址的實(shí)際值。即在數(shù)組、向量、線性表、字符串等數(shù)據(jù)結(jié)構(gòu)的操作中,能夠?qū)崿F(xiàn)操作數(shù)地址的最大增減量。 尋址方式盡可能簡(jiǎn)單規(guī)范,以簡(jiǎn)化硬件設(shè)計(jì)。7/31/2022345.

18、2.2 常用尋址方式1立即尋址指令字中直接給出操作數(shù)。即指令所需的操作數(shù)在指令的地址碼部分直接給出。這種尋址方式在取指令的同時(shí)操作數(shù)即被取出,不必再次訪問(wèn)存儲(chǔ)器,提高了指令執(zhí)行速度。但由于指令字有限,使得數(shù)據(jù)范圍受限。立即尋址方式通常用于給某一寄存器或存儲(chǔ)器單元賦予初值或提供一個(gè)常數(shù)。例:Intel 8086指令: MOV AX,2000H ;將數(shù)據(jù)2000H存入累加器AX中OP立即尋址DDataD7/31/2022352.直接尋址 指令字中直接給出操作數(shù)的有效地址。有效地址 EA7/31/202236這種方式簡(jiǎn)單直觀,便于硬件實(shí)現(xiàn)。但隨著存儲(chǔ)器容量不斷擴(kuò)大,要尋址整個(gè)主存空間,將造成指令長(zhǎng)度

19、加長(zhǎng)。另外程序位置受到限制。例:Intel 8086指令: MOV AX,2000H 將有效地址為2000H的內(nèi)存單元的內(nèi)容讀入累加器AX中。7/31/2022373間接尋址指令的地址碼部分給出的是操作數(shù)地址的地址或是指示操作數(shù)地址的地址指示字。間接尋址分為一級(jí)間址和多級(jí)間址。一級(jí)間址:指令的地址碼部分給出的是操作數(shù)地址的地址。OP間接尋址 AE(A) Data (A)7/31/202238例:某計(jì)算機(jī)指令: MOV AL,2000HE(A)(2000H)3000HData50H00H30H50H2000H3000H2001H50HAL7/31/202239多級(jí)間址:指令的地址碼部分給出的是操

20、作數(shù)地址的地址指示字。在多級(jí)間址中,通常把地址字的高位作為標(biāo)志位,以指示該字是有效地址,還是地址指示字。圖例中E(A)7/31/202240間接尋址的特點(diǎn): 間接尋址比直接尋址靈活,可擴(kuò)大尋址范圍,以短的地址碼訪問(wèn)大的存儲(chǔ)空間。如:指令字長(zhǎng)與存儲(chǔ)器字長(zhǎng)均為16位,指令中地址碼長(zhǎng)為10位,其直接尋址范圍為1k空間;如果用間接尋址,有效地址為16位,其尋址空間為64k,比直接尋址擴(kuò)大64倍。 采用間接尋址,當(dāng)操作數(shù)地址需要改變時(shí),可不必修改指令,只要修改地址指示字中內(nèi)容(即存放有效地址的單元內(nèi)容)即可。 間接尋址需多次訪存才能取得操作數(shù),尤其是多級(jí)間接尋址,因而降低了指令的執(zhí)行速度。大多數(shù)計(jì)算機(jī)只

21、允許一級(jí)間接尋址。在一些大型高速計(jì)算機(jī)中,很少采用間接尋址。7/31/2022414寄存器直接尋址(寄存器尋址)在指令地址碼中給出某一通用寄存器號(hào)(或寄存器地址),該寄存器的內(nèi)容即為指令所需的操作數(shù)。寄存器存取信息的速度比主存快,需要的地址短,可壓縮指令長(zhǎng)度,有利于加快指令執(zhí)行速度。但寄存器的數(shù)量有限。例: Intel 8086指令: MOV AL,BL ;ALBLOP寄存器尋址RnERn Data(Rn)操作數(shù)Rn7/31/2022425. 寄存器間接尋址指令中地址碼部分所指定的寄存器中內(nèi)容是操作數(shù)的有效地址。E(Rn) Data(Rn)7/31/202243例:Intel 8086指令:

22、MOV AL,BX設(shè) BX2000H,(2000H)80H,則 AL80H由于寄存器間接尋址方式中,地址存放在寄存器中,因此只需一次訪存即可取得操作數(shù),而且寄存器又能給出全字長(zhǎng)的地址碼,可尋址較大的存儲(chǔ)空間。7/31/2022446變址尋址指令中指定的變址寄存器的內(nèi)容與指令字中的形式地址相加形成操作數(shù)的有效地址。變址寄存器通常是通用寄存器中的某一個(gè)。E(Rx)D Data(E)7/31/202245例:Intel 8086指令: MOV AL,BX+4設(shè) BX2000H,BX+42004H(2004H)82H,則 AL82H在某些計(jì)算機(jī)中,變址寄存器還可以自動(dòng)增量或減量。每存取一個(gè)數(shù)據(jù),根據(jù)數(shù)

23、據(jù)的長(zhǎng)度,變址寄存器的內(nèi)容自動(dòng)增量或自動(dòng)減量,前者稱為自增型變址尋址;后者稱為自減型變址尋址。7/31/202246例:VAX11指令: MOV (R1)+,R0寄存器R1中內(nèi)容先作為源操作數(shù)地址,讀數(shù)后R1按操作數(shù)長(zhǎng)度增量。例:設(shè)每次增量為1,若R11000H,指令執(zhí)行后,R11001H。例:指令 MOV -(R1),R0寄存器R1按操作數(shù)長(zhǎng)度減量后作為源操作數(shù)地址,并將減量結(jié)果送回R1。例:設(shè)每次減量為1,R11000H,指令執(zhí)行時(shí)先將R1減1,R10FFFH,然后按R1讀源操作數(shù)。7/31/202247變址尋址可用于數(shù)組、向量、字符串等數(shù)據(jù)的處理。例: Intel 8086指令: LOD

24、S ;AL(SI),SISI1SIAAa0A1a1A2a2+17/31/202248變址尋址還可以與間接尋址相結(jié)合,形成復(fù)合型尋址。 先間址后變址 E(Rx)(A)7/31/202249 先變址后間址 E(Rx)A)7/31/2022507相對(duì)尋址將程序計(jì)數(shù)器 PC 的當(dāng)前內(nèi)容與指令中給出的形式地址相加形成操作數(shù)的有效地址。E(PC)Disp7/31/202251PC當(dāng)前內(nèi)容一般為現(xiàn)行指令的下一單元的地址。形式地址是操作數(shù)地址相對(duì)于PC當(dāng)前內(nèi)容的一個(gè)相對(duì)位移量(Disp),位移量可正可負(fù),一般用補(bǔ)碼表示。相對(duì)尋址中,保持位移量不變,可實(shí)現(xiàn)指令帶著數(shù)據(jù)在存儲(chǔ)器中搬家,實(shí)現(xiàn)程序再定位。KOP 相對(duì)

25、尋址 5K+1K+2K+6操作數(shù)MOP 相對(duì)尋址 5M+1M+2M+6操作數(shù)7/31/202252相對(duì)尋址還經(jīng)常用于轉(zhuǎn)移指令中,以PC內(nèi)容為基準(zhǔn),加上相對(duì)位移量形成轉(zhuǎn)移地址。例如PDP11轉(zhuǎn)移指令格式為:其轉(zhuǎn)移地址為(PC)2Disp。之所以加 2Disp,是因?yàn)镻DP一11是以字節(jié)為單位對(duì)主存進(jìn)行編址的,而Disp是相對(duì)于PC的字位移,一個(gè)字為2個(gè)字節(jié)。15 87 0OPDisp7/31/202253例:8086指令 JNC 03H 的功能為,如果進(jìn)位為0,則轉(zhuǎn)移到目標(biāo)地址為 (PC)03H處進(jìn)行執(zhí)行。設(shè)指令為雙字節(jié)指令,本條指令地址為1000H。本條指令取指后,PC1002H轉(zhuǎn)移目標(biāo)地址為

26、1002H0003H1005H若指令為JNC 0FDH 則轉(zhuǎn)移目標(biāo)地址為1002HFFFDH0FFFH0FFDH0FFEH0FFFH1000HJNC1001H03H1002H1003H1004H1005HDFDHD03H7/31/2022548基址尋址操作數(shù)的有效地址等于指令中的形式地址與基址寄存器中的內(nèi)容之和?;芳拇嫫骺梢允且粋€(gè)專用的寄存器,也可以是由指令指定的一個(gè)通用寄存器。E(Rb)Disp7/31/202255基址尋址與變址尋址在形式上以及有效地址的計(jì)算方法上都是相似的,但它們的應(yīng)用場(chǎng)合是不同的是不同的?;穼ぶ肥敲嫦蛳到y(tǒng)的,主要用于邏輯地址到物理地址的變換,用以解決程序定位問(wèn)題。基

27、址寄存器由系統(tǒng)程序通過(guò)特權(quán)指令使用,對(duì)用戶是透明的。另外基址寄存器的內(nèi)容一般不進(jìn)行自動(dòng)增量和減量。變址尋址是面向用戶的,主要用于訪問(wèn)數(shù)組、向量、字符串等成批數(shù)據(jù),用以解決程序的循環(huán)控制問(wèn)題。變址寄存器的內(nèi)容可以進(jìn)行自動(dòng)增量和減量。在早期的一些微、小型機(jī)中,基址尋址與變址尋址是不加區(qū)分的。7/31/202256基址加變址尋址:將基址尋址與變址尋址結(jié)合起來(lái)。例:IBM360370的RX型指令,格式如下:第二個(gè)操作數(shù)的有效地址為: E2(X2)+(B2)+D2其中X2為變址寄存器,B2為基址寄存器,它們都可以是16個(gè)通用寄存器中的一個(gè)。D2為12位的位移量。這條指令最少只需訪存2次。取指(讀D)、基

28、址加變址后進(jìn)行訪存讀操作數(shù)0 78 1112 1516 1920 31OPR1X2B2D27/31/202257頁(yè)面尋址:將存儲(chǔ)器分成若干頁(yè),每一頁(yè)都有自己的頁(yè)面地址,一頁(yè)內(nèi)有若干單元,由頁(yè)內(nèi)地址訪問(wèn)一頁(yè)內(nèi)的某一單元,將頁(yè)面地址與頁(yè)內(nèi)地址相拼接即形成操作數(shù)的有效地址。擴(kuò)展尋址:將要訪問(wèn)的存儲(chǔ)單元地址的高位預(yù)先裝入擴(kuò)展寄存器中。訪存時(shí),擴(kuò)展寄存器內(nèi)容與指令字形式地址相拼接,形成操作數(shù)的有效地址。堆找尋址:按堆棧指示器SP的內(nèi)容確定訪存地址。相聯(lián)尋址:使用特殊存儲(chǔ)結(jié)構(gòu)的相聯(lián)存儲(chǔ)器,按所需內(nèi)容進(jìn)行尋址。其它尋址方式7/31/202258尋址方式碼的省略當(dāng)?shù)刂凡糠值牡刂窞閱我粫r(shí)(指定只有一種),如寄存

29、器尋址,則可以省略尋址方式,直接給出寄存器的編號(hào)。例如:某機(jī)的ALU雙操作數(shù)指令18條,均為R-R型,且有32個(gè)寄存器,則指令格式為:OP(5位) Reg1編號(hào)(5位) Reg2編號(hào) (5位) 7/31/2022595.3 指令類型及功能不同類型的計(jì)算機(jī),由于其性能、結(jié)構(gòu)、適用范圍的不同,指令系統(tǒng)間差異很大。有的機(jī)器指令系統(tǒng)豐富,指令條數(shù)多;有的機(jī)器指令系統(tǒng)簡(jiǎn)單,指令類型少。有的機(jī)器是復(fù)雜指令系統(tǒng)的計(jì)算機(jī)(CISC),有的機(jī)器是精簡(jiǎn)指令系統(tǒng)的計(jì)算機(jī)(RISC)。7/31/2022605.3.1 指令系統(tǒng)的基本要求1. 完備性任何運(yùn)算都可以用指令編程實(shí)現(xiàn)。即要求指令系統(tǒng)的指令豐富、功能齊全、使用

30、方便,應(yīng)具有所有基本指令。2. 有效性用指令系統(tǒng)中的指令編寫的程序能高效率運(yùn)行,占用空間小、執(zhí)行速度快。3. 規(guī)整性指令系統(tǒng)具有對(duì)稱性、勻齊性,指令與數(shù)據(jù)格式的一致性。7/31/202261對(duì)稱性:所有寄存器和存儲(chǔ)單元均同等對(duì)待,所有指令可以使用所有尋址方式,減少特殊操作和例外情況。勻齊性:一種操作可支持各種數(shù)據(jù)類型。如算術(shù)指令可支持字節(jié)、字、雙字、十進(jìn)制數(shù)、浮點(diǎn)單精度數(shù)、浮點(diǎn)雙精度數(shù)等。指令與數(shù)據(jù)格式的一致性:指令長(zhǎng)度與數(shù)據(jù)長(zhǎng)度有一定的關(guān)系,以便于存取和處理。4. 兼容性系列機(jī)的各機(jī)種之間有基本相同的指令集。至少作到向后兼容,即先推出的機(jī)器上的程序可以在后推出的機(jī)器上運(yùn)行。7/31/2022

31、625.3.2 指令類型一臺(tái)計(jì)算機(jī)最基本的、必不可少的指令是不多的,因?yàn)楹芏嘀噶疃伎梢杂眠@些最基本的指令來(lái)實(shí)現(xiàn)。例如,乘、除運(yùn)算指令,浮點(diǎn)運(yùn)算指令,既可以直接用硬件實(shí)現(xiàn),也可以用其它指令編制程序來(lái)實(shí)現(xiàn),但兩者在執(zhí)行時(shí)間和編程的方便性差別很大。因此,指令系統(tǒng)中有相當(dāng)一部分指令是為了提高程序的執(zhí)行速度和便于用戶編程而設(shè)計(jì)的。一個(gè)完善的指令系統(tǒng)應(yīng)包含的以下功能的指令。7/31/2022631數(shù)據(jù)傳送指令完成數(shù)據(jù)傳送功能。數(shù)據(jù)傳送指令應(yīng)解決的問(wèn)題: 傳送范圍:從何處到何處。有 RR、RM、MM 傳送單位:一次傳送的數(shù)據(jù)量。字節(jié)、字、雙字、成組傳送(如數(shù)組等) 尋址方式:源地址和目的地址的確定方法。數(shù)據(jù)

32、傳送時(shí),數(shù)據(jù)從源地址傳送到目的地址,源地址中的數(shù)據(jù)不變。有的機(jī)器設(shè)置通用的MOV指令;有的機(jī)器用LOAD、STORE指令訪存,LOAD為讀數(shù)指令,STORE為存數(shù)指令。7/31/202264例:8086指令MOV AL,BL ;ALBLMOV AL,Disp(BX)(SI) ;AL(BX)(SI)+Disp)7/31/2022652算術(shù)邏輯運(yùn)算指令算術(shù)邏輯運(yùn)算指令主要用于進(jìn)行各種算術(shù)運(yùn)算及邏輯運(yùn)算。算術(shù)運(yùn)算:包括定點(diǎn)、浮點(diǎn)的加、減、乘、除運(yùn)算以及求反、求補(bǔ)、加1、減1、比較等指令。邏輯運(yùn)算:主要是對(duì)布爾量進(jìn)行運(yùn)算,一般包括與、或、非、異或、測(cè)試等指令。邏輯運(yùn)算指令多用于對(duì)數(shù)據(jù)字中某些位(一位或

33、多位)進(jìn)行操作。 7/31/202266例:8086指令系統(tǒng)中ADD AL,BL ;ALAL+BLMUL BL ;AXALBLAND AL,0FEH ;ALALFEH,即AL的最低位 ;清0,其余位不變。OR AL,0F0H ;ALALF0,即AL的高4位置1, ;其余位不變TEST AL,00000001B ; AL00000001BA00 結(jié)果為0A01 結(jié)果不為07/31/202267隨著計(jì)算機(jī)的不斷發(fā)展,硬件價(jià)格的不斷下降,計(jì)算機(jī)的指令系統(tǒng)也在不斷發(fā)展,特別在CISC計(jì)算機(jī)中,常把一些常用的子程序用一條指令代替,如乘方指令、開方指令等,例如 VAX一11的計(jì)算多項(xiàng)式指令,一條指令可實(shí)現(xiàn)

34、一個(gè)多項(xiàng)式的計(jì)算。在一些大型機(jī)、巨型機(jī)中,不僅支持標(biāo)量運(yùn)算,還設(shè)置向量運(yùn)算指令。7/31/2022683移位指令實(shí)現(xiàn)對(duì)操作數(shù)的左、右移位。移位操作指令分為算術(shù)移位、邏輯移位和循環(huán)移位三種,可以實(shí)現(xiàn)對(duì)操作數(shù)左移或右移一位或幾位。 算術(shù)移位:對(duì)帶符號(hào)數(shù)的移位,移位過(guò)程中必須保持操作數(shù)的符號(hào)不變。若是左移,空出的最低位補(bǔ)0。若是右移,空出的最高位補(bǔ)符號(hào)位,操作數(shù)以補(bǔ)碼表示。 邏輯移位:把移位的操作數(shù)當(dāng)作無(wú)符號(hào)數(shù),左移、右移的空出位都補(bǔ)0。7/31/202269 循環(huán)移位:移出位又移入最高(最低)位。大循環(huán)(帶進(jìn)位循環(huán)):進(jìn)位位C與數(shù)據(jù)部分一起循環(huán)。小循環(huán) (不帶進(jìn)位循環(huán)):進(jìn)位位C不與數(shù)據(jù)部分一起循

35、環(huán)。循環(huán)移位一般用于實(shí)現(xiàn)循環(huán)式控制、高低字節(jié)的互換或用于實(shí)現(xiàn)多倍字長(zhǎng)數(shù)據(jù)的算術(shù)移位或邏輯移位。7/31/2022707/31/202271算術(shù)和邏輯移位指令還可用于實(shí)現(xiàn)簡(jiǎn)單的乘除運(yùn)算。移位指令的這個(gè)性質(zhì),對(duì)于沒(méi)有乘除運(yùn)算指令的計(jì)算機(jī)特別重要。移位指令的執(zhí)行時(shí)間比乘除指令的執(zhí)行時(shí)間短,因此采用移位指令實(shí)現(xiàn)簡(jiǎn)單的乘除運(yùn)算可獲得較高速度。7/31/2022724堆棧操作指令堆棧操作指令是一種特殊的數(shù)據(jù)傳送指令。堆棧操作有兩種: 壓入(進(jìn)棧)指令:把指定的操作數(shù)送入棧頂。SPSP減量,(SP)數(shù)據(jù) 彈出(退棧、出棧)指令:從棧頂彈出數(shù)據(jù),送到指令指定的目的地址中。目的(SP),SPSP增量7/31/2

36、02273在一般的計(jì)算機(jī)中,堆棧操作指令主要用來(lái)保存和恢復(fù)中斷、子程序調(diào)用時(shí)的現(xiàn)場(chǎng)數(shù)據(jù)和斷點(diǎn)指令地址,也用于子程序調(diào)用時(shí)的參數(shù)傳遞。為了支持這些功能的快速實(shí)現(xiàn),有些機(jī)器還設(shè)有多數(shù)據(jù)的壓入指令和彈出指令,如VAX一11機(jī)的多寄存器指令,用一條指令最多可把15個(gè)寄存器(R14R0)中的數(shù)據(jù)順序壓入堆棧中。7/31/2022745字符串處理指令字符串處理指令是用于進(jìn)行非數(shù)值數(shù)據(jù)處理的指令。一般包括字符串傳送、字符串比較、字符串查找、字符串抽取、字符串轉(zhuǎn)換等指令。字符串傳送指令:將數(shù)據(jù)塊從主存的某一區(qū)域傳送到另一區(qū)域。字符串比較指令:把一個(gè)字符串與另一個(gè)字符串逐個(gè)字符進(jìn)行比較。字符串查找指令:在一個(gè)字

37、符串中查找指定的子串或字符。7/31/202275字符串抽取:從字符串中提取某一子串。字符串轉(zhuǎn)換:從一種數(shù)據(jù)編碼轉(zhuǎn)換為另一種編碼。字符串處理指令在需要對(duì)大量字符串進(jìn)行各種處理的文字編輯和排版方面非常有用。例:8086指令MOVS ;串傳送指令LODS ;串讀入指令STOS ;串存儲(chǔ)指令7/31/2022766程序控制指令用于控制程序運(yùn)行的順序和選擇程序的運(yùn)行方向的指令。程序控制指令使程序具有測(cè)試、分析與判斷的能力。主要包括轉(zhuǎn)移指令、循環(huán)控制指令及子程序調(diào)用與返回指令。 轉(zhuǎn)移指令:控制程序轉(zhuǎn)到指定地址繼續(xù)執(zhí)行。 無(wú)條件轉(zhuǎn)移:執(zhí)行時(shí)不受任何條件的約束,直接把控制轉(zhuǎn)移到指令指定的轉(zhuǎn)向地址。又稱必轉(zhuǎn)指

38、令 條件轉(zhuǎn)移:只有滿足條件時(shí),才執(zhí)行轉(zhuǎn)移操作,按指定的轉(zhuǎn)向地址轉(zhuǎn)移,否則,程序仍按原順序執(zhí)行。7/31/202277條件轉(zhuǎn)移指令轉(zhuǎn)移的條件一般是前次運(yùn)算的某些結(jié)果特征。在計(jì)算機(jī)CPU中通常設(shè)置一個(gè)狀態(tài)寄存器(或條件碼寄存器),用以記錄所執(zhí)行的算術(shù)邏輯運(yùn)算指令、移位指令等的結(jié)果標(biāo)志。這些標(biāo)志主要包括:進(jìn)位標(biāo)志(C)、結(jié)果溢出標(biāo)志(V)、結(jié)果為零標(biāo)志(Z)、結(jié)果為負(fù)標(biāo)志(N)及結(jié)果奇偶標(biāo)志(P)等。這些標(biāo)志的組合,可以產(chǎn)生十幾種條件轉(zhuǎn)移,如結(jié)果為零轉(zhuǎn)、非零轉(zhuǎn)、為負(fù)轉(zhuǎn)、為正轉(zhuǎn)、溢出轉(zhuǎn)、非溢出轉(zhuǎn)等。7/31/202278 循環(huán)控制指令:支持循環(huán)程序執(zhí)行的指令。循環(huán)控制指令實(shí)際上是一種增強(qiáng)型的條件轉(zhuǎn)移指令。循環(huán)控制指令的功能:循環(huán)控制變量的修改、測(cè)試判斷和轉(zhuǎn)移等。例:Intel 8086指令系統(tǒng)LOOP L1 ;7/31/202279 子程序調(diào)用與返回指令子程序:一組可以公用的指令序列,只要給出子程序的入口地址就能從主程序轉(zhuǎn)入子程序。子程序的入口地址:子程序第一條指令的地址。子程序調(diào)用指令(轉(zhuǎn)子指令、過(guò)程調(diào)用指令):用于從主程序轉(zhuǎn)向子程序的指令。返回指令:從子程序返回主程序的指令。在轉(zhuǎn)子指令中要給出子程序的入口地址;為了執(zhí)行返回指令時(shí),能夠正確返回主程序,轉(zhuǎn)子指令應(yīng)具有保護(hù)斷點(diǎn)的功能。斷點(diǎn):主程序的返回地址。即轉(zhuǎ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)論