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

下載本文檔

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

文檔簡介

第三章指令集結(jié)構(gòu)3.1程序設(shè)計(jì)語言的級別3.2機(jī)器語言指令3.3指令集結(jié)構(gòu)設(shè)計(jì)3.4相對簡單的指令集結(jié)構(gòu)3.5實(shí)例3.1程序設(shè)計(jì)語言的級別

3.1.1語言種類

高級語言(high-levellanguages)

匯編語言(assemblylanguage)

向下兼容(backwardcompatible)

平臺無關(guān)(platform-independent)

機(jī)器語言3.1.2編譯和匯編程序

1.編譯、匯編2.編譯器

源程序、源代碼、目標(biāo)代碼連接器、裝載器3.編譯過程同一高級語言源代碼可以經(jīng)過編譯在不同的微處理器和操作系統(tǒng)或者計(jì)算平臺上運(yùn)行。圖3.1高級程序的編譯過程裝載器包含在計(jì)算平臺中

4.匯編器和匯編過程

圖3.2匯編語言程序的匯編過程

每一種匯編語言對應(yīng)一種微處理器,不需要針對不同平臺的匯編器。1.什么是指令?指令:指示計(jì)算機(jī)執(zhí)行某種操作的命令。機(jī)器語言:計(jì)算機(jī)硬件實(shí)體直接表示控制信息的語言。

(計(jì)算機(jī)硬件能直接理解并執(zhí)行的語言)指令集:一臺計(jì)算機(jī)能執(zhí)行的全部指令的集合。(計(jì)算機(jī)程序員接觸到的計(jì)算機(jī)的所有功能)

一條指令就是機(jī)器語言的一個語句,用來說明機(jī)器硬件應(yīng)完成的操作。3.1.3機(jī)器語言與指令

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

(1)操作碼

(2)操作數(shù)的地址

(3)操作結(jié)果的地址

(4)下一條指令地址◆指令的基本格式操作碼:表示指令應(yīng)執(zhí)行的操作和應(yīng)具有的功能。地址碼:表示參與操作的操作數(shù)的存放地址或操作結(jié)果的存放地址。3.2機(jī)器語言指令

3.2.1指令類型與功能

3.2.1.1數(shù)據(jù)傳送指令

將數(shù)據(jù)從一個地方移到另一個地方(實(shí)際是“拷貝”)。

例:◆

8086指令

MOVAL,BL;AL←BLMOVAL,Disp(BX)(SI);AL←((BX)(SI)+Disp)◆IBM370機(jī)的成組取指令:成組取R1R3B2D23.2.1.2數(shù)據(jù)運(yùn)算指令

包括算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、移位指令。例:8086指令系統(tǒng)中

ADDAL,BL;AL←AL+BLMULBL;AX←AL×BLANDAL,0FEH;AL←AL∧FEH,即AL的最低位

;清0,其余位不變。

ORAL,0F0H;AL←AL∨F0,即AL的高4位置1,

;其余位不變

TESTAL,00000001B;AL∧00000001BA0=0結(jié)果為0;A0=1結(jié)果不為0◆移位指令實(shí)現(xiàn)對操作數(shù)的左、右移位。移位操作指令分為算術(shù)移位、邏輯移位和

循環(huán)移位三種,可以實(shí)現(xiàn)對操作數(shù)左移或右移一位或幾位。3.2.1.3程序控制指令

控制程序流程的指令,包括:跳轉(zhuǎn)指令(條件或無條件)或分支指令、子程序調(diào)用和子程序返回指令、“軟中斷”指令、停機(jī)指令。3.2.2數(shù)據(jù)類型

數(shù)值數(shù)據(jù)無符號整型數(shù)、有符號整型數(shù)、浮點(diǎn)數(shù)據(jù)

布爾類型數(shù)據(jù)值常以0表示FALSE,以非0表示TRUE

字符數(shù)據(jù)字符編碼標(biāo)準(zhǔn)

(ASCII、EBCDIC、UNICODE、或別的)例:8086指令系統(tǒng)JMPL1

;直接尋址的轉(zhuǎn)移,無條件轉(zhuǎn)移到L1處,JNZ50H

