版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章指令系統(tǒng)9/22/20239/22/20231備注第3章
指令和指令系統(tǒng)是計(jì)算機(jī)中最基本的概念。指令是指示計(jì)算機(jī)執(zhí)行某些操作的命令,一臺(tái)計(jì)算機(jī)的所有指令的集合構(gòu)成該機(jī)的指令系統(tǒng),也稱指令集。指令系統(tǒng)是計(jì)算機(jī)的主要屬性,位于硬件和軟件的交界面上。本章將討論一般計(jì)算機(jī)的指令系統(tǒng)所涉及的基本問(wèn)題。
9/22/20232第3章裸機(jī)軟件指令系統(tǒng)9/22/202333.1
指令格式3.1.1機(jī)器指令的基本格式
一條指令就是機(jī)器語(yǔ)言的一個(gè)語(yǔ)句*,它是一組有意義的二進(jìn)制代碼。指令的基本格式如下:操作碼字段 地址碼字段 操作碼:指明操作的性質(zhì)及功能。操作碼
地址碼:指明操作數(shù)的地址,特殊情況下也可能直接給出操作數(shù)本身。地址碼9/22/20234備注3.1指令格式
指令的長(zhǎng)度是指一條指令中所包含的二進(jìn)制代碼的位數(shù),它取決于操作碼字段的長(zhǎng)度、操作數(shù)地址的個(gè)數(shù)及長(zhǎng)度。指令長(zhǎng)度應(yīng):
①盡可能短
②等于字節(jié)的整數(shù)倍
指令長(zhǎng)度可以等于機(jī)器字長(zhǎng),也可以大于或小于機(jī)器字長(zhǎng)。*在一個(gè)指令系統(tǒng)中,若所有指令的長(zhǎng)度都是相等的,稱為定長(zhǎng)指令字結(jié)構(gòu);若各種指令的長(zhǎng)度隨指令功能而異,稱為變長(zhǎng)指令字結(jié)構(gòu)。9/22/20235備注3.1指令格式3.1.2地址碼結(jié)構(gòu)對(duì)于一條雙操作數(shù)指令,除操作碼之外,還應(yīng)包含以下信息:第一操作數(shù)地址,用A1表示;第二操作數(shù)地址,用A2表示;操作結(jié)果存放地址,用A3表示;下條將要執(zhí)行指令的地址,用A4表示。這些信息可以在指令中明顯的給出,稱為顯地址;也可以依照某種事先的約定,用隱含的方式給出,稱為隱地址。下面以雙操作數(shù)指令為例討論地址碼結(jié)構(gòu)。9/22/202363.1指令格式1.四地址指令OPA1A2A3A4
(A1)OP(A2)→A3*A4=下條將要執(zhí)行指令的地址9/22/20237備注3.1指令格式2.三地址指令OPA1A2A3(A1)OP(A2)→A3(PC)+1=下條將要執(zhí)行指令的地址*程序計(jì)數(shù)器:存放當(dāng)前指令地址執(zhí)行一條三地址指令需4次訪問(wèn)主存。9/22/20238備注(A1)OP(A2)→A13.1指令格式3.二地址指令OPA1A2(PC)+1=下條將要執(zhí)行指令的地址
A1中原存內(nèi)容在指令執(zhí)行后被破壞。目的操作數(shù)地址源操作數(shù)地址執(zhí)行一條二地址指令需4次訪問(wèn)主存。9/22/20239(Acc)OP(A1)→Acc3.1
指令格式4.一地址指令OPA1(PC)+1=下條將要執(zhí)行指令的地址累加寄存器執(zhí)行一條一地址指令需2次訪問(wèn)主存。9/22/2023103.1指令格式5.零地址指令OP操作數(shù)地址是隱含的。參加運(yùn)算的操作數(shù)放在堆棧中,運(yùn)算結(jié)果也放在堆棧中。有關(guān)堆棧的概念將在稍后討論。9/22/2023113.1指令格式
指令中地址個(gè)數(shù)的選取要考慮諸多的因素。從縮短程序長(zhǎng)度,用戶使用方便,增加操作并行度等方面來(lái)看,選用三地址指令格式較好;從縮短指令長(zhǎng)度,減少訪存次數(shù),簡(jiǎn)化硬件設(shè)計(jì)等方面來(lái)看,一地址指令格式較好。對(duì)于同一個(gè)問(wèn)題,用三地址指令編寫的程序最短,但指令長(zhǎng)度最長(zhǎng),而用二、一、零地址指令來(lái)編寫程序,程序的長(zhǎng)度一個(gè)比一個(gè)長(zhǎng),但指令的長(zhǎng)度一個(gè)比一個(gè)短。9/22/202312備注3.1指令格式3.1.3指令的操作碼
指令系統(tǒng)中的每一條指令都有一個(gè)唯一確定的操作碼,指令不同,其操作碼的編碼也不同。*為了能表示整個(gè)指令系統(tǒng)中的全部指令,指令的操作碼字段應(yīng)當(dāng)具有足夠的位數(shù)。指令操作碼的編碼可以分為規(guī)整型和非規(guī)整型兩類:規(guī)整型(定長(zhǎng)編碼)非規(guī)整型(變長(zhǎng)編碼)注意9/22/2023133.1指令格式
1.規(guī)整型
操作碼字段的位數(shù)和位置是固定的。假定:指令系統(tǒng)共有m條指令,指令中操作碼字段的位數(shù)為N位,則有如下關(guān)系式:
N≥log2m
(也就是2N≥m)IBM370機(jī)(字長(zhǎng)32位)的指令可分為三種不同的長(zhǎng)度形式:半字長(zhǎng)指令(16位)、單字長(zhǎng)指令(32位)和一個(gè)半字長(zhǎng)指令(48位)。不論指令的長(zhǎng)度為多少位,其中操作碼字段一律都是8位,8位操作碼字段允許容納256條指令,實(shí)際上在IBM370機(jī)中僅有183條指令。9/22/2023143.1指令格式9/22/2023153.1指令格式
定長(zhǎng)編碼對(duì)于簡(jiǎn)化硬件設(shè)計(jì),減少指令譯碼的時(shí)間是非常有利的,但存在著信息冗余。9/22/2023163.1指令格式2.非規(guī)整型
操作碼字段的位數(shù)不固定,且分散地放在指令字的不同位置上。
PDP-11機(jī)(字長(zhǎng)16位)的指令分為單字長(zhǎng)(16位)、兩字長(zhǎng)(32位)、三字長(zhǎng)(48位)三種,操作碼字段占4~16位不等,可遍及整個(gè)指令長(zhǎng)度。操作碼字段的位數(shù)和位置不固定將增加指令譯碼和分析的難度,使控制器的設(shè)計(jì)復(fù)雜化。9/22/2023173.1指令格式9/22/2023183.1指令格式最常用的非規(guī)整型編碼方式是擴(kuò)展操作碼法:讓操作數(shù)地址個(gè)數(shù)多的指令(如三地址指令)的操作碼字段短些,操作數(shù)地址個(gè)數(shù)少的指令(如一或零地址指令)的操作碼字段長(zhǎng)些。(這是一個(gè)操作碼和地址碼長(zhǎng)度的分配原則)注意9/22/2023193.1指令格式例如:設(shè)某機(jī)的指令長(zhǎng)度為16位,操作碼字段為4位,有三個(gè)4位的地址碼字段,其格式為:如果按照定長(zhǎng)編碼的方法,4位操作碼字段最多只能表示16條不同的三地址指令。(定長(zhǎng)編碼的局限性就體現(xiàn)出來(lái)了)OPA1A2A34位4位4位4位9/22/2023203.1指令格式OPA1A2A34位4位4位4位OP…15條三地址指令0000XXXXYYYYZZZZ1110XXXXYYYYZZZZ1111…15條二地址指令11110000XXXXYYYY11111110XXXXYYYY11111111…15條一地址指令111111110000XXXX111111111110XXXX111111111111…16條零地址指令11111111111100001111111111111111擴(kuò)展窗口擴(kuò)展窗口擴(kuò)展窗口OPA1A2OPA1OP9/22/2023213.2尋址技術(shù)
尋址,指的是尋找操作數(shù)的地址或下一條將要執(zhí)行的指令地址。尋址技術(shù)包括編址方式和尋址方式。9/22/2023223.2尋址技術(shù)3.2.1編址方式1.編址通常,指令中的地址碼字段將指出操作數(shù)的來(lái)源和去向,而操作數(shù)則存放在相應(yīng)的存儲(chǔ)設(shè)備中。在計(jì)算機(jī)中需要編址的設(shè)備主要有CPU中的通用寄存器、主存儲(chǔ)器和輸入輸出設(shè)備等3種。9/22/2023233.2尋址技術(shù)2.編址單位(1)字編址
編址單位=訪問(wèn)單位每個(gè)編址單位所包含的信息量(二進(jìn)制位數(shù))與讀或?qū)懸淮渭拇嫫?、主存所獲得的信息量是相同的。早期的大多數(shù)機(jī)器都采用這種編址方式。9/22/2023243.2尋址技術(shù)(2)字節(jié)編址字節(jié)編址是為了適應(yīng)非數(shù)值計(jì)算的需要。字節(jié)編址方式使編址單位與信息的基本單位(一個(gè)字節(jié))相一致,這是它的最大優(yōu)點(diǎn)。然而,如果主存的訪問(wèn)單位也是一個(gè)字節(jié)的話,那么主存的頻帶就太窄了。編址單位<訪問(wèn)單位
通常主存的訪問(wèn)單位是編址單位的若干倍。(3)位編址也有部分計(jì)算機(jī)系統(tǒng)采用位編址方式。9/22/2023253.2尋址技術(shù)3.指令中地址碼的位數(shù)指令格式中每個(gè)地址碼的位數(shù)是與主存容量和最小尋址單位(即編址單位)有關(guān)聯(lián)的。主存容量越大,所需的地址碼位數(shù)就越長(zhǎng)。對(duì)于相同容量來(lái)說(shuō),如果以字節(jié)為最小尋址單位,地址碼的位數(shù)就需要長(zhǎng)些;如果以字為最小尋址單位(假定字長(zhǎng)為16位或更長(zhǎng)),地址碼的位數(shù)可以減少。設(shè)某機(jī)主存容量為220個(gè)字節(jié),機(jī)器字長(zhǎng)32位。若最小尋址單位為字節(jié)(按字節(jié)編址),其地址碼應(yīng)為20位;若最小尋址單位為字(按字編址),其地址碼只需18位。9/22/202326備注3.2尋址技術(shù)3.2.2數(shù)據(jù)尋址和指令尋址尋址可以分為數(shù)據(jù)尋址和指令尋址。尋找操作數(shù)的地址稱為數(shù)據(jù)尋址,數(shù)據(jù)尋址方式較多,其最終目的都是尋找所需要的操作數(shù)。尋找下一條將要執(zhí)行的指令地址稱為指令尋址,指令尋址比較簡(jiǎn)單,它又可以細(xì)分為順序?qū)ぶ泛吞S尋址。注意9/22/2023273.2尋址技術(shù)
順序?qū)ぶ房赏ㄟ^(guò)程序計(jì)數(shù)器PC加1,自動(dòng)形成下一條指令的地址;跳躍尋址則需要通過(guò)程序轉(zhuǎn)移類指令實(shí)現(xiàn)。
跳躍尋址的轉(zhuǎn)移地址形成方式有三種:直接(絕對(duì))、相對(duì)和間接尋址,它與下面介紹的數(shù)據(jù)尋址方式中的直接、相對(duì)和間接尋址是相同的,只不過(guò)尋找到的不是操作數(shù)的有效地址而是轉(zhuǎn)移的有效地址而已。9/22/202328備注3.2尋址技術(shù)
3.2.3基本的數(shù)據(jù)尋址方式
尋址方式是根據(jù)指令中給出的地址碼字段尋找真實(shí)操作數(shù)地址的方式。
指令中的形式地址A───→有效地址EA尋址方式OP立即數(shù)在取指令時(shí),操作碼和操作數(shù)被同時(shí)取出,不必再次訪問(wèn)存儲(chǔ)器,從而提高了指令的執(zhí)行速度。但是,因?yàn)椴僮鲾?shù)是指令的一部分,不能被修改,且立即數(shù)的大小將受到指令長(zhǎng)度的限制。1.立即尋址9/22/202329備注3.2尋址技術(shù)2.寄存器尋址指令中地址碼部分給出某一通用寄存器的編號(hào),所指定的寄存器中存放著操作數(shù)。兩個(gè)明顯的優(yōu)點(diǎn):
從寄存器存取數(shù)據(jù)比主存快得多;
由于寄存器的數(shù)量較少,其地址碼字段比主存單元地址字段短得多。操作數(shù)OP指令寄存器
通用寄存器RiR5操作數(shù)S=(Ri)操作數(shù)EA=RiR59/22/202330操作數(shù)OP指令寄存器主存儲(chǔ)器A3.2尋址技術(shù)3.直接尋址指令中地址碼字段給出的地址A就是操作數(shù)的有效地址:
EA=A
由于操作數(shù)地址是不能修改的,與程序本身所在的位置無(wú)關(guān),所以又叫做絕對(duì)尋址方式。操作數(shù)100操作數(shù)S=(A)1009/22/2023313.2尋址技術(shù)4.間接尋址指令中給出的地址A不是操作數(shù)的地址,而是存放操作數(shù)地址的地址。
EA=(A)
通常在指令格式中劃出一位@作為標(biāo)志位。@=0直接尋址
@=1間接尋址操作數(shù)EAOP指令寄存器主存儲(chǔ)器A操作數(shù)@100操作數(shù)S=((A))1002002009/22/2023323.2尋址技術(shù)間接尋址要比直接尋址靈活得多,它的主要優(yōu)點(diǎn)為:
擴(kuò)大了尋址范圍,可用指令的短地址訪問(wèn)大的主存空間。
可將主存單元作為程序的地址指針,用以指示操作數(shù)在主存中的位置。當(dāng)操作數(shù)的地址需要改變時(shí),不必修改指令,只需修改存放有效地址的那個(gè)主存單元(間接地址單元)的內(nèi)容就可以了。9/22/2023333.2尋址技術(shù)
除去一級(jí)間接尋址外,還有多級(jí)間接尋址。多級(jí)間接尋址為取得操作數(shù)需要多次訪問(wèn)主存,即使在找到操作數(shù)有效地址后,還需再訪問(wèn)一次主存才可得到真正的操作數(shù)。多級(jí)間接標(biāo)志:
0:找到有效地址
1:繼續(xù)間接尋址EAOP指令寄存器主存儲(chǔ)器A@110二級(jí)間址三級(jí)間址操作數(shù)100操作數(shù)1
2001
300050100200300509/22/202334EAOP指令寄存器主存儲(chǔ)器Ri操作數(shù)@通用寄存器3.2尋址技術(shù)5.寄存器間接尋址指令中的地址碼給出某一通用寄存器的編號(hào),被指定的寄存器中存放操作數(shù)的有效地址,而操作數(shù)則存放在主存單元中。這種尋址方式的指令較短,并且在取指后只需一次訪存便可得到操作數(shù)。操作數(shù)操作數(shù)S=((Ri))100R5EA=(Ri)R51009/22/2023353.2尋址技術(shù)6.變址尋址把指令給出的形式地址A與變址寄存器RX的內(nèi)容相加,形成操作數(shù)有效地址:
EA=A+(RX)RX的內(nèi)容為變址值。120OP指令寄存器主存儲(chǔ)器A操作數(shù)RX變址值XALU變址寄存器RX操作數(shù)10020操作數(shù)S=(A+(RX))
9/22/2023363.2尋址技術(shù)變址尋址是一種廣泛采用的尋址方式,通常指令中的形式地址作為基準(zhǔn)地址,而RX的內(nèi)容作為修改量。在遇到需要頻繁修改地址時(shí),無(wú)須修改指令,只要修改變址值就可以了。例如:要把一組連續(xù)存放在主存單元中的數(shù)據(jù)(首地址是A)依次傳送到另一存儲(chǔ)區(qū)(首地址為B)中去,則只需在指令中指明兩個(gè)存儲(chǔ)區(qū)的首地址A和B(形式地址),用同一變址寄存器提供修改量K,即可實(shí)現(xiàn)(A+K)→B+K。變址寄存器的內(nèi)容在每次傳送之后自動(dòng)地修改。9/22/2023373.2尋址技術(shù)7.基址尋址將基址寄存器Rb的內(nèi)容與位移量D相加,形成操作數(shù)有效地址:
EA=(Rb)+D
基址寄存器的內(nèi)容稱為基址值,指令的地址碼字段是一個(gè)位移量,位移量可正可負(fù)。OP指令寄存器主存儲(chǔ)器D操作數(shù)Rb基址值A(chǔ)LU基址寄存器Rb120操作數(shù)20100操作數(shù)S=((Rb)+D)9/22/2023383.2尋址技術(shù)基址尋址和變址尋址在形成有效地址時(shí)所用的算法是相同的,而且在一些計(jì)算機(jī)中,這兩種尋址方式都是由同樣的硬件來(lái)實(shí)現(xiàn)的。但這兩種尋址方式應(yīng)用的場(chǎng)合不同,變址尋址是面向用戶的,用于訪問(wèn)字符串、向量和數(shù)組等成批數(shù)據(jù);而基址尋址面向系統(tǒng),主要用于邏輯地址和物理地址的變換,用以解決程序在主存中的再定位和擴(kuò)大尋址空間等問(wèn)題。在某些大型機(jī)中,基址寄存器只能由特權(quán)指令來(lái)管理,用戶指令無(wú)權(quán)操作和修改。9/22/202339備注操作數(shù)操作數(shù)OP指令寄存器主存儲(chǔ)器D指令指令地址ALU程序計(jì)數(shù)器PC-D+D3.2尋址技術(shù)8.相對(duì)尋址相對(duì)尋址是基址尋址的一種變通,由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,即:
EA=(PC)+D
位移量指出的是操作數(shù)和現(xiàn)行指令之間的相對(duì)位置。120操作數(shù)20100操作數(shù)S=((PC)+D)100-20E0操作數(shù)9/22/2023403.2尋址技術(shù)
相對(duì)尋址方式的特點(diǎn):
操作數(shù)的地址不是固定的,它隨著PC值的變化而變化,并且與指令地址之間總是相差一個(gè)固定值
D。當(dāng)指令地址改變時(shí),由于其位移量不變,使得操作數(shù)與指令在可用的存儲(chǔ)區(qū)內(nèi)一起移動(dòng),所以仍能保證程序的正確執(zhí)行。采用PC相對(duì)尋址方式編寫的程序可在主存中任意浮動(dòng),它放在主存的任何地方,所執(zhí)行的效果都是一樣的。
由于指令中給出的位移量可正、可負(fù),所以對(duì)于指令地址而言,操作數(shù)地址可能在指令地址之前或之后。9/22/2023413.2尋址技術(shù)9.頁(yè)面尋址頁(yè)面尋址相當(dāng)于將整個(gè)主存空間分成若干個(gè)大小相同的區(qū),每個(gè)區(qū)稱為一頁(yè),每頁(yè)有若干個(gè)主存單元。每頁(yè)都有自己的編號(hào),稱為頁(yè)面地址;頁(yè)面內(nèi)的每個(gè)主存單元也有自己的編號(hào),稱為頁(yè)內(nèi)地址。這樣,操作數(shù)的有效地址就被分為兩部分:前部為頁(yè)面地址,后部為頁(yè)內(nèi)地址。頁(yè)內(nèi)地址頁(yè)面地址9/22/202342 根據(jù)頁(yè)面地址的來(lái)源不同,頁(yè)面尋址又可以分成3種不同的方式: ①基頁(yè)尋址,又稱零頁(yè)尋址。由于頁(yè)面地址全等于0,所以有效地址EA=0∥A(∥在這里表示簡(jiǎn)單拼接),操作數(shù)S在零頁(yè)面中,基頁(yè)尋址實(shí)際上就是直接尋址。 ②當(dāng)前頁(yè)尋址。頁(yè)面地址就等于程序計(jì)數(shù)器PC的高位部分的內(nèi)容,所以有效地址EA=(PC)H∥A,操作數(shù)S與指令本身處于同一頁(yè)面中。 ③頁(yè)寄存器尋址。頁(yè)面地址取自頁(yè)寄存器,與形式地址相拼接形成有效地址。
3.2尋址技術(shù)9/22/2023433.2尋址技術(shù) 有些計(jì)算機(jī)在指令格式中設(shè)置了一個(gè)頁(yè)面標(biāo)志位(Z/C)。當(dāng)Z/C=0,表示零頁(yè)尋址,當(dāng)Z/C=1,表示當(dāng)前頁(yè)尋址。9/22/202344各種數(shù)據(jù)尋址方式獲得數(shù)據(jù)的速度(由快到慢)立即尋址寄存器尋址直接尋址寄存器間接尋址頁(yè)面尋址變址尋址(基址尋址、相對(duì)尋址)一級(jí)間接尋址多級(jí)間接尋址3.2尋址技術(shù)注意9/22/2023453.2尋址技術(shù)為了能區(qū)分出各種不同尋址方式,必須在指令中給出標(biāo)識(shí)。標(biāo)識(shí)的方式通常有兩種:顯式和隱式。顯式的方法就是在指令中設(shè)置專門的尋址方式(MOD)字段,用二進(jìn)制代碼來(lái)表明尋址方式類型。隱式的方式是由指令的操作碼字段說(shuō)明指令格式并隱含約定尋址方式。AMODOP顯式AOP隱式9/22/2023463.2尋址技術(shù)注意,一條指令若有兩個(gè)或兩個(gè)以上的地址碼時(shí),各地址碼可采用不同的尋址方式。例如,源地址采用一種尋址方式,而目的地址采用另一種尋址方式。
MOVAX,(BX)寄存器直接尋址寄存器間接尋址9/22/2023473.3堆棧與堆棧操作堆棧是一種按特定順序進(jìn)行存取的存儲(chǔ)區(qū),這種特定順序可歸結(jié)為“后進(jìn)先出”(LIFO)或“先進(jìn)后出”(FILO)。9/22/2023483.3堆棧與堆棧操作3.3.1堆棧結(jié)構(gòu)1.寄存器堆棧用一組專門的寄存器構(gòu)成寄存器堆棧,又稱為硬堆棧。這種堆棧的棧頂是固定的,寄存器組中各寄存器是相互連接的,它們之間具有對(duì)應(yīng)位自動(dòng)推移的功能,即可將一個(gè)寄存器的內(nèi)容推移到相鄰的另一個(gè)寄存器中去。9/22/2023493.3堆棧與堆棧操作
9/22/2023503.3堆棧與堆棧操作2.存儲(chǔ)器堆棧從主存中劃出一段區(qū)域來(lái)作堆棧,這種堆棧又稱為軟堆棧,堆棧的大小可變,棧底固定,棧頂浮動(dòng),故需要一個(gè)專門的硬件寄存器作為堆棧棧頂指針SP,簡(jiǎn)稱棧指針。棧指針?biāo)付ǖ闹鞔鎲卧?,就是堆棧的棧頂。高地址低地址堆棧區(qū)自底向上生成方式的堆棧9/22/2023513.3堆棧與堆棧操作堆棧的棧底地址大于棧頂?shù)刂?,通常棧指針始終指向棧頂?shù)臐M單元。進(jìn)棧時(shí),SP的內(nèi)容需要先自動(dòng)減1,然后再將數(shù)據(jù)壓入堆棧。20001FFF(SP)-1→SP
修改棧指針(A)→(SP)
將A中的數(shù)據(jù)壓入堆棧SP2000A2000原棧頂單元現(xiàn)棧頂單元1FFF注意9/22/2023523.3堆棧與堆棧操作出棧時(shí),需要先將堆棧中的數(shù)據(jù)彈出,然后SP的內(nèi)容再自動(dòng)加1。2000((SP))→A
將棧頂內(nèi)容彈出,送入A中(SP)+1→SP
修改棧指針SP1FFFA1FFF原棧頂單元現(xiàn)棧頂單元1FFF2000注意9/22/2023533.3堆棧與堆棧操作3.3.2堆棧操作在一般計(jì)算機(jī)中,堆棧主要用來(lái)暫存中斷斷點(diǎn)、子程序調(diào)用時(shí)的返回地址、狀態(tài)標(biāo)志及現(xiàn)場(chǎng)信息等,也可用于子程序調(diào)用時(shí)參數(shù)的傳遞,所以用于訪問(wèn)堆棧的指令只有進(jìn)棧(壓入)和出棧(彈出)兩種。在堆棧計(jì)算機(jī)(如HP-3000、B5000等)中,沒(méi)有一般計(jì)算機(jī)中必備的通用寄存器,因此堆棧就成為提供操作數(shù)和保存運(yùn)算結(jié)果的唯一場(chǎng)所。9/22/2023543.4指令類型3.4.1數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令主要用于實(shí)現(xiàn)寄存器與寄存器之間,寄存器與主存單元之間以及兩個(gè)主存單元之間的數(shù)據(jù)傳送。數(shù)據(jù)傳送類指令又可以細(xì)分為:
1.一般傳送指令
一般傳送指令(MOV)具有數(shù)據(jù)復(fù)制的性質(zhì),即數(shù)據(jù)從源地址傳送到目的地址,而源地址中的內(nèi)容保持不變。傳送通常以字節(jié)、字、雙字或數(shù)組為單位,特殊情況下也能按位為單位進(jìn)行傳送。9/22/2023553.4指令類型
⑴主存單元之間的傳送
MOVmem2,mem1,其含義為(mem1)→mem2⑵從主存單元傳送到寄存器
MOVreg,mem,其含義為(mem)→reg
在有些計(jì)算機(jī)中,該指令用助記符LOAD表示,又稱為取數(shù)指令。9/22/2023563.4指令類型
⑶從寄存器傳送到主存單元
MOVmem,reg,其含義為(reg)→mem
在有些計(jì)算機(jī)里,該指令用助記符STORE表示,又稱為存數(shù)指令。
⑷寄存器之間的傳送
MOVreg2,reg1,其含義為(reg1)→reg29/22/2023573.4指令類型2.堆棧操作指令
堆棧指令是一種特殊的數(shù)據(jù)傳送指令,分為進(jìn)棧(PUSH)和出棧(POP)兩種。因?yàn)槎褩#ㄖ杠浂褩#┦侵鞔娴囊粋€(gè)特定區(qū)域,所以對(duì)堆棧的操作也就是對(duì)存儲(chǔ)器的操作。3.數(shù)據(jù)交換指令前述指令的傳送都是單方向的,然而,數(shù)據(jù)傳送也可以是雙方向的,即將源操作數(shù)與目的操作數(shù)(一個(gè)字節(jié)或一個(gè)字)相互交換位置。9/22/2023583.4指令類型3.4.2運(yùn)算類指令1.算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令主要用于進(jìn)行定點(diǎn)和浮點(diǎn)運(yùn)算。這類運(yùn)算包括加、減、乘、除以及加1、減1、比較等,有些機(jī)器還有十進(jìn)制算術(shù)運(yùn)算指令。絕大多數(shù)算術(shù)運(yùn)算指令都會(huì)影響到狀態(tài)標(biāo)志位,通常的標(biāo)志位有進(jìn)位、溢出、全零、正負(fù)和奇偶等。9/22/2023593.4指令類型2.邏輯運(yùn)算指令一般計(jì)算機(jī)都具有與、或、非、異或等邏輯運(yùn)算指令。這類指令在沒(méi)有設(shè)置專門的位操作指令的計(jì)算機(jī)中常用于對(duì)數(shù)據(jù)字(字節(jié))中某些位(一位或多位)進(jìn)行操作。(1)按位測(cè)(位檢查)XXXXXXXXX∧00010000000X0000ANDAL,10H9/22/2023603.4指令類型(2)按位清(位清除)XXXXXXXX∧11111101XXXXXX0XX(3)按位置(位設(shè)置)XXXXXXXX∨01000000X1XXXXXXXORAL,40HANDAL,FDH9/22/2023613.4指令類型
(4)按位修改利用“異或”指令可以修改目的操作數(shù)的某些位,只要源操作數(shù)的相應(yīng)位為“1”,其余位為“0”,異或之后就達(dá)到了修改這些位的目的(因?yàn)锳⊕1=A,A⊕0=A)。XXXXXXXX⊕00001000XXXXXXXXX9/22/2023623.4指令類型
(5)判符合若兩數(shù)相符合,其異或之后的結(jié)果必定為“0”。(6)清0
XORAL,AL9/22/2023633.4指令類型3.移位指令分為算術(shù)移位、邏輯移位和循環(huán)移位3類,它們又可分為左移和右移兩種。算術(shù)移位的對(duì)象是帶符號(hào)數(shù),算術(shù)移位過(guò)程中必須保持操作數(shù)的符號(hào)不變,左移一位,數(shù)值
2,右移一位,數(shù)值
2。9/22/202364備注3.4指令類型邏輯移位的對(duì)象是沒(méi)有數(shù)值含義的二進(jìn)制代碼,因此移位時(shí)不必考慮符號(hào)問(wèn)題。循環(huán)移位又按進(jìn)位位是否一起循環(huán)分為兩類:
小循環(huán)(不帶進(jìn)位循環(huán))
大循環(huán)(帶進(jìn)位循環(huán))9/22/2023653.4指令類型
3.4.3程序控制類指令程序控制類指令用于控制程序的執(zhí)行方向,并使程序具有測(cè)試、分析與判斷的能力。1.轉(zhuǎn)移指令在程序執(zhí)行過(guò)程中,通常采用轉(zhuǎn)移指令來(lái)改變程序的執(zhí)行方向。轉(zhuǎn)移指令又分無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移兩種。
無(wú)條件轉(zhuǎn)移指令(JMP)不受任何條件的約束,直接把程序轉(zhuǎn)向新的位置執(zhí)行。
9/22/2023663.4指令類型
條件轉(zhuǎn)移指令必須受到條件的約束,若條件滿足時(shí)才轉(zhuǎn)向新的位置執(zhí)行,否則程序仍順序執(zhí)行。無(wú)論是條件轉(zhuǎn)移還是無(wú)條件轉(zhuǎn)移都需要給出轉(zhuǎn)移地址。若采用相對(duì)尋址方式,轉(zhuǎn)移地址為當(dāng)前指令地址(即PC的值)和指令中給出的位移量之和,即:(PC)+位移量→PC;若采用絕對(duì)尋址方式,轉(zhuǎn)移地址由指令的地址碼直接給出,即:A→PC。9/22/2023673.4指令類型2.子程序調(diào)用指令
子程序是一組可以公用的指令序列,只要知道子程序的入口地址就能調(diào)用它。從主程序轉(zhuǎn)向子程序的指令稱為子程序調(diào)用指令(CALL);而從子程序轉(zhuǎn)向主程序的指令稱為返回指令(RET)。主程序CALLA子程序RETA:9/22/2023683.4指令類型主程序和子程序是相對(duì)的概念,調(diào)用其它程序的程序是主程序;被其它程序調(diào)用的程序是子程序。轉(zhuǎn)子指令安排在主程序中需要調(diào)用子程序的地方,轉(zhuǎn)子指令是一地址指令。9/22/2023693.4指令類型子程序調(diào)用指令和轉(zhuǎn)移指令都可以改變程序的執(zhí)行順序,但兩者存在著很大的差別:
轉(zhuǎn)移指令轉(zhuǎn)移到指令中給出的轉(zhuǎn)移地址處執(zhí)行指令,不存在返回要求,沒(méi)有返回地址問(wèn)題;而子程序調(diào)用指令必須以某種方式保存返回地址,以便返回時(shí)能找到原來(lái)的位置。
轉(zhuǎn)移指令用于實(shí)現(xiàn)同一程序內(nèi)的轉(zhuǎn)移;而子程序調(diào)用指令轉(zhuǎn)去執(zhí)行一段子程序,實(shí)現(xiàn)的是程序與程序之間的轉(zhuǎn)移。9/22/2023703.4指令類型保存返回地址的方法除去堆棧以外還有:
⑴用子程序的第一個(gè)字單元存放返回地址。轉(zhuǎn)子指令把返回地址存放在子程序的第一個(gè)字單元中,子程序從第二個(gè)字單元開(kāi)始執(zhí)行。返回時(shí)將第一個(gè)字單元地址作為間接地址,采用間址方式返回主程序。這種方法可以實(shí)現(xiàn)多重轉(zhuǎn)子,但不能實(shí)現(xiàn)遞歸循環(huán),Cyber70采用的就是這種方法。9/22/2023713.4指令類型
⑵用寄存器存放返回地址。轉(zhuǎn)子指令先把返回地址放到某一個(gè)寄存器中,再由子程序?qū)⒓拇嫫髦械膬?nèi)容轉(zhuǎn)移到另一個(gè)安全的地方,比如存儲(chǔ)器的某個(gè)區(qū)域。這是一種較為安全的方法,可以實(shí)現(xiàn)子程序的遞歸循環(huán)。IBM370采用這種方法,這種方法相對(duì)增加了子程序的復(fù)雜程度。9/22/2023723.4指令類型3.返回指令從子程序轉(zhuǎn)向主程序的指令稱為返回指令,其助記符一般為RET,子程序的最后一條指令一定是返回指令。返回地址存放的位置決定了返回指令的格式,如果返回地址保存在堆棧中,則返回指令是零地址指令,如果返回地址保存在某個(gè)主存單元中,則返回指令中必須是一地址指令。9/22/2023733.4指令類型3.4.4輸入/輸出類指令輸入/輸出(I/O)類指令用來(lái)實(shí)現(xiàn)主機(jī)與外部設(shè)備之間的信息交換,包括輸入/輸出數(shù)據(jù)、主機(jī)向外設(shè)發(fā)控制命令或外設(shè)向主機(jī)報(bào)告工作狀態(tài)等。從廣義的角度看,I/O指令可以歸入數(shù)據(jù)傳送類。各種不同的計(jì)算機(jī)的I/O指令差別很大,通常有兩種方式:
獨(dú)立編址方式
統(tǒng)一編址方式9/22/2023743.4指令類型1.獨(dú)立編址的I/O
所謂獨(dú)立編址就是把外設(shè)端口和主存單元分別獨(dú)立編址。指令系統(tǒng)中有專門的IN/OUT指令。以主機(jī)為基準(zhǔn),信息由外設(shè)傳送到主機(jī)稱為輸入,反之稱為輸出。指令中需要給出外設(shè)端口地址。這些端口地址與主存地址無(wú)關(guān),是另一個(gè)獨(dú)立的地址空間。9/22/2023753.4指令類型外設(shè)寄存器主存0000H00HFFFFHFFH訪存指令輸入/輸出指令MEMRMEMWIORIOW9/22/2023763.4指令類型2.統(tǒng)一編址的I/O
所謂統(tǒng)一編址就是把外設(shè)寄存器和主存單元統(tǒng)一編址。指令系統(tǒng)中沒(méi)有專門的I/O指令,就用一般的數(shù)據(jù)傳送類指令來(lái)實(shí)現(xiàn)I/O操作。外設(shè)寄存器主存0000HFFFFHEFFFH4KBMO
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)分級(jí)格式
- 鋼管課程設(shè)計(jì)答辯
- 液氮維修課程設(shè)計(jì)
- 鍋爐煙氣課程設(shè)計(jì)
- 川大化工原理課程設(shè)計(jì)
- 長(zhǎng)征精神課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)rs485
- 獨(dú)立攝影師商業(yè)拍攝合同協(xié)議
- 快遞物流運(yùn)輸損壞風(fēng)險(xiǎn)分擔(dān)協(xié)議
- 教育培訓(xùn)行業(yè)學(xué)員個(gè)人隱私保護(hù)協(xié)議
- 胃結(jié)石術(shù)后護(hù)理
- 消毒供應(yīng)室述職報(bào)告
- 生產(chǎn)制程能力分析報(bào)告
- 投放自助洗衣機(jī)合同書
- 浙江省溫州市2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 汽車音箱營(yíng)銷方案
- 山東省菏澤市單縣2023-2024學(xué)年八年級(jí)上學(xué)期1月期末數(shù)學(xué)試題
- 統(tǒng)編版六年級(jí)語(yǔ)文上冊(cè)專項(xiàng) 專題07修辭手法-原卷版+解析
- 北京市西城區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- (人教版新目標(biāo))八年級(jí)英語(yǔ)上冊(cè)全冊(cè)各單元知識(shí)點(diǎn)期末總復(fù)習(xí)講解教學(xué)課件
- 國(guó)家開(kāi)放大學(xué)2023年7月期末統(tǒng)一試《11141工程經(jīng)濟(jì)與管理》試題及答案-開(kāi)放本科
評(píng)論
0/150
提交評(píng)論