《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt

上傳人:za****8 文檔編號:14543747 上傳時(shí)間:2020-07-23 格式:PPT 頁數(shù):89 大?。?.35MB
收藏 版權(quán)申訴 舉報(bào) 下載
《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt_第1頁
第1頁 / 共89頁
《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt_第2頁
第2頁 / 共89頁
《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt_第3頁
第3頁 / 共89頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt》由會員分享,可在線閱讀,更多相關(guān)《《計(jì)算機(jī)組成原理》第5章:指令系統(tǒng).ppt(89頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、第5章 指令系統(tǒng),(時(shí)間:3次課,6學(xué)時(shí)),第5章 指令系統(tǒng),本章講述計(jì)算機(jī)指令功能、指令中包含的信息、指令的一般格式、被指令處理的數(shù)據(jù)如何存儲在計(jì)算機(jī)中、指令如何尋找被處理的數(shù)據(jù)、指令分類、指令系統(tǒng)的兼容性等問題,并列舉幾種類型的計(jì)算機(jī)指令系統(tǒng),由此可以較為深刻地理解計(jì)算機(jī)指令和指令系統(tǒng)的意義。,第5章 指令系統(tǒng),5.1 計(jì)算機(jī)指令概念 5.2 指令格式 5.3 數(shù)據(jù)的表示和存儲 5.4 尋址方式 5.5 指令類型 5.6 指令系統(tǒng)舉例 5.7 機(jī)器語言、匯編語言和高級語言,5.1 計(jì)算機(jī)指令概念,軟件系統(tǒng)分為許多層次,最低的一層就是緊臨硬件的一層,它直接控制計(jì)算機(jī)的硬件運(yùn)行,這一層就是指令

2、系統(tǒng)。指令系統(tǒng)是一種型號的計(jì)算機(jī)所具有的全體指令的集合。不同型號的計(jì)算機(jī)有不同的指令系統(tǒng),一般不兼容。 計(jì)算機(jī)正在執(zhí)行的指令(二進(jìn)制信息)是存放在控制器的指令寄存器中的。一條指令的功能就是告訴計(jì)算機(jī)要完成什么操作,至于具體如何完成,必須將指令寄存器中的指令經(jīng)控制器的譯碼電路和微命令發(fā)生器,產(chǎn)生微命令;經(jīng)控制器的地址形成電路給出操作數(shù)地址;由微命令和操作數(shù)地址決定實(shí)際的操作步驟。,5.1 計(jì)算機(jī)指令概念,一般說來,指令系統(tǒng)中的一條指令包括兩大類信息,即操作信息和地址信息。 計(jì)算機(jī)指令系統(tǒng)的設(shè)置與計(jì)算機(jī)硬件結(jié)構(gòu)密切相關(guān)。指令系統(tǒng)直接影響到計(jì)算機(jī)系統(tǒng)的性能,也直接影響到操作系統(tǒng)和編譯程序的編寫難度,

3、可見指令系統(tǒng)的設(shè)計(jì)是計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中的一個(gè)核心問題。 系列(Series)計(jì)算機(jī)。 指令系統(tǒng)的改進(jìn)是圍繞著縮小機(jī)器語言、匯編語言與高級語言的語義差異以及有利于操作系統(tǒng)的實(shí)現(xiàn)和優(yōu)化而進(jìn)行的,它有利于高級語言程序的編譯和提高機(jī)器運(yùn)行速度。,5.1 計(jì)算機(jī)指令概念,指令系統(tǒng)太復(fù)雜也會帶來一些不利因素,為了解決這個(gè)問題,70年代末人們提出了便于VLSI實(shí)現(xiàn)的精簡指令系統(tǒng)計(jì)算機(jī),簡稱RISC;與之相應(yīng)的便是復(fù)雜指令系統(tǒng)計(jì)算機(jī),簡稱CISC。,5.2 指 令 格 式,計(jì)算機(jī)的指令格式與機(jī)器字長、存儲器的容量以及指令的功能都有很大關(guān)系。為了便于程序設(shè)計(jì)、增加基本操作的并行性、增強(qiáng)指令功能,指令中包含的信息越

4、多越好。然而如果所有指令都取相同長度的話,那么在有些指令中,一部分信息將是沒有意義的,這就浪費(fèi)了指令所占的存儲空間,從而增加了訪存次數(shù),可能使整個(gè)指令執(zhí)行時(shí)間更長。因此,如何科學(xué)合理地設(shè)計(jì)指令格式,使指令既能給出足夠信息,其長度又盡可能與機(jī)器的字長相匹配,從而節(jié)省存儲空間,縮短取指周期,達(dá)到提高機(jī)器性能的目的,一直是指令格式設(shè)計(jì)中的一個(gè)重要問題。,5.2 指 令 格 式,5.2.1 指令的一般格式 5.2.2 指令操作碼的擴(kuò)展技術(shù) 5.2.3 指令長度與字長的關(guān)系,5.2.1 指令的一般格式,計(jì)算機(jī)通過執(zhí)行指令來處理各種數(shù)據(jù)。為了指出數(shù)據(jù)的來源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含下

5、列信息。 操作碼 操作數(shù)的地址。 下一條指令的地址 根據(jù)上述分析可知,一條指令實(shí)際上包括兩種信息,即操作碼和地址碼。 零地址指令,OP CODE,2. 一地址指令,3. 兩地址指令,4. 三地址指令,5.2.1 指令的一般格式,5. 多地址指令 在某些性能較好的大、中型機(jī)甚至高檔次小型機(jī)中,往往設(shè)置一些功能很強(qiáng)、用于處理成批數(shù)據(jù)的指令,如字符串處理指令,向量、矩陣運(yùn)算指令。為了描述一批數(shù)據(jù),指令中需要多個(gè)地址來指出數(shù)據(jù)存放的首地址、長度和下標(biāo)等信息。 以上所述的幾種指令只是一般情況,并非所有計(jì)算機(jī)都具有。零地址、一地址和兩地址指令具有指令短、執(zhí)行速度快、硬件實(shí)現(xiàn)簡單等特點(diǎn),多為結(jié)構(gòu)較簡單、字長

6、較短的小型、微型機(jī)所采用;而兩地址、三地址和多地址指令具有功能強(qiáng)、便于編程等特點(diǎn),多為字長較長的大、中型機(jī)所采用。但也不能一概而論。,5.2.1 指令的一般格式,,5.2.2 指令操作碼的擴(kuò)展技術(shù),,指令的操作碼長度決定了指令系統(tǒng)中完成不同操作的指令條數(shù)。若某機(jī)器的操作碼長度為K位,則它最多只能有2K條不同指令。指令操作碼通常有兩種編碼格式,一種是固定格式,即操作碼的長度固定,且集中放在指令字的一個(gè)字段中。這種格式對于簡化硬件設(shè)計(jì)、減少指令譯碼時(shí)間非常有利,在字長較長的大、中型機(jī)和超級小型機(jī)以及RISC上廣泛使用。另一種是可變格式,即操作碼的長度可變,且分散地放在指令字的不同字段中。這種格式能

7、夠有效地壓縮程序中操作碼的平均長度,在字長較短的微型機(jī)上廣泛采用。,5.2.2 指令操作碼的擴(kuò)展技術(shù),顯然,操作碼長度不固定將增加指令譯碼和分析的難度,使控制器的設(shè)計(jì)復(fù)雜化,因此對操作碼的編碼至關(guān)重要。通常是在指令字中用一個(gè)固定長度的字段來表示基本操作碼,而對于一部分不需要某個(gè)地址碼的指令,則把它們的操作碼擴(kuò)展到該地址字段,這樣,既能充分地利用指令字的各個(gè)字段,又能在不增加指令長度的情況下擴(kuò)展操作碼的長度,使它可以表示更多的指令。例如,設(shè)某機(jī)器的指令長度為16位,包括4位基本操作碼字段和3個(gè)4位地址字段,其格式如圖5-1所示。,圖5-1 指令格式,5.2.2 指令操作碼的擴(kuò)展技術(shù),(1)15條

8、三地址指令的操作碼由4位基本操作碼給出,范圍為00001110,剩下一個(gè)碼點(diǎn)1111用于把操作碼擴(kuò)展到A1,即從4位擴(kuò)展到8位。 (2)15條二地址指令的操作碼由擴(kuò)展后的8位操作碼給出,范圍為1111000011111110,剩下一個(gè)碼點(diǎn)11111111用于把操作碼擴(kuò)展到A2,即從8位擴(kuò)展到12位。 (3)15條一地址指令的操作碼由12位操作碼給出,范圍為111111110000111111111110,剩下一個(gè)碼點(diǎn)111111111111用于把操作碼擴(kuò)展到A3,即從12位擴(kuò)展到16位。 (4)16條零地址指令的操作碼使用16位,范圍為11111111111100001111111111111

9、111。,5.2.2 指令操作碼的擴(kuò)展技術(shù),除了上述方法外,還有其他許多擴(kuò)展方法,如可以形成15條三地址指令、14條兩地址指令、31條一地址指令和16條零地址指令,共76條指令。實(shí)際上,指令操作碼是有空余的。在可變長度的指令系統(tǒng)的設(shè)計(jì)中,到底使用何種擴(kuò)展方法,所要遵循的一個(gè)重要原則是,使用頻度(即指令在程序中出現(xiàn)的概率)高的指令應(yīng)分配較短的操作碼;使用頻度低的指令應(yīng)分配較長的操作碼。這樣,不僅可以有效地縮短操作碼在程序中的平均長度,節(jié)省存儲器空間,而且縮短了經(jīng)常使用的指令的譯碼時(shí)間,因而可以提高程序的運(yùn)行速度。,5.2.2 指令操作碼的擴(kuò)展技術(shù),這里特別強(qiáng)調(diào)指出,計(jì)算機(jī)中的指令操作碼總是希望有

10、一定的規(guī)整性,否則會使硬件實(shí)現(xiàn)復(fù)雜化。此外,為了便于在計(jì)算機(jī)內(nèi)存放,指令的長度一般是字節(jié)的整數(shù)倍,所以操作碼與地址碼兩部分長度之和就應(yīng)該是字節(jié)的整數(shù)倍,因此在考慮操作碼長度時(shí)還應(yīng)考慮地址碼的要求。 由此可見,操作碼擴(kuò)展技術(shù)是一種重要的指令優(yōu)化技術(shù),它可以縮短指令的平均長度,減少程序的總位數(shù)以及增加指令字所能表示的操作信息。擴(kuò)展操作碼比固定操作碼譯碼復(fù)雜,使控制器的設(shè)計(jì)難度增大,也需要更多的硬件來支持。,5.2.3 指令長度與字長的關(guān)系,字長是指計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù),它與計(jì)算機(jī)的功能和用途有很大的關(guān)系,是計(jì)算機(jī)的一個(gè)重要技術(shù)指標(biāo)。首先,字長決定了計(jì)算機(jī)的運(yùn)算精度,字長越長,計(jì)算機(jī)