;相對尋址的轉(zhuǎn)移。若操作結(jié)果不為0,則轉(zhuǎn)移到當(dāng)前PC+50H處。設(shè)指令地址為1000H,則當(dāng)前PC=1002H,轉(zhuǎn)移地址為:1002H+50H=1052H3.2.3尋址方式

尋址方式:確定操作數(shù)地址的方法。

形式地址:指令中直接給出的地址。

有效地址:形式地址經(jīng)一定的計(jì)算而得到的操作數(shù)的實(shí)際地址。3.2.3.1直接尋址指令字中直接給出操作數(shù)的有效地址?!衾篒ntel8086指令

MOVAX,[2000H]

將有效地址為2000H的內(nèi)存單元的內(nèi)容讀入累加器AX中?!衾纾篖DAC5

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

或LDAC

(5)OP…5IR10操作數(shù)35操作數(shù)的地址105…◆間接尋址的特點(diǎn)①間接尋址比直接尋址靈活,可擴(kuò)大尋址范圍,以短的地址碼訪問大的存儲空間。②采用間接尋址,當(dāng)操作數(shù)地址需要改變時,可不必修改指令,只要修改地址指示字中內(nèi)容(即存放有效地址的單元內(nèi)容)即可。③間接尋址需多次訪存才能取得操作數(shù),因而降低了指令的執(zhí)行速度。3.2.3.3寄存器直接尋址和寄存器間接尋址◆寄存器尋址◆與直接和間接尋址方式相似,但指定的是寄存器,而不是內(nèi)存單元?!艏拇嫫鞔嫒⌒畔⒌乃俣缺戎鞔婵欤枰牡刂范?,可壓縮指令長度,有利于加快指令執(zhí)行速度。但寄存器的數(shù)量有限?!艏拇嫫髦苯訉ぶ稯P寄存器尋址Rn操作數(shù)Rn例如:假設(shè)寄存器R中存儲了數(shù)值5,則:

LDAC

R

;把數(shù)值5從寄存器R中拷貝到CPU的累加器中例如:假設(shè)寄存器R中存儲了數(shù)值5,則:

LDAC(R)

或LDAC@R

;相當(dāng)于LDAC

5,從寄存器R中獲取地址◆寄存器間接尋址3.2.3.4立即值尋址指定的操作數(shù)不是一個地址,而是確實(shí)要用到的數(shù)據(jù)。例如:Intel8086指令

MOVAX,2000H

;將數(shù)據(jù)2000H存入累加器AX中例如:LDAC#5

;把數(shù)據(jù)值5移到累加器中OP立即尋址D

這種尋址方式在取指令的同時操作數(shù)即被取出,不必再次訪問存儲器,提高了指令執(zhí)行速度。但由于指令字有限,使得數(shù)據(jù)范圍受限。3.2.3.5隱含尋址

并不明確地指出操作數(shù),因?yàn)榭偸怯玫教囟ǖ募拇嫫鳌@纾?/p>

CLAC

;清空CPU中的累加器,即將其值置為0

常用于用堆棧存儲數(shù)據(jù)的CPU中。指令中不需要指定操作數(shù),因?yàn)樗凳静僮鲾?shù)一定來自堆棧。

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

SP←SP減量,(SP)←數(shù)據(jù)②彈出(退棧、出棧)指令:從棧頂彈出數(shù)據(jù),送到指令指定的目的地址中。

目的←(SP),SP←SP增量例:8086的指令系統(tǒng)中進(jìn)棧指令:PUSHAXSP←SP-1,(SP)←AH,SP←SP-1,(SP)←AL

出棧指令:POPAXAL←(SP),SP←SP+1,AH←(SP),SP←SP+1低地址ALAH高地址SPSP-1SP-1低地址ALAH高地址SP+1SP+1SPALAH3.2.3.6相對尋址將程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令中給出的形式地址相加形成操作數(shù)的有效地址。有效地址E=(PC)+Disp◆程序計(jì)數(shù)器PC的內(nèi)容一般為現(xiàn)行指令的下一條指令的地址?!粜问降刂肥遣僮鲾?shù)地址相對于PC當(dāng)前內(nèi)容的一個相對位移量(Disp),位移量可正可負(fù),一般用補(bǔ)碼表示?!粼谙鄬ぶ分校灰3治灰屏坎蛔儯涂蓪?shí)現(xiàn)指令帶著數(shù)據(jù)在存儲器中浮動,有利于實(shí)現(xiàn)程序再定位。KOP相對尋址5K+1K+2┆┆K+6操作數(shù)MOP相對尋址5M+1M+2┆┆M+6操作數(shù)

