計算機組成原理課件第4章_第1頁
計算機組成原理課件第4章_第2頁
計算機組成原理課件第4章_第3頁
計算機組成原理課件第4章_第4頁
計算機組成原理課件第4章_第5頁
已閱讀5頁,還剩117頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章指令系統(tǒng)主講教師莊春興第四章指令系統(tǒng)主講教師莊春興*2本章主要內(nèi)容4.1

指令系統(tǒng)的發(fā)展和性能要求4.2

指令格式4.3

指令和數(shù)據(jù)的尋址方式4.4

堆棧尋址方式4.5

典型指令*2本章主要內(nèi)容4.1

指令系統(tǒng)的發(fā)展和性能要求*3指令系統(tǒng)基本概念機器指令(指令)計算機能直接識別、執(zhí)行的某種操作命令。微指令:微程序級的命令,它屬于硬件;宏指令:由若干條機器指令組成的軟件指令,它屬于軟件;機器指令(指令):介于微指令與宏指令之間,每條指令可完成一個獨立的算術(shù)運算或邏輯運算。程序是解決某一實際問題的指令序列指令系統(tǒng)(指令集)

一臺計算機中所有機器指令的集合。機器硬件設(shè)計的依據(jù),也是軟件設(shè)計的基礎(chǔ)。硬件和軟件間的界面,直接影響計算機系統(tǒng)性能*3指令系統(tǒng)基本概念機器指令(指令)*4系列計算機指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的一系列計算機。IBM,PDP-11,VAX-11,ARM,Intel-x86,Pentium系列計算機主要是解決軟件兼容的問題。新計算機中必須包含老計算機的指令系統(tǒng),保證軟件向上兼容,保護用戶投資。*4系列計算機指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的一系列計*5RISC與CISCCISC(復(fù)雜指令系統(tǒng)計算機)ComplexInstructionSystemComputer指令數(shù)量多(多達幾百條),指令功能,復(fù)雜的計算機。難以保證正確性,不易調(diào)試維護,造成硬件資源浪費RISC(精簡指令系統(tǒng)計算機)ReducedInstructionSystemComputer指令數(shù)量少,指令功能單一的計算機。*5RISC與CISCCISC(復(fù)雜指令系統(tǒng)計算機)*64.1.2對指令系統(tǒng)性能的要求完備性:指令豐富,功能齊全,使用方便。有效性:程序占空間小,執(zhí)行速度快。規(guī)整性:對稱性(所有寄存器、存儲單元同等對待)、勻齊性(一種操作支持多種數(shù)據(jù)類型):指令格式和數(shù)據(jù)格式的一致性(指令長度和數(shù)據(jù)長度通常是字節(jié)的整數(shù)倍):兼容性:系列機軟件向上兼容*64.1.2對指令系統(tǒng)性能的要求完備性:指令豐富,功能齊*7高級語言(如C,F(xiàn)ORTRAN等)其語句和用法與具體機器的指令系統(tǒng)無關(guān),易編程。不能用于編寫直接訪問機器硬件資源的系統(tǒng)軟件或設(shè)備控制軟件低級語言機器語言(二進制語言)匯編語言(符號語言)面向機器的語言,和具體機器的指令系統(tǒng)密切相關(guān)。機器語言用指令代碼編寫程序,而符號語言用指令助記符來編寫程序。必須借助匯編程序或編譯程序,把符號語言或高級語言翻譯成二進制碼組成的機器語言。4.1.3低級語言與硬件結(jié)構(gòu)的關(guān)系*7高級語言(如C,F(xiàn)ORTRAN等)4.1.3低級語言與*8

4.2指令格式表示一條指令的機器字,稱為指令字,簡稱指令。指令格式:用二進制代碼表示指令的結(jié)構(gòu)形式。操作碼字段地址碼字段*84.2指令格式表示一條指令的機器字,稱為指令字,簡稱*94.2.1

操作碼(OP)操作碼字段表征指令的操作特性與功能指令系統(tǒng)中每一條指令對應(yīng)一個操作碼操作碼字段的位數(shù)取決于指令系統(tǒng)的規(guī)模n=2L

定長指令、變長指令(固定位數(shù)和可變位數(shù))操作碼字段地址碼字段*94.2.1操作碼(OP)操作碼字段表征指令的操作特性*104.2.2

地址碼(AC)地址碼通常指定參與操作的操作數(shù)的地址或操作數(shù)本身地址碼包括被操作數(shù),操作數(shù),操作結(jié)果

操作碼

A1

A2

A3操作碼

A1

A2操作碼

A1

操作碼

二地址格式三地址格式一地址格式零地址格式*104.2.2地址碼(AC)地址碼通常指定參與操作的操*114.2.2

地址碼(AC)(1)零地址指令兩種情況:不需要操作數(shù),如空操作指令NOP;隱含一個操作數(shù)位于累加器AC中。如十進制修正指令DAA。(2)一地址指令有兩種情況:只需要一個操作數(shù),如求反指令NOT;需要兩個操作數(shù),但另一個操作數(shù)在累加寄存器AC中

(AC)

OP

(A)

->

AC

*114.2.2地址碼(AC)(1)零地址指令兩種情況:*124.2.2

地址碼(AC)(3)二地址指令

(A1)

OP

(A2)

->

A1(4)三地址指令

(A1)

OP

(A2)

->

A3

A1為被操作數(shù)地址,也稱源操作數(shù)地址;A2為操作數(shù)地址,也稱終點操作數(shù)地址;A3為存放結(jié)果的地址。A1,A2,A3可以是內(nèi)存中的單元地址,也可以是運算器中通用寄存器的地址。

*124.2.2地址碼(AC)(3)二地址指令*13按操作數(shù)的物理位置分類存儲器-存儲器(SS)型寄存器-寄存器(RR)型寄存器-存儲器(RS)型

*13按操作數(shù)的物理位置分類存儲器-存儲器(SS)型*144.2.3指令字長度指令中包含二進制代碼的位數(shù)機器字長計算機能直接處理的二進制數(shù)據(jù)的位數(shù),它決定了計算機的運算精度指令字長度與機器字的長度有關(guān):

單字長,雙字長,半字長。等長指令:結(jié)構(gòu)簡單,控制線路簡單。變長指令:結(jié)構(gòu)靈活,充分利用指令長度,控制復(fù)雜*144.2.3指令字長度指令中包含二進制代碼的位數(shù)*15指令字助記符典型指令

