




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章指令系統(tǒng)
CPU的主要工作是執(zhí)行指令,指令是指揮計算機執(zhí)行某些操作的命令,一臺計算機所有指令的集合構(gòu)成該計算機的指令系統(tǒng)。指令和指令系統(tǒng)是計算機最基本的概念。
指令系統(tǒng)是計算機的主要屬性,位于硬件和軟件的交界面上,它既是硬件設(shè)計的依據(jù),又是軟件設(shè)計的基礎(chǔ)。1本章主要內(nèi)容指令格式操作碼的擴展、地址碼的結(jié)構(gòu)常見的尋址方式指令的類型2一、機器指令的格式指令是控制計算機完成指定操作的命令。作為命令,首先要告訴計算機做什么;其次,計算機處理的對象是數(shù)據(jù),指令還需要指明數(shù)據(jù)從哪里來、結(jié)果要到哪里去。這些問題是構(gòu)成指令的基本要素。所以一條指令由兩部分構(gòu)成:OPAddr
操作碼(OP):指明做什么操作
地址碼(Addr):指明操作數(shù)的地址。一條指令必須有一個操作碼,可能包含幾個地址碼。指令涉及指令長度、操作碼結(jié)構(gòu)、地址碼結(jié)構(gòu)等問題。用二進(jìn)制代碼表示31、指令長度指令長度是指一條指令中所包含的二進(jìn)制代碼的位數(shù),它取決于操作碼字段的長度、操作數(shù)地址的個數(shù)及長度。一般希望指令長度短一些。指令長度與機器字長沒有固定的關(guān)系。指令長度可以等于機器字長,也可以大于或小于機器字長。在一個指令系統(tǒng)中,若所有指令的長度都相等,稱為定長指令字結(jié)構(gòu);若各種指令的長度隨指令功能不同而不同,稱為變長指令字結(jié)構(gòu)。42、操作碼指令系統(tǒng)中的每一條指令都有一個唯一確定的操作碼,指令不同,其操作碼的編碼也不同。操作碼字段的位數(shù)取決于計算機指令系統(tǒng)的規(guī)模。通常,希望用盡可能短的操作碼字段來表達(dá)全部指令。于是,形成了操作碼結(jié)構(gòu)設(shè)計的不同方法。指令操作碼的編碼可分為定長編碼和變長編碼。5定長編碼定長編碼方式是最簡單的一種操作碼編碼方式,操作碼的位數(shù)和位置固定,但指令長度不固定。操作碼的位數(shù)越多,所能表示的操作種類就越多。操作碼不同,所涉及的操作數(shù)的個數(shù)也不完全相同,所以指令的長度會隨操作碼的不同而變化。特點:字段規(guī)整、譯碼簡單。例如,IBM370(字長32位)就是采用這種定長操作碼格式。IBM370的指令可分為三種不同的長度,不論指令的長度有多少位,其操作碼字段一律都是8位。6IBM370機的指令格式OP一樣長,操作碼譯碼器設(shè)計就簡單多了。
7變長編碼
變長編碼是一種操作碼長度不固定,而指令長度固定的設(shè)計方法。操作碼分散在指令字的不同位置上。特點:操作碼字段位數(shù)不固定將增加指令譯碼難度,使控制器的設(shè)計復(fù)雜化。但是,它有效地利用了指令中的每個二進(jìn)制位,壓縮了操作碼字段的平均長度。例如:PDP-11(字長16位)的指令可分為單字長、兩字長、三字長三種。其中,單字長指令的操作碼字段占4~16位不等,可遍及整個指令長度。8PDP-11機的指令格式OP不一樣長,控制器設(shè)計變得難多了。
9指令操作碼的擴展技術(shù)變長操作碼通常采用擴展操作碼方法來設(shè)計。擴展思路:讓地址碼字段多的指令,操作碼字段短一些;讓地址碼字段少的指令,操作碼字段長一些。假設(shè),某機器指令長16位,包括一個操作碼字段和三個地址字段,其中操作碼字段4位,每一個地址字段也是4位。其格式如下: 如果按照定長編碼方法,這個4位操作碼字段最多只能設(shè)計出16條不同的三地址指令。
OPA1A2A31512118743010指令操作碼的擴展技術(shù)0000XXXXYYYYZZZZ1110XXXXYYYYZZZZ…15條三地址指令11110000XXXXYYYY11111110XXXXYYYY…15條二地址指令擴展窗口111111110000XXXX111111111110XXXX…15條一地址指令擴展窗口11111111
1111000011111111
1111
1111…16條零地址指令擴展窗口1、操作碼一定不能重復(fù)2、短碼不能是長碼前綴113、地址碼根據(jù)一條指令中有幾個操作數(shù)地址,可將該指令稱為幾地址指令。常規(guī)情況下,指令應(yīng)有被操作數(shù)、操作數(shù)以及操作結(jié)果這三個數(shù),因而就形成了三地址指令格式。三地址指令是早期計算機指令的基本格式。在三地址格式基礎(chǔ)上,后來又發(fā)展成了二地址格式、一地址格式和零地址格式。
12三地址指令格式: 執(zhí)行的操作:
(A1)OP(A2)A3A1為被操作數(shù)地址,A2為操作數(shù)地址,
A3為結(jié)果的存放地址。A1、A2、A3可以是內(nèi)存單元地址,也可以是運算器中的通用寄存器。如果全是內(nèi)存中的單元地址,則執(zhí)行一條三地址指令至少需要訪問4次主存。
OPA1A2A313二地址指令格式:執(zhí)行的操作:
(A1)OP(A2)A1A1為目的操作數(shù)地址,兼做存放結(jié)果的地址;A2為源操作數(shù)地址。(A1原先的值無需保存)A1、A2可以是內(nèi)存單元地址,也可以是運算器中的通用寄存器。如果是內(nèi)存中的單元地址,則執(zhí)行一條二地址指令至少要訪問4次主存。OPA1A214一地址指令
格式:執(zhí)行的操作:
(AC)OP(A1)AC這種指令以累加寄存器AC中的數(shù)為被操作數(shù),指令中地址碼字段所指明的數(shù)為操作數(shù),操作結(jié)果又放回累加寄存器AC中(隱含約定AC)。A1可以是內(nèi)存中的單元地址,也可以是運算器中的通用寄存器。如果是內(nèi)存中的單元地址,則執(zhí)行一條一地址指令至少需要訪問2次主存。OPA1計算機中有許多寄存器其中有一個稱為累加寄存器(AC),存放操作數(shù)15零地址指令格式:零地址指令只有操作碼,而沒有地址碼。例如下面的情況不需要地址碼:指令不需要操作數(shù),例如停機指令。操作數(shù)隱含約定在累加器AC中。操作數(shù)隱含指定在堆棧中,例如堆棧計算機,零地址指令的操作數(shù)從堆棧中獲得(一般了解)。OP16簡化地址結(jié)構(gòu)與減少地址碼字段的位數(shù)簡化地址結(jié)構(gòu)的途徑:隱含約定地址PC代替指令中的后繼指令地址結(jié)果存放在操作數(shù)地址操作數(shù)或結(jié)果約定在AC中約定所有地址的位置,如零地址指令減少地址碼字段位數(shù)的途徑:采用隱含約定地址減少地址數(shù),減少位數(shù)采用寄存器尋址、寄存器間接尋址,減少位數(shù)17按操作數(shù)物理位置劃分指令存儲器—存儲器型指令(SS)
這類指令,參與操作的數(shù)都放在內(nèi)存里,從內(nèi)存單元取操數(shù),操作結(jié)果放回內(nèi)存中機器執(zhí)行這類指令需要多次訪問內(nèi)存,執(zhí)行速度慢寄存器—寄存器型指令(RR)
這類指令從寄存器中取操作數(shù),把結(jié)果放回寄存器機器執(zhí)行這類指令不需要訪問內(nèi)存,執(zhí)行速度快寄存器—存儲器型指令(RS)
執(zhí)行此類指令既需要訪問內(nèi)存單元,又要訪問寄器執(zhí)行速度介于第一種和第二種之間,執(zhí)行速度中18二、指令和數(shù)據(jù)的尋址方式存儲器既可以存放指令,又可以存放數(shù)據(jù)。當(dāng)某指令或操作數(shù)存放在某個存儲單元時,該存儲單元的編號就是該指令或操作數(shù)在存儲器中的地址。所謂尋址就是尋找操作數(shù)的地址或下一條要執(zhí)行的指令的地址,形成操作數(shù)或指令地址的方式稱為尋址方式。尋址方式分為兩類,即指令尋址方式和數(shù)據(jù)尋址方式。191、指令尋址方式尋找下一條將要執(zhí)行的指令的地址稱為指令尋址。指令尋址與數(shù)據(jù)尋址類似。指令尋址又可以細(xì)分為順序?qū)ぶ泛吞S尋址。20順序?qū)ぶ贩绞街噶钤趦?nèi)存中是順序存放的,當(dāng)執(zhí)行一段程序時,通常是一條指令接一條指令地順序執(zhí)行。CPU順序取出指令、執(zhí)行指令的過程我們稱為指令的順序?qū)ぶ贩绞?。必須有一個跟蹤程序執(zhí)行順序的措施,那就是程序計數(shù)器PC。程序計數(shù)器PC用來記錄指令的順序號,該順序號就是指令在內(nèi)存中的地址。計算機中有許多寄存器其中有一個稱為程序計數(shù)器(PC),放指令地址21順序?qū)ぶ贩绞街噶铐樞驅(qū)ぶ贩绞降氖疽鈭D如下:程序啟動時,由操作系統(tǒng)把程序的首地址放入程序計數(shù)器PC中。22當(dāng)程序轉(zhuǎn)移執(zhí)行的順序時,指令的尋址就采用跳躍尋址方式。所謂跳躍,是指下條指令的地址不是由程序計數(shù)器PC給出,而是由轉(zhuǎn)移指令給出。跳躍尋址時,轉(zhuǎn)移地址形成方式有三種方式:直接尋址、間接尋址、相對尋址。它們與數(shù)據(jù)尋址方式中的直接尋址、間接尋址、相對尋址完全相同,只不過尋找的不是操作數(shù)的有效地址而是指令轉(zhuǎn)移的有效地址,其實現(xiàn)方式將在數(shù)據(jù)尋址中討論。指令跳躍尋址方式可實現(xiàn)程序轉(zhuǎn)移和公共程序調(diào)用等功能。例如,指令系統(tǒng)的各種轉(zhuǎn)移指令就是采用跳躍尋址實現(xiàn)的。跳躍尋址方式23跳躍尋址方式指令跳躍尋址的示意圖如下:242、數(shù)據(jù)尋址方式根據(jù)指令中地址碼字段的內(nèi)容(稱為形式地址)形成操作數(shù)有效地址的方式,稱為數(shù)據(jù)尋址方式。 形式地址A
有效地址EA數(shù)據(jù)尋址方式的種類很多,但最終目的只有一個,那就是尋找所需要的操作數(shù)。尋址方式與操作數(shù)可能存放的地方有直接關(guān)系。
尋址方式25操作數(shù)可能存放的地方
在計算機中,操作數(shù)可能存在的地方有:在指令中在CPU的某個寄存器中在主存(或堆棧)中在某個輸入/輸出端口中因為數(shù)據(jù)存在的地方(數(shù)據(jù)來源)不同,也由于各種機器的結(jié)構(gòu)不同,從而形成了各種不同的數(shù)據(jù)尋址方式。以下討論比較典型、且常用的尋址方式。26隱含尋址隱含尋址指令,不是明顯地給出操作數(shù)的地址,而是在指令中隱含著操作數(shù)的地址,即采用隱含約定的方式實現(xiàn)尋址。例如: 單地址指令格式:ADDAddr明顯給出的只是第一操作數(shù)的地址Addr,該地址中的數(shù)據(jù)跟誰加?約定累加器AC為第二操作數(shù)地址,它并不出現(xiàn)在指令的地址碼字段中。因此,累加器AC對單地址指令來說是隱含地址,尋址方式為隱含尋址方式。27立即尋址指令的地址碼字段給出的不是操作數(shù)的地址,而是操作數(shù)本身,這種尋址方式稱為立即尋址。例如: 數(shù)據(jù)傳送指令:MOVAX,8立即尋址指令的執(zhí)行時間很短,因為操作數(shù)含在指令中,指令和操作數(shù)同時被取出,不需要為取操作數(shù)而再次訪問內(nèi)存。在程序執(zhí)行過程中,立即數(shù)不能修改,靈活性差;一般用來提供初始值,用于程序的初始化。28直接尋址指令中地址碼字段直接給出操作數(shù)的有效地址,形式地址就是有效地址,這種尋址方式稱為直接尋址方式。 操作數(shù):
S=(A)
例如:MOVAX,[2030H]直接尋址不需要尋址運算,便于硬件實現(xiàn),但有時尋址空間受地址碼字段位數(shù)的限制。形式地址=有效地址29間接尋址間接尋址意味著指令中給出的地址A不是操作數(shù)的地址,而是存放操作數(shù)地址的地址。通常指令中用“標(biāo)志位”加以說明。 操作數(shù):S=((A))
間接尋址是早期計算機采用的尋址方式,由于2次訪存,指令執(zhí)行速度慢,但能用同一條指令指向不同的主存單元。原來是地址的地址…30寄存器尋址指令的地址碼給出CPU中通用寄存器的編號,該編號指定的寄存器里存放著操作數(shù),這種尋址方式稱為寄存器尋址方式操作數(shù):S=(Ri)
例如:MOVAX,BX特點:①從寄存器取數(shù)比從內(nèi)存取數(shù)要快;②表示寄存器的地址碼字段比表示內(nèi)存地址的地址碼字段要短得多31寄存器間接尋址指令中的地址碼給出某一通用寄存器的編號,該編號指定的寄存器中存放著操作數(shù)的有效地址,而操作數(shù)存放在內(nèi)存單元中。間接尋址需要用尋址標(biāo)志位指明。 操作數(shù):S=((Ri))
例如:MOVAX,[BX]指令較短,只需一次訪存,比間接尋址要快。
寄存器里放有效地址32程序計數(shù)器PC的內(nèi)容加上指令中形式地址D,形成操作數(shù)的有效地址,這種尋址方式稱為相對尋址,且需要用尋址標(biāo)志位指明。 有效地址:EA=(PC)+D
形式地址D常稱為偏移量,可以是正數(shù),也可以是負(fù)數(shù)。優(yōu)點:操作數(shù)地址與指令地址總是差一個固定的值,因而所編寫的程序是浮動的,可以放在內(nèi)存的任何地方執(zhí)行而不需修改。浮動程序在內(nèi)存任何地方都能運行!相對尋址33基址尋址基址寄存器Rb的內(nèi)容與指令中的形式地址D相加,形成操作數(shù)有效地址,這種尋址方式稱為基址尋址。需要尋址標(biāo)志位?;芳拇嫫鞔娣呕刂罚问降刂方o出偏移量,且可正可負(fù)。有效地址:EA=(Rb)+D基址尋址面向系統(tǒng),用于邏輯地址和物理地址的變換,實現(xiàn)程序在內(nèi)存中的再定位和擴大尋址范圍。如多用戶管理。計算機中有許多寄存器其中有的用作基址寄存器(Rb),來存放基地址基址寄存器提供基準(zhǔn)值、是固定的;形式地址提供偏移量、是可變的。34變址尋址變址尋址是把CPU中變址寄存器Rx的內(nèi)容與指令中給出的形式地址D相加,形成操作數(shù)有效地址的尋址方式。需要尋址標(biāo)志位。有效地址:EA=(Rx)+D變址尋址和基址尋址計算有效地址的算法相同,用法有區(qū)別。變址寄存器提供可修改量、是可變的,指令的形式地址提供基準(zhǔn)值、是固定的;變址尋址面向用戶,實現(xiàn)有效地址規(guī)律性變化。計算機中有許多寄存器其中有的用作變址寄存器(Rx),來存放變址值從名字上就能看出來:基址寄存器內(nèi)容不能變;而變址寄存器內(nèi)容可變,例如,數(shù)組元素的訪問。35頁面尋址把整個主存空間分成若干大小相等的塊,每塊稱為一頁,每頁都有自己的編號,稱為頁地址。在一頁中,有若干主存單元,每個單元也有自己的編號,稱為頁內(nèi)地址。這樣劃分后,存儲器的有效地址被分為兩部分,一部分為頁地址,一部分為頁內(nèi)地址。頁地址存放在頁寄存器中;頁內(nèi)地址由指令的形式地址直接提供,頁地址與頁內(nèi)地址通過簡單拼接得到有效地址,從而實現(xiàn)從邏輯地址到物理地址的轉(zhuǎn)換。與此類似,學(xué)生的學(xué)號由班號和學(xué)生序號組成,班號對應(yīng)頁地址,編號對應(yīng)頁內(nèi)地址,通過班號和編號的拼接可形成學(xué)號。內(nèi)存和磁盤交換數(shù)據(jù)時,是以數(shù)據(jù)塊為單位,形成了頁面尋址36頁面尋址的有效地址生成過程EA=0//A=AEA=(PC)H//AEA=(RP)//A373、綜合說明除以上尋址方式外,還有位尋址、塊尋址、段尋址、堆棧尋址(堆棧尋址后面還要介紹)等。幾種尋址方式可以組合使用。如基址變址尋址,就是基址尋址和變址尋址的組合。當(dāng)指令有兩個或兩個以上地址碼時,可以采用不同的尋址方式。例如源地址采用寄存器尋址,目的地址采用間接尋址。為了區(qū)分不同的尋址方式,需要在指令中給出尋址標(biāo)志位加以區(qū)別,也可以采用隱含約定的方式來規(guī)定。一位標(biāo)志位能區(qū)分2種尋址方式,n個尋址特征位能區(qū)分2n種尋址方式。38三、堆棧尋址方式堆棧與其它形式的存儲器之間的差別在于數(shù)據(jù)的存取方式和尋址方式有所不同。所謂堆棧是指按照特定順序進(jìn)行存取的存儲區(qū)域,堆棧的特點是“先進(jìn)后出”。在存儲器堆棧中,作為起點的一端被固定,稱為棧底;而另一端隨操作的進(jìn)行而浮動,稱為棧頂。堆棧操作始終在棧頂進(jìn)行,類似彈倉操作。計算機中常用的堆棧有兩種:寄存器堆棧和存儲器堆棧。391、寄存器堆棧用一組專門的寄存器構(gòu)成寄存器堆棧,也叫串聯(lián)堆棧。寄存器堆棧的特點:寄存器組中各寄存器是互相連接的,它們之間具有對應(yīng)位自動推移功能。數(shù)據(jù)傳送都是在棧頂和某個寄存器之間進(jìn)行。棧頂固定不動,數(shù)據(jù)串行移動,先進(jìn)棧的數(shù)據(jù)最后才能出來,操作具有先進(jìn)后出的特點。CPU通過“壓入”指令PUSH把數(shù)據(jù)送入堆棧,而通過“彈出”指令POP把數(shù)據(jù)從堆棧中取出來。通用寄存器40寄存器堆棧原理某通用寄存器的數(shù)據(jù)進(jìn)棧時,占據(jù)頂部位置,堆棧中原有數(shù)據(jù)依次下移。當(dāng)壓入堆棧的數(shù)據(jù)個數(shù)超過堆棧容量時,棧底數(shù)據(jù)會被擠出堆棧而丟失。數(shù)據(jù)出棧時,堆棧頂部的數(shù)據(jù)最先離開堆棧,并被放回通用寄存器,同時堆棧里的其它數(shù)據(jù)依次上移,以填滿數(shù)據(jù)出棧而留下的空位。寄存器堆棧是很有價值的,多用于控制器;其主要不足是成本高,寄存器數(shù)目有限,寄存器堆棧難以做大。
寄存器堆棧原理示意圖412、存儲器堆棧從主存中劃出一個區(qū)域作為堆棧使用,稱為存儲器堆棧。通常,在設(shè)計計算機系統(tǒng)時,就會把主存儲器的一部分劃為堆棧。堆棧區(qū)一旦設(shè)定,該存儲區(qū)就不能作為其它用途。存儲器堆棧的特點是:數(shù)據(jù)不動,棧頂移動。為跟蹤移動的棧頂,CPU中設(shè)置了一個專用寄存器SP,稱為堆棧指示器,來記錄棧頂?shù)奈恢?,并始終指向棧頂。在建立存儲器堆棧時,需要給SP送一個地址值,稱為初始化,這個地址值就是堆棧的初始棧頂。例如,把300Q作為棧頂?shù)刂匪腿攵褩V甘酒鱏P。42堆棧的壓入操作(PUSH)存儲器堆棧中也使用“壓入”和“彈出”指令進(jìn)行操作,但與寄存器堆棧操作有所不同壓入指令“PUSHA”操作:
(SP)-1SP
(A)Msp
(A):表示寄存器A的內(nèi)容
SP:表示堆棧指示器
Msp:表示棧頂43堆棧的彈出操作(POP)假設(shè)出棧前,堆棧中已經(jīng)有a、b、c三個數(shù),堆棧指示器SP指向棧頂單元275。現(xiàn)在要把堆棧中棧頂?shù)臄?shù)送回通用寄存器A。彈出指令“POPA”操作: (Msp)A
(SP)+1SP44關(guān)于存儲器堆棧習(xí)慣上,在畫存儲器堆棧時,地址值小的存儲單元位于上面,地址值大的存儲單元位于下面。在開始時,棧頂?shù)刂份^大。隨著壓入操作的進(jìn)行,棧頂?shù)刂穼⒆冃?,棧頂逐漸上移,把這種結(jié)構(gòu)的堆棧稱為“自底向上”生長的堆棧。對于“自底向上”生長的存儲器堆棧,壓入時先修改堆棧指示器,后存入數(shù)據(jù);彈出時相反,先取出數(shù)據(jù),后修改堆棧指示器?!猄P指向的棧頂有元素,除非堆棧是空的。與“自底向上”堆棧相對應(yīng),也有“自頂向下”生長的堆棧。45四、指令類型計算機不同,指令系統(tǒng)各不相同。但從指令操作碼的功能來考慮,一個較完善的指令系統(tǒng)應(yīng)當(dāng)包括:以下介紹指令類型。數(shù)據(jù)傳送類指令算術(shù)運算類指令邏輯運算類指令輸入輸出類指令字符串操作類指令程序控制類指令處理機控制類指令特權(quán)指令461、數(shù)據(jù)傳送指令數(shù)據(jù)是在傳送過程中完成運算、得到處理、并獲得結(jié)果的,數(shù)據(jù)傳送指令用于實現(xiàn)數(shù)據(jù)的傳送操作,是最基本的指令。傳送指令又分為:一般傳送指令、數(shù)據(jù)交換指令、堆棧操作指令等。如“MOVR1,R0”、“XCHGAX,M1”、“PUSHAX”。數(shù)據(jù)傳送指令主要用來完成主存儲器和寄存器之間、寄存器和寄存器之間、寄存器與I/O接口之間的數(shù)據(jù)傳送操作。設(shè)置傳送指令時,一般有3方面的約定:傳送范圍:規(guī)定操作數(shù)的來源和結(jié)果的去向。傳送單位:明確傳送單位,是字節(jié)、字、雙字還是數(shù)組?尋址方式:區(qū)分尋址方式,指令中要有尋址標(biāo)志位。472、算術(shù)運算指令計算機的基本任務(wù)是執(zhí)行數(shù)據(jù)的運算操作,計算機無一例外地設(shè)置有算術(shù)運算指令。
算術(shù)運算指令包括:加、減、乘、除指令加1、減1指令算術(shù)移位指令、算術(shù)比較指令十進(jìn)制加、減、乘、除指令大型機有向量運算指令,對向量或矩陣求和、求積例如:指令“ADDSUM,DX”執(zhí)行加法操作:DX的內(nèi)容加SUM的內(nèi)容,結(jié)果保存在SUM中(SUM為內(nèi)存單元)。483、邏輯運算指令邏輯函數(shù)多種多樣,但基本運算有與、或、非、異或四種,邏輯函數(shù)可組合實現(xiàn);邏輯運算中還包括邏輯移位操作。主要用于無符號數(shù)的位操作、代碼轉(zhuǎn)換、判斷和邏輯運算;特點是運算按位進(jìn)行,本位運算不影響其它位。例如:A=11001010,B=00001000,“ANDA,B”是一條雙操作數(shù)指令,其中,AND為指令助記符,代表“與”操作;B為源操作數(shù)地址,為主存單元;A為目的操作數(shù),為主存單元。該指令功能是將A和B內(nèi)容相與,結(jié)果留在A單元中。
494、輸入輸出指令以主機為參考點,信息由外設(shè)傳送給主機稱為輸入,由主機傳送給外設(shè)稱為輸出。輸入輸出(I/O)指令用來實現(xiàn)主機與外部設(shè)備之間的信息交換,包括輸入輸出數(shù)據(jù)、主機向外設(shè)發(fā)送命令、以及外設(shè)向主機報告工作狀態(tài)等。事實上,CPU不能直接訪問外設(shè)。在CPU和外設(shè)之間還存在一個接口,是通過這個接口實現(xiàn)信息交換的。在接口中,設(shè)置有數(shù)據(jù)寄存器、命令寄存器、狀態(tài)寄存器,這些寄存器也稱為端口。CPU可訪問端口,訪問是通過端口地址實現(xiàn)的。于是,需要解決外設(shè)端口的編址問題。
50I/O端口的編址獨立編址的I/O外設(shè)端口地址與主機存儲器地址無關(guān),是另一個獨立地址空間。在獨立編址方式下,需要使用專門的I/O指令(IN/OUT)。如80x86采用獨立編址方式,I/O地址空間有64KB。例如,INAL,port
(輸入)
;OUTport,AL
(輸出)。統(tǒng)一編址的I/O把外設(shè)的端口和主存單元地址一樣看待,統(tǒng)一編號,CPU用訪問主存的方法去訪問外設(shè)端口。在統(tǒng)一編址方式下,不需要專門的I/O指令,用一般的數(shù)據(jù)傳送指令就能夠?qū)崿F(xiàn)I/O操作。如PDP-11采用統(tǒng)一編址方式,把高4KB主存地址作為外設(shè)地址。例如,MOVAL,port(輸入);MOVport,AL(輸出)。51兩種方式的優(yōu)缺點
通常一個外設(shè)至少有兩個寄存器,數(shù)據(jù)寄存器和命令狀態(tài)寄存器,每個寄存器可由分配給它們的地址來識別。獨立編址下,I/O指令和訪存指令容易區(qū)分,外設(shè)地址線少、譯碼簡單,主存空間不會減少;但要增加I/ORead和I/OWrite控制線。在統(tǒng)一編址下,訪存指令就可用于外設(shè)控制,可直接對外設(shè)寄存器進(jìn)行各種運算,不需要增加新的信號線;但由于占用了主存地址,縮小了主存空間。525、字符串操作指令字符串操作指令主要用于數(shù)據(jù)的批量處理,一般包括:字符串傳送字符串轉(zhuǎn)換(如字符串的碼制轉(zhuǎn)換)字符串比較字符串查找字符串抽取字符串替換等這類指令主要用于非數(shù)值數(shù)據(jù)的處理,如文字編輯等。例如,REPMOVB,把SI指向的源操作數(shù)搬到DI指向的目的地址,每搬一個字節(jié),SI和DI加1,搬移總數(shù)放在CX中。
536、程序控制指令程序控制指令也稱為轉(zhuǎn)移指令,用來控制程序執(zhí)行的順序,從而改變程序的執(zhí)行方向。程序控制類指令可分為三種:轉(zhuǎn)移指令轉(zhuǎn)子指令軟中斷指令54轉(zhuǎn)移指令無條件轉(zhuǎn)移指令:指令中給出轉(zhuǎn)移命令和轉(zhuǎn)移地址,當(dāng)執(zhí)行這條指令時,無條件轉(zhuǎn)移到指定的地址,再往下執(zhí)行。 例如:JMPREAD;JMP為命令,表示跳轉(zhuǎn),READ為符號地址,表示跳轉(zhuǎn)的地址。條件轉(zhuǎn)移指令:條件轉(zhuǎn)移指令主要用于程序的分支控制。如果滿足條件則執(zhí)行轉(zhuǎn)移,否則順序執(zhí)行。轉(zhuǎn)移的條件由程序狀態(tài)字來PSW提供,如,C、Z、N、V、P等狀態(tài)標(biāo)志。 例如:JZSTOP;上條指令結(jié)果為0,轉(zhuǎn)移到STOP。循環(huán)指令:循環(huán)指令可以看成特殊的條件轉(zhuǎn)移指令,循環(huán)次數(shù)由指令給出。在執(zhí)行循環(huán)指令時,每執(zhí)行一次,循環(huán)次數(shù)減1,直到循環(huán)次數(shù)減為0時停止循環(huán)。 例如:LOOPADDING;執(zhí)行次數(shù)放在CX中。55轉(zhuǎn)子指令在編程過程中,常將一些功能相對獨立的、實現(xiàn)相同功能的、反復(fù)出現(xiàn)的程序代碼編制成程序模塊,這種一經(jīng)定義、可以被主程序調(diào)用的程序模塊稱為子程序。轉(zhuǎn)子指令:轉(zhuǎn)子指令也叫子程序調(diào)用指令,指令中給出操作碼和轉(zhuǎn)移地址。轉(zhuǎn)移地址是子程序的入口地址。在執(zhí)行轉(zhuǎn)子指令時,機器會自動把返回地址保存在堆棧中,以備在返回時使用。 例如,CALLROOT;ROOT為開平方子程序名。返回指令:子程序的最后一條指令必須是返回指令,其返回地址隱含指定,可從堆棧中獲得,該返回地址在執(zhí)行轉(zhuǎn)子指令時被壓入堆棧。 例如,RET;子程序返回指令,從堆棧中獲得返回地址。56軟中斷指令引起中斷的原因很多,其中一種原因是由于程序執(zhí)行了一條軟中斷指令,例如INTn,軟中斷過程是程序切換的過程。軟中斷指令給出操作碼和一個中斷號,中斷號的作用是用來找到中斷服務(wù)程序的入口地址的。
在執(zhí)行軟中斷指令時,先把被中斷程序的斷點壓入堆棧,再轉(zhuǎn)向中斷服務(wù)程序的入口地址,去執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序的最后一條指令是中斷返回指令I(lǐng)RET,它從堆棧中取出斷點,返回原程序繼續(xù)執(zhí)行。577、處理機控制類指令處理機控制指令大體分兩類,用于控制CPU的行為動作。對CPU狀態(tài)字的某些標(biāo)志位進(jìn)行清除、設(shè)置、測試、修改等,達(dá)到控制CPU執(zhí)行指令、或者處理事件行為的目的;例如:關(guān)中斷CLI,開中斷STI等;實現(xiàn)CPU與外部事件的同步功能。例如,暫停HLT、等待WAIT、總線鎖定LOCK、以及空操作NOP等指令。588、特權(quán)指令特權(quán)指令是指那些具有特殊權(quán)限的指令,這類指令只能用于操作系統(tǒng)或其它系統(tǒng)軟件,一般情況下不直接提供給用戶使用。在多用戶、多任務(wù)的計算機系統(tǒng)中,特權(quán)指令必不可少,主要用于系統(tǒng)資源的分配和管理、任務(wù)的調(diào)度和管理等系統(tǒng)功能的實現(xiàn).59三個無符號數(shù)存放在連續(xù)的內(nèi)存單元中,起始地址為X,找出其中最大的一個數(shù)。
N2: MOV MAX,AX
;存入三個數(shù)中最大數(shù)
X DW X1,X2,X3
MAX DW ? ┇
LEA BX,X
;取數(shù)據(jù)的首地址
MOV
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津大學(xué)有機化學(xué)課件1簡介
- 2024年紡織品設(shè)計師證書考試綜合應(yīng)用試題及答案
- 激發(fā)創(chuàng)造力國際商業(yè)美術(shù)設(shè)計師考試試題及答案
- 認(rèn)知心理學(xué)導(dǎo)論課件
- 建大建筑概論試題及答案
- 《項目風(fēng)險評估》課件
- 樂山醫(yī)療面試題及答案
- 2025年中考生物復(fù)習(xí)難題速遞之傳染病和免疫(2025年4月)
- 熱水袋使用試題及答案
- 專利要求面試題及答案
- 西部計劃筆試試題及答案
- 重慶金太陽2025屆高三5月聯(lián)考英語及答案
- 2025屆貴州省遵義第四中學(xué)高考英語全真模擬密押卷含解析
- 2025新人教版英語七年級下單詞默寫單
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
- GB/T 31997-2015風(fēng)力發(fā)電場項目建設(shè)工程驗收規(guī)程
- 杭汽HNKS50-63-28型汽輪機大修施工方案
- Q∕GDW 12113-2021 邊緣物聯(lián)代理技術(shù)要求
- 劉半農(nóng)雨散文的特點
- 濰柴發(fā)動機WD615系列分解圖冊
- 碎石、砂出廠合格證
評論
0/150
提交評論