11、的運(yùn)算精度越高,因此,高性能的計(jì)算機(jī)字長較長,而性能較差的計(jì)算機(jī)字長相對要短。其次,地址長度決定了指令直接尋址能力,若為n 位,則給出的n 位直接地址可以尋址2n字節(jié)。這對于字長較短(8位或16位)的微型機(jī)來說,遠(yuǎn)遠(yuǎn)滿足不了實(shí)際需要。擴(kuò)大尋址能力的方法,一是通過增加機(jī)器字長來增加地址碼的長度;二是采用地址擴(kuò)展技術(shù),把存儲空間分成若干個(gè)段,用基地址加位移量的方法來增加地址碼的長度。,5.2.3 指令長度與字長的關(guān)系,為了便于處理字符數(shù)據(jù)和盡可能地充分利用存儲空間,一般機(jī)器字長都是字節(jié)長度(即8位)的1、2、4或8倍,也就是8、16、32、64位。20世紀(jì)80年代的微型機(jī)的字長多為8、16和32位

12、,大中型機(jī)的字長多為32位和64位,因此,一個(gè)字中可以存儲1、2、4或8個(gè)字符。隨著電路集成度的提高,機(jī)器字長也在增長,16位微機(jī)也趨于淘汰。 指令的長度主要取決于操作碼的長度、操作數(shù)地址的長度和操作數(shù)地址的個(gè)數(shù)。由于操作碼的長度、操作數(shù)地址的長度及所采用的格式不同,各指令的長度不是固定的,但也不是任意的。為了充分利用存儲空間,指令的長度通常為字節(jié)的整數(shù)倍。,5.2.3 指令長度與字長的關(guān)系,指令的長度與機(jī)器的字長沒有固定關(guān)系,它既可以小于或等于機(jī)器的字長,也可以大于機(jī)器字長。前者稱為短格式指令,后者稱為長格式指令,一條指令存放在地址連續(xù)的存儲單元中。在同一臺計(jì)算機(jī)中可能既有短格式指令,又有

13、長格式指令,但通常是把最常用的指令(如算術(shù)邏輯運(yùn)算指令、數(shù)據(jù)傳送指令)設(shè)計(jì)成短格式指令,以便節(jié)省存儲空間和提高指令的執(zhí)行速度。,5.3 數(shù)據(jù)的表示和存儲,計(jì)算機(jī)中的基本數(shù)據(jù)有邏輯(布爾)數(shù)、定點(diǎn)數(shù)(整數(shù))、浮點(diǎn)數(shù)(實(shí)數(shù))、十進(jìn)制、字符串、數(shù)組等。對這些數(shù)據(jù)的運(yùn)算可以設(shè)置專門的指令,也可以僅設(shè)置最簡單的算術(shù)邏輯運(yùn)算指令,再通過執(zhí)行程序來實(shí)現(xiàn)對其他類型數(shù)據(jù)的處理,但后者的速度下降許多。在機(jī)器中,若設(shè)置能直接對矩陣向量數(shù)據(jù)(數(shù)組)進(jìn)行運(yùn)算的指令(增加相應(yīng)的硬件),可以大大提高對向量(數(shù)組)的處理速度,這一般只在巨型計(jì)算機(jī)中才采用。 目前計(jì)算機(jī)所用的數(shù)據(jù)字長一般為32位,而存儲器地址一般按字節(jié)表示,