指令助記符

二進制操作碼

加法

ADD001

減法

SUB010

傳送

MOV011

跳轉(zhuǎn)

JMP100

轉(zhuǎn)子

JSR101

存儲

STR110

讀數(shù)

LDA111為了書寫和閱讀程序,每條指令通常用3個或4個英文縮寫字母來表示。表4.2指令助記符舉例*15指令字助記符典型指令指令助記符二進制操作碼*164.2.5指令格式舉例1.八位微型計算機的指令格式

8位微型機字長只有8位,指令結(jié)構(gòu)是一種可變字長形式,包含單字長、雙字長、三字長指令等多種。操作碼

操作碼

A1

A2操作碼

A1

單字長指令雙字長指令三字長指令*164.2.5指令格式舉例1.八位微型計算機的指令格*174.2.5指令格式舉例2.

PDP/11系列機指令格式操作碼字段是不固定,長度不相同。這樣做可以擴展操作碼以包含較多的指令。但是操作碼字段不固定,對控制器的設(shè)計來說必將復(fù)雜化*174.2.5指令格式舉例2.PDP/11系列機指令*184.ARM指令格式*184.ARM指令格式*194.2.5指令格式舉例4.

pentium指令格式pentium機的指令字長度是可變的:從1字節(jié)到12字節(jié),還可以帶前綴,指令格式如下所示。

0或1

0或1

0或1

0或1(字節(jié)數(shù))指令前綴段取代

操作數(shù)長度取代

地址長度取代1或2

0或1

0或1

0,1,2,4

0,1,2,4(字節(jié)數(shù))操作碼ModReg或操作碼R/M比例S變址I基址B位移量立即數(shù)

2位3位3位2位3位3位*194.2.5指令格式舉例4.pentium指令格式*20指令格式分析[例1]指令格式如下所示,其中OP為操作碼,試分析指令格式的特點。15987

43

0

op源寄存器目標(biāo)寄存器[解]:

(1)單字長二地址指令。

(2)操作碼字段OP可以指定128條指令。

(3)源寄存器和目標(biāo)寄存器都是通用寄存器(可分別指定16個),所以是RR型指令,兩個操作數(shù)均在寄存器中。

(4)這種指令結(jié)構(gòu)常用于算術(shù)邏輯運算類指令。*20指令格式分析[例1]指令格式如下所示,其中OP為操作*21指令格式分析[例2]

指令格式如下所示,OP為操作碼字段,試分析指令格式特點

[解]:

(1)雙字長二地址指令,用于訪問存儲器。

(2)操作碼字段OP為6位,可以指定64種操作。

(3)一個操作數(shù)在源寄存器(共16個),另一個操作數(shù)在存儲器中(由變址寄存器和位移量決定)所以是RS型指令。

op源寄存器變址寄存器

位移量(16位)15

10

7

4

3

0*21指令格式分析[例2]指令格式如下所示,OP為操作碼字*224.3

指令和數(shù)據(jù)的尋址方式在存儲器中,操作數(shù)或指令字寫入或讀出的方式,有地址指定方式、相聯(lián)存儲方式和堆棧存取方式。當(dāng)采用地址指定方式時,尋找指令或操作數(shù)有效地址的方式指令尋址

順序?qū)ぶ诽S尋址操作數(shù)尋址*224.3

指令和數(shù)據(jù)的尋址方式在存儲器中,操作數(shù)或指令*231.順序?qū)ぶ贩绞剑≒C)+1->PC程序的指令序列在主存順序存放。程序執(zhí)行時從第一條指令開始,逐條取出并逐條執(zhí)行,這種程序的順序執(zhí)行過程,稱為順序?qū)ぶ贩绞健榱诉_到順序?qū)ぶ返哪康?,CPU中必須有一個程序計數(shù)器(PC)對指令的順序號進行計數(shù)。PC中開始時存放程序的首地址,每執(zhí)行一條指令,PC加1,以指出下條指令的地址,直到程序結(jié)束。PC存放下一條指令的地址*231.順序?qū)ぶ贩绞剑≒C)+1->PC程序的指*24跳躍尋址目標(biāo)地址->PC當(dāng)程序中出現(xiàn)分支或循環(huán)時,就會改變程序的執(zhí)行順序。此時對指令尋址就要采取跳躍尋址方式。所謂跳躍,就是指下條指令的地址不是通過程序計數(shù)器PC當(dāng)前值獲得的,而是由指令本身給出。跳躍的處理方式是重新修改PC的內(nèi)容。然后進入取指令階段。*24跳躍尋址目標(biāo)地址->PC當(dāng)程序中*25跳躍尋址過程IR100JMP103MOVAX,BXPC內(nèi)存100101102103+1JMP103指令寄存器IRMOVAX,BX103*25跳躍尋址過程IR100JMP103MOVAX,BX*264.3.2操作數(shù)的尋址方式形成操作數(shù)有效地址的方法。例如,一種單地址指令的結(jié)構(gòu)如下所示,其中用X,I,D各字段組成該指令的操作數(shù)地址。尋址過程就是把操作數(shù)的形式地址,變換為操作數(shù)的有效地址的過程。實際有效地址為E,實際操作數(shù)SS=(E)

OPXID操作碼變址位形式地址間址位*264.3.2操作數(shù)的尋址方式形成操作數(shù)有效地址的方法。*27隱含尋址在指令中不明顯的給出而是隱含著操作數(shù)的地址例如,單地址的指令格式,沒有在地址字段中指明第二操作數(shù)地址,而是規(guī)定累加寄存器AC作為第二操作數(shù)地址,AC對單地址指令格式來說是隱含地址。*27隱含尋址在指令中不明顯的給出而是隱含著操作數(shù)的地址*28立即尋址指令的地址字段指出的不是操作數(shù)的地址,而是操作數(shù)本身這種方式的特點是指令執(zhí)行時間很短,不需要訪問內(nèi)存取數(shù)例如:單地址的移位指令格式為

OP(移位)

F

D這里D不是地址,而是一個操作數(shù)。F為標(biāo)志位,當(dāng)F=1,操作數(shù)進行右移;當(dāng)F=0時,操作數(shù)進行左移。*28立即尋址指令的地址字段指出的不是操作數(shù)的地址,而是操作*29直接尋址特點是:在指令格式的地址字段中直接指出操作數(shù)在內(nèi)存的地址D。