例:8086指令JNC03H

的功能為,如果進(jìn)位為0,則轉(zhuǎn)移到目標(biāo)地址為(PC)+03H處進(jìn)行執(zhí)行。設(shè)指令為雙字節(jié)指令,本條指令地址為1000H。本條指令取指后,PC=1002H轉(zhuǎn)移目標(biāo)地址為

1002H+0003H=1005H若指令為JNC0FDH

則轉(zhuǎn)移目標(biāo)地址為1002H+FFFDH=0FFFH0FFDH0FFEH0FFFH××1000HJNC1001H03H1002H1003H1004H1005H××D=FDHD=03H3.2.3.7變址尋址方式和基址尋址1.變址尋址方式

變址尋址方式與相對尋址方式類似,但它是將指令提供的地址與變址寄存器中而不是程序計(jì)數(shù)器中的內(nèi)容相加。例如:

Intel8086指令

MOVAL,[BX+4]

設(shè)BX=2000H,BX+4=2004H(2004H)=82H,則AL←82H例如:

LDAC5(X)

;變址寄存器X:數(shù)值10,則5+10=15

;讀取15號單元中的數(shù)據(jù)并且把它存儲在累加器中?!糇冎穼ぶ房捎糜跀?shù)組、向量、字符串等數(shù)據(jù)的處理例:

Intel8086指令

LODS;AL←(SI),SI←SI+1SIAAa0A+1a1A+2a2…+12.基址尋址◆操作數(shù)的有效地址等于指令中的形式地址與基址寄存器中的內(nèi)容之和?!艋芳拇嫫骺梢允且粋€專用的寄存器,也可以是由指令指定的一個通用寄存器。◆基址尋址主要用于將用戶程序的邏輯地址(用戶編寫程序時所使用的地址)轉(zhuǎn)換成主存的物理地址(程序在主存中的實(shí)際地址)?!艋穼ぶ放c變址尋址在形式上以及有效地址的計(jì)算方法上都是相似的,但它們的應(yīng)用場合是不同的。

基址尋址是面向系統(tǒng)的,主要用于邏輯地址到物理地址的變換,用以解決程序定位問題?;芳拇嫫饔上到y(tǒng)程序使用,對用戶是透明的。

變址尋址是面向用戶的,主要用于訪問數(shù)組、向量、字符串等成批數(shù)據(jù),用以解決程序的循環(huán)控制問題。3.2.4指令格式操作碼地址碼指令的基本格式:指令格式的設(shè)計(jì)包含兩個方面:

1.確定指令的長度;

2.劃分指令的字段,定義各字段的位數(shù)、含義。一、指令長度◆指令字長度:一個指令字所包含的二進(jìn)制信息的位數(shù)?!舳ㄩL指令:指令系統(tǒng)中所有指令的長度都是一樣的。◆可變長指令:各指令的長度可以不同。◆指令長度與機(jī)器字長二.指令的地址碼

考慮的問題:需要多少地址信息及如何給出地址。1.零地址指令格式:

(1)無需任何操作數(shù),如空操作,停機(jī)等指令。

(2)所需操作數(shù)是隱含指定的,如堆棧運(yùn)算指令。2.一地址指令格式:意義:

(1)AOP(A)(2)AC(AC)OP(A)OPOPA指令短,節(jié)省空間,執(zhí)行快,常用于微、小型機(jī)中。3.二地址指令格式:意義:

A1(A1)OP(A2)

最常用的指令格式,適用于中、小、微型機(jī)。OPA1A2◆二地址指令的幾種形式①存儲器—存儲器型(S—S型)指令②寄存器—寄存器型(R—R型)指令③寄存器—存儲器型(R—S型)指令OPR1R2OPRnA4.三地址指令格式:意義:

A3(A1)OP(A2)

常用于大、中型機(jī)中。OPA1A2A35.多地址指令

考慮一個簡單的例子:A=B+C