14、即一個(gè)存儲單元只能存放一個(gè)字節(jié)的數(shù)據(jù),因此一條指令通常要占用幾個(gè)存儲單元,使用幾個(gè)存儲器地址。,5.3 數(shù)據(jù)的表示和存儲,計(jì)算機(jī)指令系統(tǒng)可支持對字節(jié)、半字、字、雙字的運(yùn)算,有些計(jì)算機(jī)有位處理指令。為便于硬件實(shí)現(xiàn),一般要求多字節(jié)數(shù)據(jù)對準(zhǔn)邊界,如圖5-2(a)所示。當(dāng)所存數(shù)據(jù)不能滿足此要求時(shí),則填充一個(gè)或多個(gè)空白字節(jié)。也有的計(jì)算機(jī)不要求對準(zhǔn)邊界,但可能增加訪問存儲器次數(shù)。假如存儲器與運(yùn)算部件間數(shù)據(jù)通路的寬度為32位(一個(gè)字),在不按邊界對準(zhǔn)的計(jì)算機(jī)中,訪存指令所要求存取的數(shù)據(jù)(例如一個(gè)字)可能在兩個(gè)存儲單元中,因此需要訪問兩次存儲器,而且還要對高低字節(jié)的位置進(jìn)行調(diào)整,圖5-2(b)中的陰影部分即屬

15、這種情況。,(a) 多字節(jié)數(shù)據(jù)對準(zhǔn)邊界,圖5-2 存儲器中數(shù)據(jù)的存放舉例,(b) 數(shù)據(jù)不對準(zhǔn)邊界,5.3 數(shù)據(jù)的表示和存儲,在數(shù)據(jù)對準(zhǔn)邊界的計(jì)算機(jī)中,當(dāng)以二進(jìn)制來表示地址時(shí),半字地址的最低位恒為零,字地址的最低兩位為零,雙字地址的最低三位為零。圖5-3為按字節(jié)編址的雙字?jǐn)?shù)據(jù)的兩種字節(jié)次序:低字節(jié)為低地址,如圖5-3(a)所示;高字節(jié)為低地址,如圖5-3(b)所示。,(a) 低字節(jié)為低地址,(b) 高字節(jié)為低地址,圖5-3 兩種字節(jié)次序,5.4 尋 址 方 式,在執(zhí)行一條指令的時(shí)候,操作數(shù)可能在運(yùn)算部件的某個(gè)寄存器中或存儲器中,也可能就在本指令中。正在運(yùn)行的程序總是存放在存儲器(內(nèi)存)中,正在執(zhí)

16、行的指令總是在CPU內(nèi)控制器的指令寄存器中。所謂尋址方式(或編址方式)指的是確定本條指令的數(shù)據(jù)地址及下一條要執(zhí)行的指令地址的方法,它與計(jì)算機(jī)硬件結(jié)構(gòu)緊密相關(guān),而且對指令格式和功能影響很大。從程序員角度看,尋址方式與匯編程序設(shè)計(jì)的關(guān)系極為密切;與高級語言的編譯程序設(shè)計(jì)也同樣密切。不同的計(jì)算機(jī)有不同的尋址方式,但其基本原理是相同的。有的計(jì)算機(jī)尋址種類少,因此在指令的操作碼中表示出尋址方式;而有的計(jì)算,5.4 尋 址 方 式,機(jī)采用多種尋址方式,此時(shí)在指令中專設(shè)一個(gè)字段表示一個(gè)操作數(shù)的來源或去向。這里僅介紹幾種被廣泛采用的基本尋址方式。在一些計(jì)算機(jī)中,某些尋址方式可以組合使用,從而形成更復(fù)雜的尋址方

17、式。,5.4 尋 址 方 式,,1. 直接尋址 對直接尋址方式來說,指令的地址碼部分直接給出操作數(shù)在存儲器中的地址,圖5-4(a)僅給出一個(gè)操作數(shù)地址;當(dāng)有多個(gè)地址時(shí),情況類似。直接尋址方式可以由操作碼表示出來。圖5-4(b)在指令中增加了一個(gè)尋址方式字段M,假如M為3位二進(jìn)制碼,則可表示8種尋址方式。,,圖5-4 直接尋址方式,5.4 尋 址 方 式,2. 寄存器尋址 計(jì)算機(jī)的中央處理器中一般設(shè)置有一定數(shù)量的通用寄存器,用以存放操作數(shù)、操作數(shù)的地址或中間結(jié)果。假如地址碼部分給出某一通用寄存器地址,而且所需的操作數(shù)就在這一寄存器中,則稱為寄存器尋址。通用寄存器的數(shù)量一般在幾個(gè)至幾十個(gè)之間,

18、比存儲單元少得多,因此地址碼短,而且對寄存器存取數(shù)據(jù)比對存儲器存取數(shù)據(jù)快得多,所以這種尋址方式可以縮短指令長度,節(jié)省存儲空間,提高指令的執(zhí)行速度,因而在計(jì)算機(jī)中得到廣泛應(yīng)用。,5.4 尋 址 方 式,3. 基址尋址 基址尋址是指在計(jì)算機(jī)中設(shè)置一個(gè)專用的基址寄存器,或由指令指定一個(gè)通用寄存器作為基址寄存器。操作數(shù)的地址由基址寄存器的內(nèi)容和指令的地址碼A相加得到,如圖5-5所示。在這種情況下,地址碼A通常被稱為位移量(Disp)。也可用其他方法獲得位移量。,圖5-5 基址尋址過程,5.4 尋 址 方 式,,4. 變址尋址 變址尋址的過程如圖5-6所示。指令地址碼部分給出的地址A和指定的變址寄存器R

19、的內(nèi)容通過加法器相加,所得的和作為地址從存儲器中讀出所需的操作數(shù)。這是幾乎所有計(jì)算機(jī)都采用的一種尋址方式。如果計(jì)算機(jī)中還有基址寄存器,則在計(jì)算有效地址時(shí)還要加上基址寄存器內(nèi)容。,,圖5-6 變址尋址過程,5.4 尋 址 方 式,,5. 間接尋址 在尋址時(shí),若根據(jù)指令的地址碼所取出的內(nèi)容是操作數(shù)的地址或指令地址,這種尋址方式就稱為間接尋址或間址。根據(jù)地址碼指的是寄存器地址還是存儲器地址,間接尋址又可分為寄存器間接尋址和存儲器間接尋址兩種方式。間接尋址有一次間址和多次間址兩種情況,大多數(shù)計(jì)算機(jī)只允許一次間址。對于存儲器一次間址來說,需要訪問兩次存儲器才能取得數(shù)據(jù),第一次從存儲器讀出的是操作數(shù)的地址

20、,第二次才讀出操作數(shù)。,5.4 尋 址 方 式,,圖5-7(a)、(b)分別為寄存器間接尋址與存儲器間接尋址的操作數(shù)尋址過程。圖5-8以轉(zhuǎn)移指令JUMP為例,說明在直接尋址和間接尋址方式下,如何確定下一條要執(zhí)行的指令地址。,(a) 寄存器間接尋址,(b) 存儲器間接尋址,圖5-7 間接尋址過程,,(a) 直接尋址,(b) 間接尋址,圖5-8 確定JUMP指令的轉(zhuǎn)移地址,5.4 尋 址 方 式,,,6. 相對尋址 把程序計(jì)數(shù)器PC的內(nèi)容(即當(dāng)前正在執(zhí)行的指令地址)與地址碼部分給出的位移量(Disp)之和作為操作數(shù)的地址或轉(zhuǎn)移地址,稱為相對地址。主要用于轉(zhuǎn)移指令,執(zhí)行本條指令之后,將轉(zhuǎn)移到(PC)