采用直接尋址方式時,指令字中的形式地址D就是操作數(shù)的有效地址E,既E=D。因此通常把形式地址D又稱為直接地址。此時,由尋址模式給予指示。如果用S表示操作數(shù),那么直接尋址的邏輯表達式為

S=(E)=(D)直接尋址*29直接尋址特點是:在指令格式的地址字段中直接指出操作數(shù)在*30

間接尋址的情況下,指令地址字段中的形式地址D不是操作數(shù)的真正地址,而是操作數(shù)地址的指示器,D單元的內(nèi)容才是操作數(shù)的有效地址

如果把直接尋址和間接尋址結(jié)合起來,指令有如下形式:

操作碼

I

D尋址特征位I=0,表示直接尋址,這時有效地址E=D;

I=1,表示間接尋址,這時有效地址E=(D)。間接尋址*30間接尋址的情況下,指令地址字段中的形式地址D不是操*31寄存器尋址方式和寄存器間接尋址方式寄存器尋址操作數(shù)在CPU的內(nèi)部寄存器中.寄存器間接尋址指令格式中的寄存器內(nèi)容不是操作數(shù),而是操作數(shù)的地址,該地址指明的操作數(shù)在內(nèi)存中*31寄存器尋址方式和寄存器間接尋址方式寄存器尋址*32相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形式地址D而形成操作數(shù)的有效地址。采用相對尋址方式的好處是程序員無須用指令的絕對地址編程,所編程序可以放在內(nèi)存任何地方。此時形式地址D通常稱為偏移量,其值可正可負,相對于當(dāng)前指令地址進行浮動。相對尋址方式*32相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形*33基址尋址方式是將CPU中基址寄存器的內(nèi)容加上指令格式中的形式地址而形成操作數(shù)的有效地址。

優(yōu)點是可以擴大尋址能力?;穼ぶ贩绞?33基址尋址方式是將CPU中基址寄存器的內(nèi)容加上*34變址尋址方式變址尋址方式與基址尋址方式計算有效地址的方法很相似,它把CPU中某個變址寄存器的內(nèi)容與偏移量D相加來形成操作數(shù)有效地址。但使用變址尋址方式的目的不在于擴大尋址空間,而在于實現(xiàn)程序塊的規(guī)律性變化。塊尋址方式

塊尋址方式經(jīng)常用在輸入輸出指令中,以實現(xiàn)外存儲器或外圍設(shè)備同內(nèi)存之間的數(shù)據(jù)塊傳送。塊尋址方式在內(nèi)存中還可用于數(shù)據(jù)塊搬家。塊尋址時,通常在指令中指出數(shù)據(jù)塊的起始地址(首地址)和數(shù)據(jù)塊的長度(字數(shù)或字節(jié)數(shù))。如果數(shù)據(jù)塊是變長的,可用三種方法指出它的長度:

(1)指令中劃出字段指出長度;

(2)指令格式中指出數(shù)據(jù)塊的首地址與末地址;

(3)由塊結(jié)束字符指出數(shù)據(jù)塊長度。

操作碼首地址

標(biāo)志位末地址*34變址尋址方式操作碼首地址標(biāo)志位末地址*35段尋址Intel8086/8088微機中,ALU16位運算,但其尋址范圍可到1M,即地址有20位。實質(zhì)是基值尋址。4位16位邏輯地址16位段寄存器20位物理地址ALU*35段尋址Intel8086/8088微機中,ALU16*36[例3]一種二地址RS型指令的結(jié)構(gòu)如下所示:

6位4位1位2位16位其中I為間接尋址標(biāo)志位,X為尋址模式字段,D位偏移量字段。通過I,X,D的組合,可構(gòu)成下表所示的尋址方式。請寫出六種尋址方式的名稱。[解]:⑴直接尋址⑵相對尋址⑶變址尋址⑷寄存器間接尋址⑸間接尋址⑹基址尋址OPIX

偏移量D*36[例3]一種二地址RS型指令的結(jié)構(gòu)如下所示:其中I*37例:某16位機器所使用的指令格式和尋址方式如下所示,該機有兩個20位基址寄存器,四個16位變址寄存器,十六個16位通用寄存器,指令匯編格式中的S和D都是指通用寄存器,M指主存中的一個單元。三種指令的操作碼分別是MOV為0AH,STA為1BH,LDA為3CH。(1)分析三種指令的指令格式與尋址方式特點。(2)CPU完成哪一種操作所花時間最短?哪一種操作所花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?(3)下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?LDAD,M*37例:某16位機器所使用的指令格式和尋址方式如下所示,該*38例:某16位機器所使用的指令格式和尋址方式如下所示,該機有兩個20位基址寄存器,四個16位變址寄存器,十六個16位通用寄存器,指令匯編格式中的S和D都是指通用寄存器,M指主存中的一個單元。三種指令的操作碼分別是MOV為0AH,STA為1BH,LDA為3CH。說明:MOV是傳送指令,STA為寫數(shù)指令,LDA為讀數(shù)指令。(1)分析三種指令的指令格式與尋址方式特點。該指令是單字長二地址指令,是RR型,源寄存器S由0~3位指定,目標(biāo)寄存器D由4~7位指定。該指令是雙字長二地址指令,是RS型,源寄存器S由4~7位指定,存儲器M由采用0~3位指定的變址寄存器加位移量的變址方式得到或者由8~9位指定的基址寄存器加位移量的基址尋址得到。*38例:某16位機器所使用的指令格式和尋址方式如下所示,該*39LDAD,M該指令是雙字長二地址指令,RS型,其中目標(biāo)寄存器D由4~7位指定,存儲器由指令中給出的20位地址由直接內(nèi)存尋址決定。(2)CPU完成哪一種操作所花時間最短?哪一種操作所花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?

CPU完成第一種指令所花時間最短,因為是RR型指令,不需要訪問存儲器

CPU完成第二種指令所花時間最長,因為是RS型指令需要訪問存儲器,同時要進行尋址方式的變換運算,基址寄存器的內(nèi)容加位移量或變址寄存器內(nèi)容加位移量,這也需要時間。第二種指令的執(zhí)行時間不會等于第三種指令,因為第三種指令也訪問存儲器,但節(jié)省了求有效地址運算的時間開銷。*39LDAD,M該指令是雙字長二地址指令,RS型,其中*40(3)下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?①F0F13CD2H根據(jù)已知條件:

MOV(OP)=0AH=001010STA(OP)=1BH=011011LDA(OP)=3CH=1111001111000011110001001111001101001011110000

1111

00010011110011010010②2856H0010100001010110編碼正確,其含義是把主存(13CD2)H地址單元的內(nèi)容取至15號寄存器。001010

00

01010110編碼正確,含義是把6號源寄存器的內(nèi)容傳送至5號目標(biāo)寄存器。

③6FD6H0110111111010110011011

11

11010110編碼錯誤,可改正為28D6H*40(3)下列情況下每個十六進制指令字分別代表什么操作?其*4120050011002001005008001002002100OPXD=100PC=1000R基=2000尋址方式X操作數(shù)立即0100直接1200間接2500相對3100變址4200變址間址5500有效地址ES=DE=D=100E=(D)=200E=PC+D=1100E=(R)+D=2100E=((R)+D)=200例:設(shè)某機的指令格式、有關(guān)寄存器和主存內(nèi)容如下,X為尋址方式,D為形式地址,請在下表中填入有效地址E及操作數(shù)的值。?*41200500110020010050080010020*424.4堆棧尋址方式堆棧------一組能存取數(shù)據(jù)的暫時存儲單元。存儲器一般采用隨機存儲方法,而堆棧采用先進后出的存儲方法串聯(lián)堆棧一組專門的寄存器,一個R保存一個數(shù)據(jù)。數(shù)據(jù)的傳送在棧頂和通用寄存器之間進行。

快速:在CPU內(nèi)部實現(xiàn)串行:進棧和出棧涉及到棧內(nèi)所有其它數(shù)據(jù)的移動;破壞性讀出:讀數(shù)據(jù)的同時也離開了堆棧;棧容量有限:取決于CPU內(nèi)堆棧專用寄存器的數(shù)量;棧頂不動,數(shù)據(jù)移動。*424.4堆棧尋址方式堆棧------一組能存取數(shù)據(jù)的*43堆棧尋址方式AABBACCBACBA堆棧頂PUSHAPUSHBPUSHCPOPC通用寄存器*43堆棧尋址方式AABBACCBACBA堆棧頂PUSH*44存儲器堆棧用一部分主存空間作堆棧稱為存儲器堆棧堆棧的數(shù)目、長度可隨意指定SP---堆棧指示器(棧指針),CPU中一個專門寄存器,SP內(nèi)容是棧頂單元地址。改變SP內(nèi)容即可移動棧頂?shù)奈恢?。堆棧操作期間,堆棧中數(shù)據(jù)不動,棧頂移動非破壞性讀出*44存儲器堆棧用一部分主存空間作堆棧稱為存儲器堆棧*45進棧進棧--------累加器中的數(shù)送堆棧保存.(AC)→堆棧MSP

堆棧指針(sp)-1→spaPUSHaPUSHb100999897SPabbAC*45進棧進棧--------累加器中的數(shù)送堆棧保存.aPU*46出棧出棧--------將堆棧中的數(shù)取出送累加器堆棧指針(sp)+1→sp(堆棧MSP)→AC100999897SPabbACa*46出棧出棧--------將堆棧中的數(shù)取出送累加器100*471)存儲器堆棧是一個由高地址向低地址延伸的空間。2)存儲器堆棧的棧頂由堆棧指針SP指示,如果用[A]表示通用寄存器A的內(nèi)容,SP表示堆棧指示器,Msp表示堆棧指示的存儲器棧頂單元,入棧操作和出棧操作可以表示為:入棧:[A]→Msp,[SP]-1→SP

出棧:[SP]+1→SP,[Msp]→A-存儲器堆棧的優(yōu)點:1)堆棧能夠具有程序員要求的任意長度;2)存儲器堆棧的數(shù)目由程序員自己決定;3)可以用對存儲器尋址的任何一條指令來對堆棧中的數(shù)據(jù)進行尋址。存儲器堆棧的特點*471)存儲器堆棧是一個由高地址向低地址延伸的空間。存儲器*48數(shù)據(jù)傳送指令取數(shù)指令存數(shù)指令傳送指令算術(shù)運算指令定點+,-,×,÷浮點+,-,×,÷求反,求補,比較等4.5

典型指令

成組傳送指令字節(jié)交換指令清累加器指令堆棧操作指令*48數(shù)據(jù)傳送指令4.5

典型指令成組傳送指令*49邏輯運算指令NOT,AND,OR,XOR,TEST程序控制指令無條件轉(zhuǎn)移條件轉(zhuǎn)移(C,Z,N,P,V)轉(zhuǎn)子程序子程序返回RET中斷返回IRET輸入輸出指令I(lǐng)NAX,nOUTn,A4.5

典型指令*49邏輯運算指令4.5

典型指令*50字符串處理字符串傳送、轉(zhuǎn)換、比較、查找特權(quán)指令:系統(tǒng)資源的分配和管理其他類狀態(tài)寄存器置位、復(fù)位指令(如CLC,STC,CLI,STI)測試指令、暫停指令,空操作指令4.5

典型指令*50字符串處理4.5

典型指令*51指令系統(tǒng)發(fā)展方向CISC---復(fù)雜指令系統(tǒng)計算機ComplexInstructionSystemComputer指令數(shù)量多,指令功能,復(fù)雜的計算機。

RISC---精簡指令系統(tǒng)計算機ReducedInstructionSystemComputer指令數(shù)量少,指令功能單一的計算機。*51指令系統(tǒng)發(fā)展方向CISC---復(fù)雜指令系統(tǒng)計算機*52精減指令系統(tǒng)(RISC)選取使用頻率最高的一些簡單指令,指令條數(shù)少;尋址方式簡單指令長度固定,指令格式簡單CPU設(shè)置大量寄存器只有存/取數(shù)指令才能訪問存儲器,其余指令的操作都在寄存器之間進行.每一個機器周期完成一條機器指令。