一個操作:加法三個操作數(shù):兩個源操作數(shù)——B、C

一個目的操作數(shù)——A

假定微處理器可以執(zhí)行16種不同的操作。需要4位來代表其中的操作(因?yàn)?4=16)(假設(shè)位模式1010→加法)假定僅有4種可能的操作數(shù)——A,B,C和D。用兩位來表示每一種操作數(shù):

00→A,01→B,10→C,11→D圖3.4采用(a)三操作數(shù),(b)二操作數(shù),(c)單操作數(shù),(d)0操作數(shù)的指令格式和計(jì)算A=B+C的匯編語言程序以及機(jī)器代碼。

微處理器可以設(shè)計(jì)成能運(yùn)行具有3、2、1或0個操作數(shù)的指令。

二、指令的操作碼

指令系統(tǒng)中的每一條指令都有唯一確定的操作碼。操作碼位數(shù)取決于機(jī)器指令系統(tǒng)的規(guī)模。

1.固定長度操作碼

操作碼的長度固定,且集中放在指令字的一

個字段中,其余部分全部用于地址碼。此方式有利于簡化硬件設(shè)計(jì)和減少指令譯碼

時間,用于字長較長的大、中型及超級小型機(jī)中。

2.可變長度操作碼

操作碼的長度允許有幾種不同的選擇,對地址

數(shù)少的指令允許操作碼長些,對地址數(shù)多的指令,

則操作碼就短些。

若指令長度一定,則操作碼字段與地址碼字

段之間存在平衡問題一般均采用

“擴(kuò)展操作碼”

方法?!?/p>

擴(kuò)展操作碼

目的:在滿足需要的前提下,有效地縮短指令字長。例:設(shè)某機(jī)指令字長為16位,若固定OP為4位,三個地址

碼,每個4位,其格式為:OPA1A2A3若采用固定長度操作碼,則最多只允許有16種三地址指令。00001111××××××××××××…××××××××××××………15/15/15擴(kuò)展法

15條三地址指令、14條二地址指令、31條一地址指令、16條0地址指令,共76條指令,其擴(kuò)展方法如下:00001110××××××××××××…0001××××××××××××××××××××××××………15條三地址指令11111111××××××××…1101××××××××………14條二地址指令000011111111××××…1110××××………31條一地址指令11100000111111111111…………16條0地址指令111111110000111111111111PentiumⅡ的指令格式:

指令長度是可變的,從1個字節(jié)到12個字節(jié)。MOD字段與R/M字段:5位,表示8個寄存器和24種尋址方法3.3指令集結(jié)構(gòu)設(shè)計(jì)

一、指令系統(tǒng)的基本要求1.完備性任何運(yùn)算都可以用指令編程實(shí)現(xiàn)。即要求指令系統(tǒng)的指令豐富、功能齊全、使用方便,應(yīng)具有所有基本指令。2.有效性用指令系統(tǒng)中的指令編寫的程序能高效率運(yùn)行,占用空間小、執(zhí)行速度快。3.規(guī)整性

指令系統(tǒng)具有對稱性、勻齊性,指令與數(shù)據(jù)格式的一致性?!魧ΨQ性:所有寄存器和存儲單元均同等對待,所有指令可以使用所有尋址方式,減少特殊操作和例外情況。◆勻齊性:一種操作可支持各種數(shù)據(jù)類型?!糁噶钆c數(shù)據(jù)格式的一致性:指令長度與數(shù)據(jù)長度有一定的關(guān)系,以便于存取和處理。4.兼容性

二、指令系統(tǒng)的兩種設(shè)計(jì)風(fēng)格

1.復(fù)雜指令系統(tǒng)計(jì)算機(jī)

CISC

靠增強(qiáng)指令的功能,增加指令系統(tǒng)的復(fù)雜程度來提高計(jì)算機(jī)系統(tǒng)的性能。

特點(diǎn):

(1)指令系統(tǒng)復(fù)雜龐大,指令數(shù)目一般多達(dá)

200~300條。

(2)指令格式多,指令字長不固定,使用多種不同的尋址方式。

(3)可訪存指令不受限制。

(4)各種指令的執(zhí)行時間和使用頻率相差很大。