21、+Disp,(PC)表示程序計(jì)數(shù)器的內(nèi)容。相對尋址有兩個(gè)特點(diǎn):第一,轉(zhuǎn)移地址不是固定的,它隨著PC值的變化而變化,并且總是相差一個(gè)固定值Disp,因此無論程序裝入存儲器的任何地方,均能正確運(yùn)行,對浮動程序很適用。第二,位移量可正可負(fù),通常用補(bǔ)碼表示。若位移量為n位,則這種方式的尋址范圍在到之間。,5.4 尋 址 方 式,,當(dāng)前計(jì)算機(jī)的程序和數(shù)據(jù)一般是分開存放的,程序區(qū)在程序執(zhí)行過程中不允許修改。在程序與數(shù)據(jù)分區(qū)存放的情況下,不用相對尋址方式來確定操作數(shù)地址。 7. 立即數(shù) 所需的操作數(shù)由指令的地址碼部分直接給出,就稱為立即數(shù)(或直接數(shù))尋址方式。這種方式的特點(diǎn)是,取指時(shí)操作碼和一個(gè)操作數(shù)同時(shí)被

22、取出,不必再次訪問存儲器,提高了指令的執(zhí)行速度。但是由于這一操作數(shù)是指令的一部分,不能修改,而一般情況下,指令所處理的數(shù)據(jù)都是在不斷變化的(如上條指令執(zhí)行的結(jié)果是下條指令的操作數(shù)),故這種方式只能適用于操作數(shù)固定的情況。通常用于給某一寄存器或存儲器單元賦初值或提供一個(gè)常數(shù)。,5.5 指 令 類 型,一臺計(jì)算機(jī)的指令系統(tǒng)通常有幾十條至幾百條指令,按其所完成的功能可分為算術(shù)邏輯運(yùn)算指令、移位操作指令、浮點(diǎn)運(yùn)算指令、十進(jìn)制運(yùn)算指令、字符串處理指令、向量運(yùn)算指令、數(shù)據(jù)傳送指令、轉(zhuǎn)移類指令、堆棧操作指令、輸入/輸出指令、特權(quán)指令。本節(jié)分別說明各類指令的功能。,5.5 指 令 類 型,,1. 算術(shù)邏輯運(yùn)算

23、指令 一般計(jì)算機(jī)都有算術(shù)邏輯運(yùn)算指令。通常計(jì)算機(jī)具有對兩個(gè)數(shù)進(jìn)行與、或、非(求反)、異或(按位加)等操作的邏輯運(yùn)算指令。有些計(jì)算機(jī)還設(shè)置有位操作指令,如位測試(測試指定位的值)、位清除(把指定位清零)、位求反(取某位的反值)指令等。 2. 移位操作指令 移位操作指令分為算術(shù)移位、邏輯移位和循環(huán)移位3種,可以將操作數(shù)左移或右移若干位,如圖5-9所示。,圖5-9 各種移位的操作過程,5.5 指 令 類 型,3. 浮點(diǎn)運(yùn)算指令 高級語言中的實(shí)數(shù)(Real)經(jīng)常是先轉(zhuǎn)換成浮點(diǎn)數(shù)的形式再進(jìn)行處理。某些機(jī)器沒有設(shè)置浮點(diǎn)運(yùn)算指令而用子程序?qū)崿F(xiàn),其速度較低。因此主要用于科學(xué)計(jì)算的計(jì)算機(jī)應(yīng)該設(shè)置浮點(diǎn)運(yùn)算指

24、令,一般能對單精度(32位)、雙精度(64位)數(shù)據(jù)進(jìn)行處理。 4. 十進(jìn)制運(yùn)算指令 在人機(jī)交互作用時(shí),輸入/輸出的數(shù)據(jù)都是以十進(jìn)制形式表示的。在某些數(shù)據(jù)處理系統(tǒng)中輸入/輸出的數(shù)據(jù)很多,但對數(shù)據(jù)本身的處理卻很簡單。在不具有十進(jìn)制運(yùn)算指令的計(jì)算機(jī)中,首先將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),再在機(jī)器內(nèi)運(yùn)算;而后又轉(zhuǎn)換成十進(jìn)制數(shù)據(jù)輸出。在輸入/輸出頻繁的計(jì)算機(jī)系統(tǒng)中,設(shè)置十進(jìn)制運(yùn)算指令能提高數(shù)據(jù)處理的速度。,5.5 指 令 類 型,5. 字符串處理指令 字符串處理指令是一種非數(shù)值數(shù)據(jù)的處理指令,一般包括字符串傳送、字符串比較、字符串查詢、字符串轉(zhuǎn)換等指令。其中,字符串傳送指令所完成的操作是將數(shù)據(jù)塊從主存儲器

25、的某區(qū)域傳送到另一區(qū)域;字符串比較指令所完成的操作是將一個(gè)字符串與另一個(gè)字符串逐個(gè)字符進(jìn)行比較,以確定其是否相等;字符串查詢是查找在字符串中是否含有另一指定的子串或字符;字符串轉(zhuǎn)換是指將一種數(shù)據(jù)表達(dá)形式轉(zhuǎn)換成另一種表達(dá)形式,例如從ASCII碼轉(zhuǎn)換成EBCDIC碼(擴(kuò)充的二-十進(jìn)制交換碼)。這種指令在需對大量字符串進(jìn)行各種處理的文字編輯和排版方面非常有用。,5.5 指 令 類 型,6. 數(shù)據(jù)傳送指令 數(shù)據(jù)傳遞指令用以實(shí)現(xiàn)寄存器與寄存器、寄存器與存儲器單元、存儲器單元與存儲器單元之間的數(shù)據(jù)傳送。對于存儲器來講,數(shù)據(jù)傳送包括了對數(shù)據(jù)的讀(相當(dāng)于取數(shù)指令)或?qū)?相當(dāng)于存數(shù)指令)操作。數(shù)據(jù)傳送時(shí),數(shù)據(jù)

26、從源地址傳送到目的地址,而源地址中的數(shù)據(jù)保持不變,因此實(shí)際上是數(shù)據(jù)復(fù)制。 7. 轉(zhuǎn)移類指令 轉(zhuǎn)移類指令用以控制程序流的轉(zhuǎn)移。在大多數(shù)情況下,計(jì)算機(jī)是按順序方式執(zhí)行程序的,但是也經(jīng)常會遇到離開原來的順序轉(zhuǎn)移到另一段程序或循環(huán)執(zhí)行某段程序的情況。,,5.5 指 令 類 型,按轉(zhuǎn)移的性質(zhì),轉(zhuǎn)移指令分為無條件轉(zhuǎn)移、條件轉(zhuǎn)移、過程調(diào)用與返回、陷阱(Trap)等幾種。 1)無條件轉(zhuǎn)移與條件轉(zhuǎn)移 2)調(diào)用指令與返回指令 3)陷阱與陷阱指令 8.堆棧及堆棧操作指令 堆棧(Stack)是由若干個(gè)連續(xù)存儲單元組成的先進(jìn)后出(FILO)存儲區(qū),第一個(gè)送入堆棧中的數(shù)據(jù)存放在棧底,最近送入堆棧中的數(shù)據(jù)存放在棧頂。棧底