*52精減指令系統(tǒng)(RISC)選取使用頻率最高的一些簡單指令*53CISC與RISC的比較特征CISCRISCIBM370/168VAX11/780Intel80486SPARCMIPSR4000開發(fā)年份19731978198919871991指令數(shù)量/條2083032356994指令長度/B2~62~51~1144尋址方式4221122通用寄存器數(shù)/個1616840~52032控制存儲器大小/Kb420480246--Cache大小/KB6464832128*53CISC與RISC的比較特征CISC*54典型RISC機指令系統(tǒng)機器型號指令數(shù)尋址方式指令格式通用寄存器數(shù)RISC-I312278RISC-II3922138MIPS553416SPARC7543120-136MIPSR3000913332i860653432*54典型RISC機指令系統(tǒng)機器型號指令數(shù)尋址方式指令格式通*554.6ARM匯編語言匯編語言是計算機機器語言(二進制指令代碼)進行符號化的一種表示方法,每一個基本匯編語句對應(yīng)一條機器指令。

表4.11列出了嵌入式處理機ARM的匯編語言。其中操作數(shù)使用16個寄存器(r0,r1~r12,sp,Ir,pc),230個存儲字(字節(jié)編址,連續(xù)的字的地址間相差4)。*554.6ARM匯編語言匯編語言是計算機機器語言(二進制*56*56*57*57*58[例5]

將ARM匯編語言翻譯成機器語言。已知5條ARM指令格式譯碼如下表所示:

設(shè)r3寄存器中保存數(shù)組A的基址,h放在寄存器r2中。C語言程序語句

A[30]=h+A[30]可編譯成如下3條匯編語言指令:

LDRr5,[r3,#120]

;寄存器r5中獲得A[30]

ADDr5,r2,r5

;寄存器r5中獲得h+A[30]

STRr5,[r3,#120]

;將h+A[30]存入到A[30]

請問這3條匯編語言指令的機器語言是什么?*58[例5]將ARM匯編語言翻譯成機器語言。已知5條AR*59解LDRr5,[r3,#120]

;寄存器r5中獲得A[30]ADDr5,r2,r5,

;寄存器r5中獲得h+A[30]STRr5,[r3,#120]

;將h+A[30]存入到A[30]*59解LDRr5,[r3,#120];寄存器*604.6ARM匯編語言在進行匯編語言程序設(shè)計時,可直接使用英文單詞或其縮寫表示指令,使用標(biāo)識表示數(shù)據(jù)或地址,從而有效地避免了記憶二進制的指令代碼。

不用由程序設(shè)計人員對指令和數(shù)據(jù)分配內(nèi)存地址,直接調(diào)用操作系統(tǒng)的某些程序段完成輸入輸出。

用編輯程序建立好的匯編語言源程序,需要經(jīng)過系統(tǒng)軟件中的“匯編器”翻譯為機器語言程序之后,才能交付給計算機硬件系統(tǒng)去執(zhí)行。

*604.6ARM匯編語言在進行匯編語言程序設(shè)計時,可直接*61本章重點內(nèi)容指令系統(tǒng)基本概念指令基本格式指令系統(tǒng)尋址方式*61本章重點內(nèi)容指令系統(tǒng)基本概念第四章指令系統(tǒng)主講教師莊春興第四章指令系統(tǒng)主講教師莊春興*63本章主要內(nèi)容4.1

指令系統(tǒng)的發(fā)展和性能要求4.2

指令格式4.3

指令和數(shù)據(jù)的尋址方式4.4

堆棧尋址方式4.5

典型指令*2本章主要內(nèi)容4.1

指令系統(tǒng)的發(fā)展和性能要求*64指令系統(tǒng)基本概念機器指令(指令)計算機能直接識別、執(zhí)行的某種操作命令。微指令:微程序級的命令,它屬于硬件;宏指令:由若干條機器指令組成的軟件指令,它屬于軟件;機器指令(指令):介于微指令與宏指令之間,每條指令可完成一個獨立的算術(shù)運算或邏輯運算。程序是解決某一實際問題的指令序列指令系統(tǒng)(指令集)

一臺計算機中所有機器指令的集合。機器硬件設(shè)計的依據(jù),也是軟件設(shè)計的基礎(chǔ)。硬件和軟件間的界面,直接影響計算機系統(tǒng)性能*3指令系統(tǒng)基本概念機器指令(指令)*65系列計算機指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的一系列計算機。IBM,PDP-11,VAX-11,ARM,Intel-x86,Pentium系列計算機主要是解決軟件兼容的問題。新計算機中必須包含老計算機的指令系統(tǒng),保證軟件向上兼容,保護用戶投資。*4系列計算機指基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的一系列計*66RISC與CISCCISC(復(fù)雜指令系統(tǒng)計算機)ComplexInstructionSystemComputer指令數(shù)量多(多達幾百條),指令功能,復(fù)雜的計算機。難以保證正確性,不易調(diào)試維護,造成硬件資源浪費RISC(精簡指令系統(tǒng)計算機)ReducedInstructionSystemComputer指令數(shù)量少,指令功能單一的計算機。*5RISC與CISCCISC(復(fù)雜指令系統(tǒng)計算機)*674.1.2對指令系統(tǒng)性能的要求完備性:指令豐富,功能齊全,使用方便。有效性:程序占空間小,執(zhí)行速度快。規(guī)整性:對稱性(所有寄存器、存儲單元同等對待)、勻齊性(一種操作支持多種數(shù)據(jù)類型):指令格式和數(shù)據(jù)格式的一致性(指令長度和數(shù)據(jù)長度通常是字節(jié)的整數(shù)倍):兼容性:系列機軟件向上兼容*64.1.2對指令系統(tǒng)性能的要求完備性:指令豐富,功能齊*68高級語言(如C,F(xiàn)ORTRAN等)其語句和用法與具體機器的指令系統(tǒng)無關(guān),易編程。不能用于編寫直接訪問機器硬件資源的系統(tǒng)軟件或設(shè)備控制軟件低級語言機器語言(二進制語言)匯編語言(符號語言)面向機器的語言,和具體機器的指令系統(tǒng)密切相關(guān)。機器語言用指令代碼編寫程序,而符號語言用指令助記符來編寫程序。必須借助匯編程序或編譯程序,把符號語言或高級語言翻譯成二進制碼組成的機器語言。4.1.3低級語言與硬件結(jié)構(gòu)的關(guān)系*7高級語言(如C,F(xiàn)ORTRAN等)4.1.3低級語言與*69

4.2指令格式表示一條指令的機器字,稱為指令字,簡稱指令。指令格式:用二進制代碼表示指令的結(jié)構(gòu)形式。操作碼字段地址碼字段*84.2指令格式表示一條指令的機器字,稱為指令字,簡稱*704.2.1

操作碼(OP)操作碼字段表征指令的操作特性與功能指令系統(tǒng)中每一條指令對應(yīng)一個操作碼操作碼字段的位數(shù)取決于指令系統(tǒng)的規(guī)模n=2L

定長指令、變長指令(固定位數(shù)和可變位數(shù))操作碼字段地址碼字段*94.2.1操作碼(OP)操作碼字段表征指令的操作特性*714.2.2

地址碼(AC)地址碼通常指定參與操作的操作數(shù)的地址或操作數(shù)本身地址碼包括被操作數(shù),操作數(shù),操作結(jié)果

操作碼

A1

A2

A3操作碼

A1

A2操作碼

A1

操作碼

二地址格式三地址格式一地址格式零地址格式*104.2.2地址碼(AC)地址碼通常指定參與操作的操*724.2.2

地址碼(AC)(1)零地址指令兩種情況:不需要操作數(shù),如空操作指令NOP;隱含一個操作數(shù)位于累加器AC中。如十進制修正指令DAA。(2)一地址指令有兩種情況:只需要一個操作數(shù),如求反指令NOT;需要兩個操作數(shù),但另一個操作數(shù)在累加寄存器AC中

(AC)

OP

(A)

->

AC

*114.2.2地址碼(AC)(1)零地址指令兩種情況:*734.2.2

地址碼(AC)(3)二地址指令

(A1)

OP

(A2)

->

A1(4)三地址指令

(A1)

OP

(A2)

->

A3

A1為被操作數(shù)地址,也稱源操作數(shù)地址;A2為操作數(shù)地址,也稱終點操作數(shù)地址;A3為存放結(jié)果的地址。A1,A2,A3可以是內(nèi)存中的單元地址,也可以是運算器中通用寄存器的地址。

*124.2.2地址碼(AC)(3)二地址指令*74按操作數(shù)的物理位置分類存儲器-存儲器(SS)型寄存器-寄存器(RR)型寄存器-存儲器(RS)型

*13按操作數(shù)的物理位置分類存儲器-存儲器(SS)型*754.2.3指令字長度指令中包含二進制代碼的位數(shù)機器字長計算機能直接處理的二進制數(shù)據(jù)的位數(shù),它決定了計算機的運算精度指令字長度與機器字的長度有關(guān):

單字長,雙字長,半字長。等長指令:結(jié)構(gòu)簡單,控制線路簡單。變長指令:結(jié)構(gòu)靈活,充分利用指令長度,控制復(fù)雜*144.2.3指令字長度指令中包含二進制代碼的位數(shù)*76指令字助記符典型指令

指令助記符

二進制操作碼

加法

ADD001

減法

SUB010

傳送

MOV011

跳轉(zhuǎn)

JMP100

轉(zhuǎn)子

JSR101

存儲

STR110

讀數(shù)

LDA111為了書寫和閱讀程序,每條指令通常用3個或4個英文縮寫字母來表示。表4.2指令助記符舉例*15指令字助記符典型指令指令助記符二進制操作碼*774.2.5指令格式舉例1.八位微型計算機的指令格式

8位微型機字長只有8位,指令結(jié)構(gòu)是一種可變字長形式,包含單字長、雙字長、三字長指令等多種。操作碼

操作碼

A1

A2操作碼

A1

單字長指令雙字長指令三字長指令*164.2.5指令格式舉例1.八位微型計算機的指令格*784.2.5指令格式舉例2.

PDP/11系列機指令格式操作碼字段是不固定,長度不相同。這樣做可以擴展操作碼以包含較多的指令。但是操作碼字段不固定,對控制器的設(shè)計來說必將復(fù)雜化*174.2.5指令格式舉例2.PDP/11系列機指令*794.ARM指令格式*184.ARM指令格式*804.2.5指令格式舉例4.

pentium指令格式pentium機的指令字長度是可變的:從1字節(jié)到12字節(jié),還可以帶前綴,指令格式如下所示。

0或1

0或1

0或1

0或1(字節(jié)數(shù))指令前綴段取代

操作數(shù)長度取代

地址長度取代1或2

0或1

0或1

0,1,2,4

0,1,2,4(字節(jié)數(shù))操作碼ModReg或操作碼R/M比例S變址I基址B位移量立即數(shù)

2位3位3位2位3位3位*194.2.5指令格式舉例4.pentium指令格式*81指令格式分析[例1]指令格式如下所示,其中OP為操作碼,試分析指令格式的特點。15987

43

0

op源寄存器目標(biāo)寄存器[解]:

(1)單字長二地址指令。

(2)操作碼字段OP可以指定128條指令。

(3)源寄存器和目標(biāo)寄存器都是通用寄存器(可分別指定16個),所以是RR型指令,兩個操作數(shù)均在寄存器中。

(4)這種指令結(jié)構(gòu)常用于算術(shù)邏輯運算類指令。*20指令格式分析[例1]指令格式如下所示,其中OP為操作*82指令格式分析[例2]

指令格式如下所示,OP為操作碼字段,試分析指令格式特點

[解]:

(1)雙字長二地址指令,用于訪問存儲器。

(2)操作碼字段OP為6位,可以指定64種操作。

(3)一個操作數(shù)在源寄存器(共16個),另一個操作數(shù)在存儲器中(由變址寄存器和位移量決定)所以是RS型指令。

op源寄存器變址寄存器

位移量(16位)15

10

7

4

3

0*21指令格式分析[例2]指令格式如下所示,OP為操作碼字*834.3

指令和數(shù)據(jù)的尋址方式在存儲器中,操作數(shù)或指令字寫入或讀出的方式,有地址指定方式、相聯(lián)存儲方式和堆棧存取方式。當(dāng)采用地址指定方式時,尋找指令或操作數(shù)有效地址的方式指令尋址

順序?qū)ぶ诽S尋址操作數(shù)尋址*224.3

指令和數(shù)據(jù)的尋址方式在存儲器中,操作數(shù)或指令*841.順序?qū)ぶ贩绞剑≒C)+1->PC程序的指令序列在主存順序存放。程序執(zhí)行時從第一條指令開始,逐條取出并逐條執(zhí)行,這種程序的順序執(zhí)行過程,稱為順序?qū)ぶ贩绞?。為了達到順序?qū)ぶ返哪康?,CPU中必須有一個程序計數(shù)器(PC)對指令的順序號進行計數(shù)。PC中開始時存放程序的首地址,每執(zhí)行一條指令,PC加1,以指出下條指令的地址,直到程序結(jié)束。PC存放下一條指令的地址*231.順序?qū)ぶ贩绞剑≒C)+1->PC程序的指*85跳躍尋址目標(biāo)地址->PC當(dāng)程序中出現(xiàn)分支或循環(huán)時,就會改變程序的執(zhí)行順序。此時對指令尋址就要采取跳躍尋址方式。所謂跳躍,就是指下條指令的地址不是通過程序計數(shù)器PC當(dāng)前值獲得的,而是由指令本身給出。跳躍的處理方式是重新修改PC的內(nèi)容。然后進入取指令階段。*24跳躍尋址目標(biāo)地址->PC當(dāng)程序中*86跳躍尋址過程IR100JMP103MOVAX,BXPC內(nèi)存100101102103+1JMP103指令寄存器IRMOVAX,BX103*25跳躍尋址過程IR100JMP103MOVAX,BX*874.3.2操作數(shù)的尋址方式形成操作數(shù)有效地址的方法。例如,一種單地址指令的結(jié)構(gòu)如下所示,其中用X,I,D各字段組成該指令的操作數(shù)地址。尋址過程就是把操作數(shù)的形式地址,變換為操作數(shù)的有效地址的過程。實際有效地址為E,實際操作數(shù)SS=(E)