(5)大多數(shù)采用微程序控制器。2.精簡指令系統(tǒng)計(jì)算機(jī)RISC

靠精簡指令系統(tǒng),簡化指令功能及優(yōu)化的編譯程序來提高計(jì)算機(jī)系統(tǒng)的性能。特點(diǎn):

(1)選取使用頻率高的簡單指令以及很有用但又不復(fù)雜的指令組成指令系統(tǒng)。

(2)指令數(shù)少,指令長度一致,指令格式少,尋址方式少,指令總數(shù)大都不超過100條。

(3)以寄存器—

寄存器方式工作,只有取數(shù)/存數(shù)

(LOAD/STORE)指令訪問存儲器,其余指令的操作都在寄存器之間進(jìn)行。

(4)采用指令流水線調(diào)度,使大部分指令在一個機(jī)器周期內(nèi)完成。(5)使用較多的通用寄存器以減少訪存。(6)以組合電路控制為主,不用或少用微程序控制。(7)

采用優(yōu)化編譯技術(shù),力求高效率支持高級語言的實(shí)現(xiàn)。3.4相對簡單的指令集結(jié)構(gòu)存儲器模型:該微處理器可以訪問64K(=216)字節(jié)

的存儲器(每字節(jié)8位)或者64K×8的

存儲器。從外部設(shè)備輸入數(shù)據(jù)和輸出數(shù)

據(jù)到外部設(shè)備,都可以被看作是訪問內(nèi)

存。三個寄存器:累加器(AC)、寄存器R、1位零標(biāo)志Z。16條指令,每一條都是8位指令碼,見表3.1。表3.1相對簡單CPU的指令集

LDAC、STAC、JUMP、JMPZ和JPNZ指令都需要16位的存儲地址。這些指令在存儲器中每個都需要3字節(jié)。第一個字節(jié)包含指令的操作碼,另外兩字節(jié)對應(yīng)地址。

3字節(jié)格式1字節(jié)格式

相對簡單CPU的指令格式:例如:25:JUMP1234H該指令以如下形式存儲在存儲器中:

25:00000101(JUMP)

26:00110100(34H)

27:00010010(12H)注意:第二字節(jié)低8位,第三字節(jié)高8位指令集結(jié)構(gòu)的用法舉例:用相對簡單CPU編程計(jì)算1+2+……+n

則其高級語言的代碼片斷如下:

可以把數(shù)值n存儲在標(biāo)明為n的存儲單元中,結(jié)果存在標(biāo)明為total的內(nèi)存單元處,內(nèi)存單元i用于存儲求和的次數(shù)。確定運(yùn)算步驟如下:

total=0;

FORi=1TOnDO{total=total+i};

1:total=0,i=02:i=i+13:total=total+i4:IFi≠nTHENGOTO2實(shí)現(xiàn)這一算法的相對簡單CPU的代碼如下:

CLACSTACtotalSTACiLoop:LDACiINACSTACiMVACLDACtotalADDSTACtotalMVACLDACnSUBJPNZLooptotal=0,i=0i=i+1total=total+iIFi≠nTHENGOTOLoop下表顯示了當(dāng)n=5時代碼的運(yùn)行過程:表3.2循環(huán)求和程序的執(zhí)行步驟

怎樣看待這個指令集結(jié)構(gòu)?

它滿足了以教學(xué)為目的的設(shè)計(jì)目標(biāo)。當(dāng)我們在第6和7章中設(shè)計(jì)這種CPU時我們就會看到,其復(fù)雜度足以闡明很多CPU的設(shè)計(jì)原則,卻又沒有掉進(jìn)自身復(fù)雜度的陷阱中。對于簡單的應(yīng)用程序來說,指令集完整。如果一個應(yīng)用程序需要使用浮點(diǎn)型數(shù)據(jù),它就不是十分完整。對于通用計(jì)算機(jī)(例如個人計(jì)算機(jī)),該指令集顯然是不夠的。該指令集是相當(dāng)正交的。只是多了OR指令,但有時CPU的指令集不是完全正交更好一些。

寄存器組是它最大的弱點(diǎn)。寄存器的缺乏導(dǎo)致執(zhí)行任務(wù)較慢,并且降低了性能。3.5實(shí)例:8085微處理器指令集結(jié)構(gòu)3.5.18085微處理器的寄存器組