27、是固定不變的,而棧頂卻是隨著數(shù)據(jù)的入棧和出棧在不斷變化。為了表示棧頂?shù)奈恢?,有一個(gè)寄存器或存儲器單元用于指出棧頂?shù)牡刂罚@個(gè)寄存器或存儲器單元就稱為堆棧指針SP(Stack Pointer)。任何堆棧操作只能在棧頂進(jìn)行。,,5.5 指 令 類 型,壓入指令 PUSH OPR 把OPR(長度為兩個(gè)字節(jié))壓入堆棧 操作是:(SP)-2SP,OPR(SP) 彈出指令 POP OPR 彈出一個(gè)數(shù)據(jù)(長度為兩個(gè)字節(jié))送OPR 操作是:((SP))OPR,(SP)+2SP 由于堆棧具有先進(jìn)后出的性質(zhì),因而在中斷、子程序調(diào)用過程中廣泛用于保存返回地址、狀態(tài)標(biāo)志及現(xiàn)場信息。 堆棧還有一個(gè)重要的作用,就是

28、用于子程序調(diào)用時(shí)參數(shù)的傳遞,特別是在不同語言程序之間相互調(diào)用過程中,使用堆棧來傳遞數(shù)據(jù)更加普遍。,,5.5 指 令 類 型,9. 輸入/輸出(I/O)指令 計(jì)算機(jī)所處理的一切原始數(shù)據(jù)和所執(zhí)行的程序(除了固化在ROM中的以外)均來自外部設(shè)備的輸入,處理結(jié)果需要外部設(shè)備輸出。輸入/輸出指令的一般格式是OP REG A。其中,OP是操作碼,表示I/O指令。REG是寄存器名,用于指定與外部設(shè)備交換數(shù)據(jù)的CPU中的某寄存器。A是外部設(shè)備接口中的寄存器地址或設(shè)備碼,其長度一般為8位或16位,可以表示25664K個(gè)設(shè)備寄存器(接口中有3類寄存器,即輸入數(shù)據(jù)寄存器、輸出數(shù)據(jù)寄存器和控制寄存器)。輸入指令用于從

29、A地址所指定的外部設(shè)備寄存器中讀入一個(gè)數(shù)據(jù)到REG寄存器中;輸出指令剛好相反,把REG寄存器中的數(shù),5.5 指 令 類 型,,據(jù)送到A地址所指定的外部設(shè)備寄存器中。此外,I/O指令還可用來發(fā)送控制命令和接收回答信號,用以控制外部設(shè)備的工作。 10. 特權(quán)指令 某些指令使用不當(dāng)會破壞系統(tǒng)或其他用戶信息,因此為了安全起見,這類指令只能用于操作系統(tǒng)或其他系統(tǒng)軟件,而不提供給用戶使用,稱為特權(quán)指令。 11. 其他指令 其他指令包括向量指令、多處理機(jī)指令和控制指令??刂浦噶畎ǖ却噶睿C(jī)指令,空操作指令,開中斷、關(guān)中斷、置條件碼指令。,,5.6 指令系統(tǒng)舉例,下面通過幾種類型計(jì)算機(jī)指令系統(tǒng)的介紹來

30、增加認(rèn)識,這些計(jì)算機(jī)(或處理器)是Sun微系統(tǒng)公司的SPARC90(RISC)、IBM 360/370系列(CISC)、PDP 11/VAX 11(CISC)系列,Intel公司的Pentium系列(基于RISC的處理器內(nèi)核)。,5.6 指令系統(tǒng)舉例,5.6.1 SPARC的指令系統(tǒng) 5.6.2 IBM大型機(jī)指令系統(tǒng) 5.6.3 PDP 11與VAX 11基本指令格式 5.6.4 Pentium 的指令系統(tǒng),5.6.1 SPARC的指令系統(tǒng),SPARC指令字長32位,有3種指令格式、6種指令類型。 1SPARC的指令類型 1)算術(shù)運(yùn)算/邏輯運(yùn)算/移位指令 加法指令4條:ADD、ADDCC、AD

31、DX、ADDXCC。 減法指令4條:SUB、SUBCC、SUBX、SUBXCC。 檢查標(biāo)記的加法指令2條:TADDCC、TADDCCTV。 檢查標(biāo)記的減法指令2條:TSUBCC、TSUBCCTV。 邏輯運(yùn)算指令共12條:AND、ANDCC、ANDN、ANDNCC;OR、ORCC、ORN、ORNCC;XOR、XORCC、XORN、XORNCC。,,5.6.1 SPARC的指令系統(tǒng),移位指令3條:SLL(邏輯左移)、SRL(邏輯右移)、SRA(算術(shù)右移)。 其他還有乘法步、SETHI、SAVE、RESTORE等。SAVE和RESTORE兩條指令分別將現(xiàn)行窗口指針減1和加1。 現(xiàn)在對4條加法指令進(jìn)行

32、說明。以CC結(jié)尾的加法指令表示除了進(jìn)行加法運(yùn)算以外還要根據(jù)運(yùn)算結(jié)果置狀態(tài)觸發(fā)器N、Z、V、C;X表示加進(jìn)位信號;XCC表示加進(jìn)位信號并置N、Z、V、C。 2)LOAD/STORE指令 取/存字節(jié)(LDSB/STB)、半字、字、雙字共20條指令,其中一半是特權(quán)指令。,5.6.1 SPARC的指令系統(tǒng),SPARC結(jié)構(gòu)將存儲器分成若干區(qū),其中有4個(gè)區(qū)分別為用戶程序區(qū)、用戶數(shù)據(jù)區(qū)、系統(tǒng)程序區(qū)和系統(tǒng)數(shù)據(jù)區(qū)。并規(guī)定在執(zhí)行用戶程序時(shí),只能從用戶程序區(qū)取指令,在用戶數(shù)據(jù)區(qū)存取數(shù)據(jù);而執(zhí)行系統(tǒng)程序時(shí)則可以使用特權(quán)指令訪問任一區(qū)。 另外還有兩條供多處理機(jī)系統(tǒng)使用的數(shù)據(jù)交換指令SWAP和讀后置字節(jié)指令LDSTUB。