OPXID操作碼變址位形式地址間址位*264.3.2操作數(shù)的尋址方式形成操作數(shù)有效地址的方法。*88隱含尋址在指令中不明顯的給出而是隱含著操作數(shù)的地址例如,單地址的指令格式,沒有在地址字段中指明第二操作數(shù)地址,而是規(guī)定累加寄存器AC作為第二操作數(shù)地址,AC對單地址指令格式來說是隱含地址。*27隱含尋址在指令中不明顯的給出而是隱含著操作數(shù)的地址*89立即尋址指令的地址字段指出的不是操作數(shù)的地址,而是操作數(shù)本身這種方式的特點是指令執(zhí)行時間很短,不需要訪問內(nèi)存取數(shù)例如:單地址的移位指令格式為

OP(移位)

F

D這里D不是地址,而是一個操作數(shù)。F為標(biāo)志位,當(dāng)F=1,操作數(shù)進行右移;當(dāng)F=0時,操作數(shù)進行左移。*28立即尋址指令的地址字段指出的不是操作數(shù)的地址,而是操作*90直接尋址特點是:在指令格式的地址字段中直接指出操作數(shù)在內(nèi)存的地址D。

采用直接尋址方式時,指令字中的形式地址D就是操作數(shù)的有效地址E,既E=D。因此通常把形式地址D又稱為直接地址。此時,由尋址模式給予指示。如果用S表示操作數(shù),那么直接尋址的邏輯表達式為