通用數(shù)據(jù)寄存器:

累加寄存器A-總是接收一個8位的算術(shù)或邏輯指令的結(jié)果;也為所有采用二操作數(shù)的指令提供一個操作數(shù)。

六個通用寄存器

-命名為B,C,D,E,H和L

,可成對訪問:B和C,D和E,H和L

。寄存器對HL常用來指向內(nèi)存單元。

16位的堆棧指針寄存器SP:包含堆棧頂部的地址。

5個標(biāo)志,共同稱為標(biāo)志寄存器:●

符號標(biāo)志S:表明算術(shù)或邏輯指令計(jì)算出的結(jié)果的符號。其中,值1表示負(fù)數(shù);值0表示正數(shù)(或零)?!?/p>

零標(biāo)志Z:如果算術(shù)或邏輯運(yùn)算指令產(chǎn)生的結(jié)果為0,則將Z置為1;否則Z為0?!?/p>

奇偶標(biāo)志P:如果算術(shù)或邏輯運(yùn)算結(jié)果中有偶數(shù)個1,則將P置為1;否則P為0?!?/p>

進(jìn)位標(biāo)志CY:當(dāng)算術(shù)運(yùn)算產(chǎn)生進(jìn)位時才去設(shè)置它。

輔助進(jìn)位標(biāo)志AC:與進(jìn)位標(biāo)志類似。它不指明進(jìn)位值,但指出從結(jié)果的低四位向高四位傳遞了進(jìn)位。例如,加法00001111+00001000=00010111中斷標(biāo)志寄存器IM:用于允許和禁止中斷而且檢查待處理的中斷。程序員可以讀取并且設(shè)置該寄存器中的值來處理中斷。

例如,加法11110000+10000000=101110000,對兩個8位值相加但產(chǎn)生了9位結(jié)果。最左邊的1被存儲在CY中;如果加法不產(chǎn)生進(jìn)位1,則CY中會存儲0。3.5.28085微處理器指令集

8085指令集總共包含了74條指令??煞譃槿齻€部分:數(shù)據(jù)傳送指令、數(shù)據(jù)運(yùn)算指令和程序控制指令。采用如下記號描述:

r,r1,r2:表示任何一個8位寄存器A,B,C,D,E,H,或者L。

M:表示內(nèi)存單元。M[HL]表明該內(nèi)存單元的地址存在寄存器對HL中。

rp:表示寄存器對BC,DE,HL,或者堆棧指針SP。

Г:一個16位地址或者數(shù)據(jù)?!?/p>

n:是一個存儲在內(nèi)存中且緊跟操作碼后的8位地址或者數(shù)據(jù)值?!?/p>

cond:條件指令的一個條件。值為:NZ、Z、P、N、PO、PE、NC、C。除了POPPSW指令外,其它指令都不會修改標(biāo)志的值。

(PSW:處理器狀態(tài)字(保存累加器和標(biāo)志器中的內(nèi)容

))表3.38085微處理器的數(shù)據(jù)傳送指令

(立即尋址)(直接尋址)

指令的通用格式。一些指令有指定寄存器的字段,而另一些指令這些部分卻是固定的。

圖3.68085的指令格式一字節(jié)二字節(jié)數(shù)據(jù)運(yùn)算指令大多數(shù)會影響表中的標(biāo)志。

表3.48085微處理器的數(shù)據(jù)運(yùn)算指令

13條程序控制指令。DI,EI,RIM和SIM包含在此因?yàn)樗鼈兛梢蕴幚碇袛?,而中斷最終又會影響程序控制。這些指令都不修改標(biāo)志。

表3.58085微處理器的程序控制指令

3.5.3一個簡單的8085程序

計(jì)算和1+2+……+n,并且把結(jié)果存儲于內(nèi)存單元total中。n值最初存于標(biāo)志為n的內(nèi)存單元中。

當(dāng)設(shè)計(jì)此程序時,我們計(jì)算如n+(n-1)+……+1形式的總和。

算法如下:

與相對簡單CPU中的程序不同,8085程序把它的運(yùn)行值存儲在CPU寄存器中。寄存器B包含數(shù)值i,總和存儲在寄存器A

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論