33、 3)控制轉(zhuǎn)移類指令5條。 4)讀/寫專用寄存器指令8條。 以上指令共計(jì)66條。 5)浮點(diǎn)運(yùn)算指令。 6)協(xié)處理器指令。,5.6.1 SPARC的指令系統(tǒng),由于SPARC為整數(shù)運(yùn)算部件(IU),所以當(dāng)執(zhí)行浮點(diǎn)運(yùn)算指令或協(xié)處理器指令時(shí),將交給浮點(diǎn)運(yùn)算器或協(xié)處理器處理,當(dāng)機(jī)器沒有配置這種部件時(shí),將通過子程序?qū)崿F(xiàn)。 2SPARC的指令格式,,,格式1:CALL指令,格式2:SETHI指令和BRANCH指令,,5.6.1 SPARC的指令系統(tǒng),,格式3:其他指令,,3. 各類指令的功能及尋址方式 下面簡單介紹第一類至第四類指令。 1)算術(shù)邏輯運(yùn)算指令 功能:(rs1)OP(rs2) rd (當(dāng)i=0

34、時(shí)) (rs1) OP Simm13 rd (當(dāng)i=1時(shí)) RISC的特點(diǎn)之一是所有參與算術(shù)邏輯運(yùn)算的數(shù)均在寄存器中。,5.6.1 SPARC的指令系統(tǒng),2)LOAD/STORE指令(取數(shù)/存數(shù)指令) 功能:LOAD指令將存儲器中的數(shù)據(jù)送往rd中;STORE指令將rd的內(nèi)容送往存儲器中。 存儲器地址的計(jì)算(寄存器間接尋址方式):當(dāng)i=0時(shí),存儲器地址=(rs1)+(rs2);當(dāng)i=1時(shí),存儲器地址=(rs1)+Simm13。在RISC中,只有LOAD/STORE指令訪問存儲器。 3)控制轉(zhuǎn)移類指令 控制轉(zhuǎn)移類指令用于改變PC值,SPARC有以下5種控制轉(zhuǎn)移指令。 (1)條件轉(zhuǎn)移(BRANCH

35、):根據(jù)指令中的Cond字段(條件碼)決定程序是否轉(zhuǎn)移。轉(zhuǎn)移地址由相對尋址方式形成。,,5.6.1 SPARC的指令系統(tǒng),(2)轉(zhuǎn)移并連接(JMPL):采用寄存器間址方式形成轉(zhuǎn)移地址,并將本條指令的地址(即PC值)保存在以rd為地址的寄存器中,以備程序返回時(shí)用。 (3)調(diào)用(CALL):采用相對尋址方式形成轉(zhuǎn)移地址。為了擴(kuò)大尋址范圍,本條指令的操作碼只取兩位,位移量有30位。 (4)陷阱(TRAP):采用寄存器間址方式形成轉(zhuǎn)移地址。 (5)從TRAP程序返回(RETT):采用寄存器間址方式形成返回地址。 4)讀/寫專用寄存器指令 SPARC有4個(gè)專用寄存器(PSR、Y、WIM、TBR),其中

36、PSR稱為程序狀態(tài)寄存器。,5.6.2 IBM大型機(jī)指令系統(tǒng),現(xiàn)在簡單介紹IBM 360/370的結(jié)構(gòu)及指令系統(tǒng)。IBM 360是32位機(jī)器,按字節(jié)尋址,支持的數(shù)據(jù)類型有字節(jié)、半字、字、雙字(雙精度實(shí)數(shù))、裝配的十進(jìn)制數(shù)(用4位二進(jìn)制碼表示一個(gè)十進(jìn)制數(shù),一個(gè)字節(jié)放兩個(gè)十進(jìn)制數(shù)字)和未經(jīng)裝配(拆卸)的字符串(一個(gè)字節(jié)放一個(gè)字符)。機(jī)內(nèi)有16個(gè)32位通用寄存器,4個(gè)雙精度(64位)浮點(diǎn)寄存器。 IBM 360/370有5種指令格式,如圖5-10所示。,圖5-10 IBM 360/370 指令格式,5.6.2 IBM大型機(jī)指令系統(tǒng),(1)RR(寄存器-寄存器)格式:兩個(gè)源操作數(shù)都在寄存器中,結(jié)果放在

37、第一個(gè)源寄存器中。 (2)RX(寄存器-變址):第一個(gè)源操作數(shù)與結(jié)果放在同一寄存器中,第二個(gè)源操作數(shù)在存儲器中,其地址為(X2)+(B2)+D2,D2為12位位移量(無符號)。 (3)RS(寄存器-寄存器):R1是存放結(jié)果的目的寄存器,R3為源操作數(shù)寄存器,另一個(gè)操作數(shù)在存儲器中,其地址為(B2)+D2。RS與RX的區(qū)別在于RS是三地址格式,并取消了變址寄存器。 (4)SI(寄存器-立即數(shù)):將立即數(shù)imm(8位)送到存儲器,其地址為(B1)+D1。 (5)SS(存儲器-存儲器):兩個(gè)操作數(shù)都在存儲器,5.6.2 IBM大型機(jī)指令系統(tǒng),中,其地址分別為(B1)+D1和(B2)+D2,(B1)+

38、 D1還是目的地址。SS格式用于十進(jìn)制運(yùn)算與字符串處理,數(shù)據(jù)長度(Length)字段可定義為1個(gè)長度(1256個(gè)字符)或兩個(gè)長度(每一個(gè)為116個(gè)十進(jìn)制數(shù))。,5.6.3 PDP 11與VAX 11基本指令格式,VAX 11/780是DEC公司于1977年推出的VAX系列的第一個(gè)產(chǎn)品,它將PDP 11結(jié)構(gòu)從16位擴(kuò)充到32位。VAX是一種通用寄存器機(jī)器,它有16個(gè)通用寄存器,但是R14是堆棧指針,R15為程序計(jì)數(shù)器PC,是專用的,因此只有其他14個(gè)才是真正的通用寄存器。 VAX的數(shù)據(jù)類型:整數(shù)有8、16、32、64、128位5種類型,浮點(diǎn)數(shù)有32、64、128位3種表示方式。另外有8n位字符串

39、、4n 位BCD碼,其中n為字符或數(shù)字的數(shù)量。VAX還支持固定或可變長度的位串(最長為32位)處理。,,5.6.3 PDP 11與VAX 11基本指令格式,PDP 11是16位小型機(jī),它有兩組通用寄存器(R0R5),在任一時(shí)刻只有一組工作;3個(gè)硬件堆棧指示器(R6);一個(gè)程序計(jì)數(shù)器PC(R7)。根據(jù)兼容性質(zhì),VAX 11應(yīng)包括PDP 11的全部指令與尋址方式,即PDP11上的程序不做任何修改即可在VAX 11上運(yùn)行。現(xiàn)以PDP 11的單操作數(shù)指令與雙操作數(shù)指令為例,對它們的指令格式與尋址方式作簡單介紹。,5.6.3 PDP 11與VAX 11基本指令格式,1.單操作數(shù)指令,,指令格式:,第15

40、6位表示操作碼。第50位組成一個(gè)6位的字段,既是源地址字段也是目的地址字段。第20位說明本指令使用8個(gè)寄存器中的哪一個(gè),第53位表示使用哪種尋址方式。其中第3位為0時(shí)表示直接尋址,第3位為1時(shí)表示間接尋址,第54位表示4種基本尋址方式。 單操作數(shù)指令有清除(CLR)、增1(INC)、減1(DEC)、求補(bǔ)(NEG)、測試(TST)等。,5.6.3 PDP 11與VAX 11基本指令格式,2.雙操作數(shù)指令,指令格式:,第1512位表示操作碼。第116位組成一個(gè)6位字段,為源地址字段(第一操作數(shù));第50位組成另一個(gè)6位字段,既是源操作數(shù)字段(第二操作數(shù)),也是目的操作數(shù)字段。 雙操作數(shù)指令有傳送(

41、MOV)、加(ADD)、減(SUB)、比較(CMP)、按位加(XOR)、邏輯加(BIS)等。,5.6.3 PDP 11與VAX 11基本指令格式,3. 轉(zhuǎn)移指令,,指令格式:,轉(zhuǎn)移地址=PC+2位移量,4. 尋址方式 這里只講述單操作數(shù)指令與雙操作數(shù)指令的尋址方式。 1)直接尋址 表5-1列出了直接尋址的4種基本方式?,F(xiàn)以ADD指令為例,來說明尋址方式。,表5-1 直接尋址方式,5.6.3 PDP 11與VAX 11基本指令格式,(1)ADD R2,R4,操作:R2內(nèi)容加到R4的內(nèi)容上。 例: 操 作 前 操 作 后,,5.6.3 PDP 11與VAX 11基本指令格式,(2)ADD(R

42、2)+,R4 指令代碼062204 操作:R2內(nèi)容為操作數(shù)地址,將此操作數(shù)加到R4的內(nèi)容上,然后R2的內(nèi)容加2。 例: 操作前 操作后,,5.6.3 PDP 11與VAX 11基本指令格式,(3)ADD-(R3),R0 指令代碼064300 操作:R3內(nèi)容減2后作為操作數(shù)地址,將此操作數(shù)加到R0的內(nèi)容上。 例: 操作前 操作后,,5.6.3 PDP 11與VAX 11基本指令格式,(4)ADD 30(R2),20(R5) 指令代碼066265 操作:R2內(nèi)容加30(加和是001130)作為源操作數(shù)地址,R5內(nèi)容加20(加和是002020)作為另一源操作數(shù)