S=(E)=(D)直接尋址*29直接尋址特點是:在指令格式的地址字段中直接指出操作數(shù)在*91

間接尋址的情況下,指令地址字段中的形式地址D不是操作數(shù)的真正地址,而是操作數(shù)地址的指示器,D單元的內(nèi)容才是操作數(shù)的有效地址

如果把直接尋址和間接尋址結(jié)合起來,指令有如下形式:

操作碼

I

D尋址特征位I=0,表示直接尋址,這時有效地址E=D;

I=1,表示間接尋址,這時有效地址E=(D)。間接尋址*30間接尋址的情況下,指令地址字段中的形式地址D不是操*92寄存器尋址方式和寄存器間接尋址方式寄存器尋址操作數(shù)在CPU的內(nèi)部寄存器中.寄存器間接尋址指令格式中的寄存器內(nèi)容不是操作數(shù),而是操作數(shù)的地址,該地址指明的操作數(shù)在內(nèi)存中*31寄存器尋址方式和寄存器間接尋址方式寄存器尋址*93相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形式地址D而形成操作數(shù)的有效地址。采用相對尋址方式的好處是程序員無須用指令的絕對地址編程,所編程序可以放在內(nèi)存任何地方。此時形式地址D通常稱為偏移量,其值可正可負,相對于當(dāng)前指令地址進行浮動。相對尋址方式*32相對尋址是把程序計數(shù)器PC的內(nèi)容加上指令格式中的形*94基址尋址方式是將CPU中基址寄存器的內(nèi)容加上指令格式中的形式地址而形成操作數(shù)的有效地址。

優(yōu)點是可以擴大尋址能力。基址尋址方式*33基址尋址方式是將CPU中基址寄存器的內(nèi)容加上*95變址尋址方式變址尋址方式與基址尋址方式計算有效地址的方法很相似,它把CPU中某個變址寄存器的內(nèi)容與偏移量D相加來形成操作數(shù)有效地址。但使用變址尋址方式的目的不在于擴大尋址空間,而在于實現(xiàn)程序塊的規(guī)律性變化。塊尋址方式

塊尋址方式經(jīng)常用在輸入輸出指令中,以實現(xiàn)外存儲器或外圍設(shè)備同內(nèi)存之間的數(shù)據(jù)塊傳送。塊尋址方式在內(nèi)存中還可用于數(shù)據(jù)塊搬家。塊尋址時,通常在指令中指出數(shù)據(jù)塊的起始地址(首地址)和數(shù)據(jù)塊的長度(字數(shù)或字節(jié)數(shù))。如果數(shù)據(jù)塊是變長的,可用三種方法指出它的長度:

(1)指令中劃出字段指出長度;

(2)指令格式中指出數(shù)據(jù)塊的首地址與末地址;

(3)由塊結(jié)束字符指出數(shù)據(jù)塊長度。

操作碼首地址

標(biāo)志位末地址*34變址尋址方式操作碼首地址標(biāo)志位末地址*96段尋址Intel8086/8088微機中,ALU16位運算,但其尋址范圍可到1M,即地址有20位。實質(zhì)是基值尋址。4位16位邏輯地址16位段寄存器20位物理地址ALU*35段尋址Intel8086/8088微機中,ALU16*97[例3]一種二地址RS型指令的結(jié)構(gòu)如下所示:

6位4位1位2位16位其中I為間接尋址標(biāo)志位,X為尋址模式字段,D位偏移量字段。通過I,X,D的組合,可構(gòu)成下表所示的尋址方式。請寫出六種尋址方式的名稱。[解]:⑴直接尋址⑵相對尋址⑶變址尋址⑷寄存器間接尋址⑸間接尋址⑹基址尋址OPIX