43、和目的操作數(shù)地址,兩個(gè)操作數(shù)相加后,結(jié)果(加和是000002)存放在目的地址(002020)中。 例: 操作前 操作后,,5.6.3 PDP 11與VAX 11基本指令格式,2)間接尋址 表5-2列出了間接尋址的4種方式。間接尋址方式類似于相應(yīng)的直接尋址方式,這里僅舉兩例說明。,表5-2 間接尋址方式,5.6.3 PDP 11與VAX 11基本指令格式,(1)ADD (R2),R1 指令代碼061201 ADD R2,R1 操作前 操作后,,5.6.3 PDP 11與VAX 11基本指令格式,(2)變址間接方式 ADD 1000(R2),R1 指令代碼

44、067201 當(dāng)PC作為通用寄存器時(shí),表5-1和表5-2中列出的尋址方式仍適用,特別是表5-3中所列出的幾種情況有特殊的效果。,表5-3 PC作為通用寄存器的特殊尋址方式,5.6.3 PDP 11與VAX 11基本指令格式,操作前 操作后,,5.6.4 Pentium 的指令系統(tǒng),Pentium 是完全的32位機(jī)。由于它是Intel公司在IBM PC上使用的8088CPU的嫡系后代,所以雖然Pentium 的性能與8088相比已不可同日而語,但可以完全向下兼容到8088。Intel公司的x86系列CPU采用的是CISC指令系統(tǒng)的設(shè)計(jì)思想,指令系統(tǒng)規(guī)模很龐大,但Pentium 卻采

45、用了一個(gè)基于RISC的處理器內(nèi)核,使用了RISC的大量特性,使Intel公司的x86系列微處理器的性能上升到一個(gè)嶄新的層次。 1Pentium 的指令格式 Pentium 的指令格式比較繁雜,最多可有6個(gè)變長域,其中5個(gè)是可選的,如圖5-11所示。,圖5-11 Pentium 的指令格式,5.6.4 Pentium 的指令系統(tǒng),(1)前綴字節(jié):前綴字節(jié)是一個(gè)額外的操作碼,它附加在指令的最前面,用于改變指令的操作。 (2)操作碼字節(jié):操作碼的最低位用于指示操作數(shù)是字節(jié)還是字,次低位用于指示內(nèi)存地址(若需要訪問內(nèi)存的話)是源地址還是目的地址。 (3)模式字節(jié):模式字節(jié)包含了與操作數(shù)有關(guān)的信息。該

46、字節(jié)可分為2位的MOD字段及兩個(gè)3位的寄存器字段REG和R/M。在某些情況下,模式字節(jié)的前3位可用做操作碼擴(kuò)展,這時(shí)操作碼的長度就是11位。,5.6.4 Pentium 的指令系統(tǒng),Pentium 指令系統(tǒng)規(guī)定操作數(shù)中必須有一個(gè)是在寄存器中。模式字段MOD與R/M字段組合定義另一個(gè)操作數(shù)的尋址方式,REG字段規(guī)定了另一個(gè)操作數(shù)所在的寄存器。 從邏輯上來說,EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP中的任意一個(gè)都可以用于源操作數(shù)寄存器和目的操作數(shù)寄存器。但是編碼規(guī)則禁止了其中的某些組合,而把它們用于特殊的目的。,,5.6.4 Pentium 的指令系統(tǒng),(4)額外模式字節(jié)SI

47、B:SIB字節(jié)定義了一個(gè)比例因子(Scale)和兩個(gè)寄存器。當(dāng)出現(xiàn)SIB字節(jié)的時(shí)候,計(jì)算操作數(shù)地址的方法是:先用變址寄存器(Index)乘上1、2、4或者8(由比例因子決定),然后再加上基址寄存器(Base),最后再根據(jù)MOD字節(jié)來決定是否要加上一個(gè)8位或者32位的偏移量。 (5)偏移量:偏移量字節(jié)給出了1、2或者4個(gè)字節(jié)的內(nèi)存地址。 (6)立即數(shù):立即數(shù)字節(jié)給出了1、2或者4個(gè)字節(jié)的常量。,,5.6.4 Pentium 的指令系統(tǒng),2Pentium 的尋址方式 Pentium 具有很大的地址空間,采用了段頁式存儲管理模式,即將內(nèi)存分為16384個(gè)段,每個(gè)段的容量為4GB,按0232-1進(jìn)行編

48、址,地址長度為32位,按照小端排序(低位地址存放在低位字節(jié))的方式存儲字。 Pentium配備了大量的寄存器,包括基本體系結(jié)構(gòu)寄存器、系統(tǒng)級寄存器、調(diào)試和測試寄存器、浮點(diǎn)寄存器等,其中32位的通用寄存器不僅可用于處理32位的數(shù)據(jù),還可用于處理16位和8位數(shù)據(jù),以滿足用戶的不同要求。,,,,5.6.4 Pentium 的指令系統(tǒng),為了滿足向下兼容的要求,Pentium的尋址方式非常沒有規(guī)律,它支持的尋址方式包括立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、基址加變址尋址、相對尋址和用于數(shù)組元素的特殊尋址方式。當(dāng)然,并不是所有的指令都具有所有的尋址方式,也不是所有的寄存器都能用于所有

49、的尋址方式。表5-4給出了32位模式下的尋址方式。,表5-4 Pentium 的32位尋址方式(Mx表示x處的內(nèi)存字),5.6.4 Pentium 的指令系統(tǒng),3Pentium 的指令類型 Pentium指令系統(tǒng)包括如下指令類型:數(shù)據(jù)傳送類指令,算術(shù)運(yùn)算類指令,邏輯運(yùn)算類及位處理指令,字符串操作類指令,程序控制類指令,系統(tǒng)寄存器、表控制類指令,系統(tǒng)和Cache控制類指令,MMX(Multi-Media Extension)指令集。 由于Pentium 的指令系統(tǒng)比較龐大,這里就不具體列出了,需要時(shí)可參看有關(guān)資料。 4Pentium 的指令前綴 Pentium 的指令前綴是可以放在大多數(shù)指令之