偏移量D*36[例3]一種二地址RS型指令的結(jié)構(gòu)如下所示:其中I*98例:某16位機器所使用的指令格式和尋址方式如下所示,該機有兩個20位基址寄存器,四個16位變址寄存器,十六個16位通用寄存器,指令匯編格式中的S和D都是指通用寄存器,M指主存中的一個單元。三種指令的操作碼分別是MOV為0AH,STA為1BH,LDA為3CH。(1)分析三種指令的指令格式與尋址方式特點。(2)CPU完成哪一種操作所花時間最短?哪一種操作所花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?(3)下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?LDAD,M*37例:某16位機器所使用的指令格式和尋址方式如下所示,該*99例:某16位機器所使用的指令格式和尋址方式如下所示,該機有兩個20位基址寄存器,四個16位變址寄存器,十六個16位通用寄存器,指令匯編格式中的S和D都是指通用寄存器,M指主存中的一個單元。三種指令的操作碼分別是MOV為0AH,STA為1BH,LDA為3CH。說明:MOV是傳送指令,STA為寫數(shù)指令,LDA為讀數(shù)指令。(1)分析三種指令的指令格式與尋址方式特點。該指令是單字長二地址指令,是RR型,源寄存器S由0~3位指定,目標(biāo)寄存器D由4~7位指定。該指令是雙字長二地址指令,是RS型,源寄存器S由4~7位指定,存儲器M由采用0~3位指定的變址寄存器加位移量的變址方式得到或者由8~9位指定的基址寄存器加位移量的基址尋址得到。*38例:某16位機器所使用的指令格式和尋址方式如下所示,該*100LDAD,M該指令是雙字長二地址指令,RS型,其中目標(biāo)寄存器D由4~7位指定,存儲器由指令中給出的20位地址由直接內(nèi)存尋址決定。(2)CPU完成哪一種操作所花時間最短?哪一種操作所花時間最長?第二種指令的執(zhí)行時間有時會等于第三種指令的執(zhí)行時間嗎?

CPU完成第一種指令所花時間最短,因為是RR型指令,不需要訪問存儲器

CPU完成第二種指令所花時間最長,因為是RS型指令需要訪問存儲器,同時要進行尋址方式的變換運算,基址寄存器的內(nèi)容加位移量或變址寄存器內(nèi)容加位移量,這也需要時間。第二種指令的執(zhí)行時間不會等于第三種指令,因為第三種指令也訪問存儲器,但節(jié)省了求有效地址運算的時間開銷。*39LDAD,M該指令是雙字長二地址指令,RS型,其中*101(3)下列情況下每個十六進制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?①F0F13CD2H根據(jù)已知條件:

MOV(OP)=0AH=001010STA(OP)=1BH=011011LDA(OP)=3CH=1111001111000011110001001111001101001011110000

1111

00010011110011010010②2856H0010100001010110編碼正確,其含義是把主存(13CD2)H地址單元的內(nèi)容取至15號寄存器。001010

00

01010110編碼正確,含義是把6號源寄存器的內(nèi)容傳送至5號目標(biāo)寄存器。

③6FD6H0110111111010110011011

11

11010110編碼錯誤,可改正為28D6H*40(3)下列情況下每個十六進制指令字分別代表什么操作?其*10220050011002001005008001002002100OPXD=100PC=1000R基=2000尋址方式X操作數(shù)立即0100直接1200間接2500相對3100變址4200變址間址5500有效地址ES=DE=D=100E=(D)=200E=PC+D=1100E=(R)+D=2100E=((R)+D)=200例:設(shè)某機的指令格式、有關(guān)寄存器和主存內(nèi)容如下,X為尋址方式,D為形式地址,請在下表中填入有效地址E及操作數(shù)的值。?*41200500110020010050080010020*1034.4堆棧尋址方式堆棧------一組能存取數(shù)據(jù)的暫時存儲單元。存儲器一般采用隨機存儲方法,而堆棧采用先進后出的存儲方法串聯(lián)堆棧一組專門的寄存器,一個R保存一個數(shù)據(jù)。數(shù)據(jù)的傳送在棧頂和通用寄存器之間進行。

快速:在CPU內(nèi)部實現(xiàn)串行:進棧和出棧涉及到棧內(nèi)所有其它數(shù)據(jù)的移動;破壞性讀出:讀數(shù)據(jù)的同時也離開了堆棧;棧容量有限:取決于CPU內(nèi)堆棧專用寄存器的數(shù)量;棧頂不動,數(shù)據(jù)移動。*424.4堆棧尋址方式堆棧------一組能存取數(shù)據(jù)的*104堆棧尋址方式AABBACCBACBA堆棧頂PUSHAPUSHBPUSHCPOPC通用寄存器*43堆棧尋址方式AABBACCBACBA堆棧頂PUSH*105存儲器堆棧用一部分主存空間作堆棧稱為存儲器堆棧堆棧的數(shù)目、長度可隨意指定SP---堆棧指示器(棧指針),CPU中一個專門寄存器,SP內(nèi)容是棧頂單元地址。改變SP內(nèi)容即可移動棧頂?shù)奈恢?。堆棧操作期間,堆棧中數(shù)據(jù)不動,棧頂移動非破壞性讀出*44存儲器堆棧用一部分主存空間作堆棧稱為存儲器堆棧*106進棧進棧--------累加器中的數(shù)送堆棧保存.(AC)→堆棧MSP

堆棧指針(sp)-1→spaPUSHaPUSHb100999897SPabbAC*45進棧進棧--------累加器中的數(shù)送堆棧保存.aPU*107出棧出棧--------將堆棧中的數(shù)取出送累加器堆棧指針(sp)+1→sp(堆棧MSP)→AC100999897SPabbACa*46出棧出棧--------將堆棧中的數(shù)取出送累加器100*1081)存儲器堆棧是一個由高地址向低地址延伸的空間。2)存儲器堆棧的棧頂由堆棧指針SP指示,如果用[A]表示通用寄存器A的內(nèi)容,SP表示堆棧指示器,Msp表示堆棧指示的存儲器棧頂單元,入棧操作和出棧操作可以表示為:入棧:[A]→Msp,[SP]-1→SP

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論