50、前的一個(gè)特殊字節(jié),用于控制指令的執(zhí)行過程。例如:,5.6.4 Pentium 的指令系統(tǒng),REP 前綴表示重復(fù)執(zhí)行指令,直到ECX變成0。 REPZ 前綴表示重復(fù)執(zhí)行指令,直到條件碼Z 變?yōu)?。 REPNZ 前綴表示重復(fù)執(zhí)行指令,直到條件碼Z 變?yōu)?。 LOOK 前綴為整條指令保留總線,以允許多處理機(jī)同步。 還有一些指令前綴可以使指令運(yùn)行于16位模式或者32位模式下。這些指令前綴不僅需要指令改變操作數(shù)的長度,而且需要徹底地重新定義操作數(shù)的尋址方式。,5.7 機(jī)器語言、匯編語言和高級語言,計(jì)算機(jī)能夠直接識別并執(zhí)行的語言只能是一種用二進(jìn)制碼表示的、由一系列指令組成的機(jī)器語言。因此,對于任何一個(gè)要解

51、決的問題來說,不管使用哪一種計(jì)算機(jī)語言(匯編語言或高級語言)描述,都必須通過翻譯程序轉(zhuǎn)換成相應(yīng)的機(jī)器語言才能執(zhí)行。 機(jī)器語言存在可讀性差、不容易編程和不容易維護(hù)等許多缺陷,這就給編寫程序造成了許多困難。我們可以用預(yù)先規(guī)定的符號來分別替代二進(jìn)制碼表示的操作碼、操作數(shù)或地址,用便于記憶的符號而不是二進(jìn)制碼來編寫程序要方便得多。,5.7 機(jī)器語言、匯編語言和高級語言,例:設(shè)有兩個(gè)8字節(jié)數(shù)已分別放在雙字變量FIRST和SECONT中。存放時(shí),最低字節(jié)在地址最低處(例如,數(shù)據(jù)123456789ABCDEF0H在內(nèi)存中存放的順序?yàn)?F0H、0DEH、0BCH、9AH、78H、56H、34H、12H),可用

52、下列80386匯編程序?qū)崿F(xiàn)相加。,5.7 機(jī)器語言、匯編語言和高級語言,MOV EAX,F(xiàn)IRST ;取第一個(gè)數(shù)的低32位到EAX ADD EAX,SECOND;與第二個(gè)數(shù)的低32位內(nèi)容相加 MOV THIRD,EAX;結(jié)果的低32位內(nèi)容存放到THIRD的低32位中 MOV EXA,F(xiàn)IRST+4;取第一個(gè)數(shù)的高32位內(nèi)容到EAX ADC EAX,SECOND+4;與第二個(gè)數(shù)高32位相加,再加上一步產(chǎn)生的進(jìn)位 MOV THIRD+4,EAX;結(jié)果送變量THIRD的高32位中,5.7 機(jī)器語言、匯編語言和高級語言,這種用助記符來表示二進(jìn)制碼指令序列的語言,稱為匯編語言(Assembly Lang

53、uage),它基本上是與機(jī)器語言一一對應(yīng)的。顯然,用匯編語言編寫的程序,計(jì)算機(jī)不能直接識別,必須將它翻譯成機(jī)器語言后才能執(zhí)行。翻譯過程是把用助記符表示的操作碼、操作數(shù)或地址用相應(yīng)的二進(jìn)制碼來替代,這個(gè)工作通常是由計(jì)算機(jī)執(zhí)行匯編程序(Assembler)來完成的。 用匯編語言編寫程序,對程序員來說雖然比用機(jī)器語言方便得多,編寫的程序可讀性較好,出錯(cuò)也便于檢查和修改,但它同計(jì)算機(jī)的硬件結(jié)構(gòu)、指令系統(tǒng)的設(shè)置關(guān)系非常密切。,5.7 機(jī)器語言、匯編語言和高級語言,因此,匯編語言仍然是一種面向計(jì)算機(jī)硬件本身的語言,程序員用它編寫程序必須十分熟悉計(jì)算機(jī)硬件結(jié)構(gòu)的配置、指令系統(tǒng)和尋址方式,這對程序員來說要求是

54、很高的。同時(shí),匯編指令的基本操作簡單(主要是簡單的算術(shù)/邏輯運(yùn)算和數(shù)據(jù)傳送),描述問題的能力差,用它編寫程序工作量大,源程序較長,可讀性仍然不好。匯編語言依賴于計(jì)算機(jī)的硬件結(jié)構(gòu)和指令系統(tǒng),而不同的機(jī)器有不同的結(jié)構(gòu)和指令,因而用它編寫的程序不能在其他類型的機(jī)器上運(yùn)行。 高級語言(High Level Language)FORTRAN、C、PASCAL、COBOL等就是為了克服匯編語言的這些缺點(diǎn)而發(fā)展起來的。高級語言與計(jì)算機(jī)的硬件結(jié)構(gòu),5.7 機(jī)器語言、匯編語言和高級語言,及指令系統(tǒng)無關(guān),因此用高級語言編寫程序,無須考慮機(jī)器字長、寄存器、狀態(tài)、尋址方式和內(nèi)存單元地址等,因而比使用匯編語言容易得多。

55、高級語言的表達(dá)方式比較接近于自然語言,描述問題的能力強(qiáng),通用性、可讀性和可維護(hù)性都很好。 顯然,就編寫程序來說,高級語言比匯編語言優(yōu)越得多,但它并非完美無缺,它存在的顯著缺點(diǎn)是:用高級語言編寫的程序,必須翻譯成機(jī)器語言才能執(zhí)行,這一工作通常是由計(jì)算機(jī)執(zhí)行編譯程序來完成的。由于編譯過程既復(fù)雜又死板,翻譯出來的機(jī)器語言程序非常冗長,如果讓有經(jīng)驗(yàn)的程序員用匯編語言來編寫同樣功能的程序,至少可以節(jié)省2/3的內(nèi)存空間,速度則要快一倍以上。由于高級語言,5.7 機(jī)器語言、匯編語言和高級語言,程序看不見機(jī)器的硬件結(jié)構(gòu),因而不能用它來編寫需要訪問機(jī)器硬件資源的系統(tǒng)軟件或設(shè)備控制軟件。 為了克服高級語言不能直接

56、訪問機(jī)器硬件資源(如某個(gè)寄存器或存儲單元)的缺陷,一些高級語言(如C、PASCAL、FORTRAN等)提供了與匯編語言之間的調(diào)用接口。用匯編語言編寫的程序,可作為高級語言的一個(gè)外部過程或函數(shù),利用堆棧來傳遞參數(shù)或參數(shù)的地址(如何傳遞參數(shù)與高級語言的版本有關(guān))。兩者的源程序通過編譯或匯編生成目標(biāo)(OBJ)文件后,再利用連接程序(LINKER)把它們連接成可執(zhí)行文件,便可在機(jī)器上運(yùn)行。采用這種方法,用高級語言編寫程序時(shí),若要使用機(jī)器的硬件資源,則可調(diào)用匯編程序來實(shí)現(xiàn)。,5.7 機(jī)器語言、匯編語言和高級語言,匯編語言和高級語言各有其特點(diǎn)和優(yōu)點(diǎn)。匯編語言與機(jī)器硬件關(guān)系密切,用它編寫的程序緊湊、占內(nèi)存小、速度快,特別適合于編寫經(jīng)常與硬件打交道的系統(tǒng)軟件;而高級語言不涉及機(jī)器的硬件結(jié)構(gòu),通用性強(qiáng),編寫程序容易,特別適合于編寫與硬件沒有直接關(guān)系的應(yī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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!