微型計算機原理與應(yīng)用第三章課件(一)_第1頁
微型計算機原理與應(yīng)用第三章課件(一)_第2頁
微型計算機原理與應(yīng)用第三章課件(一)_第3頁
微型計算機原理與應(yīng)用第三章課件(一)_第4頁
微型計算機原理與應(yīng)用第三章課件(一)_第5頁
已閱讀5頁,還剩182頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章-1尋址方式和指令系統(tǒng)

第3章』尋址方式和指令系統(tǒng)

教學重點:

A指令系統(tǒng)的一般概念

A對操作數(shù)的尋址方式

A六大類指令的操作原理:

/操作碼的含義

,指令對操作數(shù)的要求

/指令執(zhí)行的結(jié)果

第3章-1尋址方式和指令系統(tǒng)

第3章尋址方式和指令系統(tǒng)4

概述w

指令:控制計算機完成指定操作的命令;

機器指令:指令的二進制代碼形式,如:CD21H;

匯編指令:助記符形式的指令,如:INT21H;

指令系統(tǒng):CPU所有指令及其使用規(guī)則的集合。

8088/8086指令系統(tǒng):[

(1)指令向后兼容(x86系列);.

(2)應(yīng)用廣泛,資料豐富。

第3章-1尋址方式和指令系統(tǒng)

尋址方式

*尋址方式:指CPU指令中規(guī)定的尋找操作數(shù)所在的

地址的方式。

*操作數(shù):MOVAL,05H

III

操作碼目的操作數(shù),源操作數(shù)

*操作數(shù)引用時的字節(jié)順序:I

1.若存放的信息是字節(jié),則按順序存放

2.若存放的信息是字,則將字的低位字節(jié)存放在低

地址,高位字節(jié)存放在高地址

發(fā)/電果沒有特別說颯,導砒方式是指源據(jù)作劇的導址

第3章-1尋址方式和指令系統(tǒng)

088/8086的操作數(shù)分為3類

1、立即數(shù)(常數(shù))

取值范圍如下表:

8位16位

無符號數(shù)00H-FFH(0-255)0000H-FFFFH(0-65535

帶符號數(shù)80H.7FHQ128?127)8000H-7FFFH(-32768~3276

立即數(shù)只能用作源操作數(shù)9如

MOVAX,0FA00H;正確

MOV8000H,DX;錯誤

第3章-1尋址方式和指令系統(tǒng)

2,寄存器操作數(shù)4

放在8個通用寄存器或4個段寄存器中的操作數(shù)%

16位

AX

AHAL

16位

BX

BHBL

16位

CX

CHCL

16位

DX

DHDL

第3章-1尋址方式和指令系統(tǒng)

只能存放字操作數(shù)一

段寄存器存放當前

操作數(shù)的段基地址

不允許將立即數(shù)傳送至段寄存器!

第3章-1尋址方式和指令系統(tǒng)

3、存儲器操作數(shù)

類型存儲單元個數(shù)

一字節(jié)1

存儲器操作數(shù)J字2

一雙字4

一般不允許兩個操作數(shù)同時為存儲器操作數(shù)4

第3章-1尋址方式和指令系統(tǒng)

指令的執(zhí)行時間

取指令

取操作數(shù)

一條指令的指行時間二£

執(zhí)行指令

傳送結(jié)果

單位用時鐘周期數(shù)表示

建議:

1)盡量使用寄存器作為操作數(shù)

2)若有可能,用移位代替乘除法

3)盡量使用簡單的尋址方式

第3章-1尋址方式和指令系統(tǒng)

3.1.1立即尋址

立即尋址方式中,指令操作碼和操作數(shù)都在存/

儲器的代碼段中。■

匯編格式:n(n為立即操作數(shù),是用8位或16位,

二進制補碼表示的有符號數(shù))■

功能:操作數(shù)存放在存儲器,指令下一單元的一

內(nèi)容為立即操作數(shù)n。<

圖形表示:

立即尋址只能用于源操作數(shù)

MOVAX,1C8FH

指令MOVBYTEPTR[2A00H],8FH

n錯誤例:

XMOV2A00H,AX;錯誤!

第3章-1尋址方式和指令系統(tǒng)

例3.1

指令操作例:MOVAX,3102H;AX3102%:

執(zhí)行后,(AH)=31H,(AL)=02H

存儲器n

)碼

第3章-1尋址方式和指令系統(tǒng)

3.1.2直接尋址

匯編格式:①含有變量的地址表達式。

②段寄存器名:[EA]。

功能:有效地址由指令直接給出,有效地址

只包含位移量。

圖形表示:

段寄存器

指?默認的段寄存器為DS,但也可

左移4位以顯式地指定其他段寄存器

EA㈣為段超越前綴

師移地址也可用符號地址來表

PA麋作數(shù)示,如ADDR、VAR

第3章-1尋址方式和指令系統(tǒng)

例32指令操作例:MOVAX,[3102H]

AL-(3102H),AH-(3103H)

如果(DS尸2000H,(23012H)=CDH,(23013H)=ABH

則操作數(shù)的物理地址為:

20000H+3102H=23102H存儲器

第3章-1尋址方式和指令系統(tǒng)

3.1.3寄存器尋址

寄存器尋址方式的操作數(shù)在指令指明的寄存

中。

匯編格式:R(R為寄存器名)

功能:操作數(shù)直接存放在寄存器R中。

圖形表示:

指令I(lǐng)T操作數(shù)

?源操作數(shù)與目的操作數(shù)字長要相同;

■寄存器尋址與段地址無關(guān)。

第3章-1尋址方式和指令系統(tǒng)

例3.31

下列程序執(zhí)行后,(AX)=?,(BX)=?7

MOVAX,1234H二

MOVBX,5678H/

ADDAX,BX/

該程序中MOV指令為數(shù)據(jù)傳送指令操作符,ADD指令」

為加法指令操作符,三條指令皆為雙操作數(shù)指令。第一、

二條指令AX、BX皆為目的操作數(shù)地址,為寄存器尋址’

方式。第三條指令中,AX為目的操作數(shù)地址,BX為源,

操作數(shù)地址。源地址和目的地址皆為寄存器尋址方式。

第3章-1尋址方式和指令系統(tǒng)

圖形表示:Ax

指令|-----H1234H

BX

----------?!5678H

執(zhí)行:1234H一AX

5678H—BX

(AX)+(BX)-AX

執(zhí)行后:(AX)=68ACH,(BX)=5678H

第3章-1尋址方式和指令系統(tǒng)

3.1.4寄存器間接尋址

寄存器間接尋址方式中,寄存器的內(nèi)容

作數(shù)的偏移地址EA,操作數(shù)在存儲器中。

匯編格式:[R]

功能:操作數(shù)存放在存儲器,寄存器R存

作數(shù)的偏移地址EA。

第3章-1尋址方式和指令系統(tǒng)

偏移地址EA計算方法如下:

r[si]SI作間址寄存器。

[DI]DI作間址寄存器。

EA=Y

[BX]BX作間址寄存器。

I[BP]BP作間址寄存器。

?以SI、DI、BX為間址時,默認的段地址寄存為:

DS;以BP為間址時,默認的段地址寄存為SS;,

?只有SI、DLBX和BP可作間址寄存器。,

第3章-1尋址方式和指令系統(tǒng)

例3.4:指令操作例:MOVAX,[SI]

若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H

則指令執(zhí)行后,(AX尸3344H

61200------------61200H數(shù)

據(jù)

第3章-1尋址方式和指令系統(tǒng)

3.1.5變址尋址

變址尋址方式操作數(shù)的偏移地址EA為寄存器的

內(nèi)容加位移量,操作數(shù)在存儲器中。]

匯編格式:X[R](X表示位移量,是8位或16位

二進制補碼表示的有符號數(shù))]

功能:操作數(shù)存放在存儲器,寄存器R的內(nèi)容

加位移量X為操作數(shù)的偏移地址EA。I

圖形表示如下:

第3章-1尋址方式和指令系統(tǒng)

R段寄存器

?十,

PA噪作數(shù)

第3章-1尋址方式和指令系統(tǒng)

偏移地址EA計算方法如下:

r[SI]+XSI作變址寄存器。

[DI]+XDI作變址寄存器。

E"*[BX]+XBX作變址寄存器。

,.[BP]+XBP作變址寄存器。

第3章-1尋址方式和指令系統(tǒng)

例3.5:MOVAX,[BX+8]

MOVCX,TABLE[SI]

MOVAX,[BP+1000H];默認段寄存器為SS

?指令操作例:MOVAX,DATA[BX]

若(DS尸6000H,(BX尸1000H,DATA=2A00H,

(63A00H尸66H,(63A01H尸55H

貝I」物理地址=60000H+1000H+2A00H=63A00H

指令執(zhí)行后:(AX)=5566H

第3章-1尋址方式和指令系統(tǒng)

MOVAX,DATA[BX]

數(shù)

據(jù)

第3章-1尋址方式和指令系統(tǒng)

3.1.6基址一變址尋址

基址—變址尋址方式中,操作數(shù)的偏移地址

EA是指令中基址寄存器內(nèi)容、變址寄存器內(nèi)

容、位移量X三項之和,操作數(shù)在存儲器中。

匯編格式:X[BR][IR]I

功能:操作數(shù)存放在存儲器,BR的內(nèi)容加IR.

的內(nèi)容加位移量X是操作數(shù)的偏移地址EA。I

圖形表示:

第3章-1尋址方式和指令系統(tǒng)

BR段寄存器

?由基址寄存器(BX或BP)給出—基址尋址方式.

?由變址寄存器(SI或DI)給出—變址尋址方式九

?同一組內(nèi)的寄存器不能同時出現(xiàn)/

第3章-1尋址方式和指令系統(tǒng)

操作數(shù)偏移地址EA計算方法如下

「網(wǎng)響+XBX作基址寄存器,SI作變址寄存器。

I[BX|+[DI]+XBX作基址寄存器,DI作變址寄存鼠

EA|[BP]+[SI]+XBP作覲寄睛SI作變址寄存需

JBP]+[DI]+XBP作基址寄存器DI作變址寄存鼠

第3章-1尋址方式和指令系統(tǒng)

例3.6:MOVAX,DATA[DI][BX]

若(DS尸8000H,(BX>2000H,(DI>1000H,DATA=200H

則指令執(zhí)行后:(AH尸[83021H],(AL尸[83020H]

第3章-1尋址方式和指令系統(tǒng)F

使用基址-變址尋址方式可以很方便地訪問二維數(shù)組4

位移量-數(shù)-組-首-地址后移地址)刃

基址寄存器數(shù)組元素行址『位移地如

變址寄存器數(shù)組元素列址內(nèi)元素下才

二維數(shù)組例:內(nèi)存圖示(按行存儲)

ri83、

4=252

.409)

第3章-1尋址方式和指令系統(tǒng)

3.1.7隱含尋址

?指令操作數(shù)是隱含的,在指令中未顯式地指明

?例:MULBL

(AL)X(BL)一AX

指令隱含了被乘數(shù)AL及乘積AX

?類似的指令還有:DIV、CBW、MOVS等

第3章-1尋址方式和指令系統(tǒng)

3.1.8I/O端口尋址

,直接端口尋址

可以對0?255的端口編號進行尋址

■間接端口尋址

用寄存器DX的內(nèi)容來指定端口地址,可以對

編號為0?65535的端口進尋址。

?只能用輸入指令I(lǐng)N或輸入指令OUT來訪問I/O

端口O

第3章-1尋址方式和指令系統(tǒng)

3.1.9跨段問題

按前述規(guī)定:若選用BP作間址寄存器、變址寄存器或

基址寄存器,則操作數(shù)在堆棧段,操作數(shù)的物理地址

PA由堆棧段寄存器SS的內(nèi)容左移4位與偏移地址EA相

加后形成;否則,操作數(shù)在數(shù)據(jù)段,操作數(shù)的物理地址

PA由數(shù)據(jù)段寄存器DS的內(nèi)容左移4位與偏移EA相加后

形成。該規(guī)定為系統(tǒng)默認狀態(tài)。當要否定默認狀態(tài),到

非約定段尋找操作數(shù)時,必須用跨段前綴指明操作數(shù)府

段寄存器名。

匯編格式:段寄存器名:操作數(shù)地址

功能:段寄存器名指明操作數(shù)屬哪個段。

第3章-1尋址方式和指令系統(tǒng)

例3.9跨段前綴示例。

MOVAX,DS:[BP]

MOVCX,SS:[SI]

該例中,DS:,SS:均為跨段前綴,此時默認狀

態(tài)無效,操作數(shù)的物理地址PA由段寄存器內(nèi)容

左移4位加偏移EA形成。上述2條指令的源操作’

數(shù)物理地址分別為:I

PAI=(DS)左移4位+[BP]

PA2=(SS)左移4位+[SI]

第3章-1尋址方式和指令系統(tǒng)

小結(jié)

?指令由(操作碼)和(操作數(shù))構(gòu)成

?如何取得操作數(shù)——稱為(尋址方式)

第3章-1尋址方式和指令系統(tǒng)

立即尋址

直接尋址

寄存器尋址

?尋址方式可分為

寄存器間接尋址

變址尋址

基址尋址

基址■變址尋址

第3章-1尋址方式和指令系統(tǒng)

幾種尋址方式比較

尋址方式指令操作數(shù)形式

寄存器直接給出寄存器名

寄存器間接只有一個寄存器(BX/BP/SI/DI之一)

變址尋址一個寄存器加上位移量

基址—變址兩個不同類別的寄存器加上位移量

第3章-1尋址方式和指令系統(tǒng)

8086/8088的指令系統(tǒng)

*指令系統(tǒng)是一臺計算機所能識別和執(zhí)行的全部‘

指令的集合。,

*指令一般包括兩個部分:操作碼域和地址域。;

來操作碼域存放指令的操作碼,即指明該指令應(yīng)少

由計算機完成何種操作。:

*地址域確定操作數(shù)的值或地址、操作結(jié)果的地’

址,有的指令的地址域還指出下一條指令的地址。

第3章-1尋址方式和指令系統(tǒng)F

*機器指令:計算機能識別的代碼,機器指令k

是由二進制數(shù)組成的。I

例如:ADDCL,BH

指令格式為:0000001001

PUSHAX

機器指令為:01010000

來匯編語言:匯編語言是一種符號語言,用助I

記符表示操作碼,用符號或符號地址表示操作

數(shù)或操作數(shù)地址,它與機器指令是一一對應(yīng)的。

橐匯編程序:MASM.EXE將匯編語言源程序翻

譯成機器語言,即目標程序。

第3章-1尋址方式和指令系統(tǒng)

3.2數(shù)據(jù)傳送類指令

3.2.1通用數(shù)據(jù)傳送指令

3.2.2堆棧操作指令

3.2.3標志寄存器傳送指令

3.2.4地址傳送指令

3.2.5輸入輸出指令

第3章-1尋址方式和指令系統(tǒng)

3.2.1通用數(shù)據(jù)傳送指令

1.傳送指令MOV

2.數(shù)據(jù)交換指令XCHG

3.查表轉(zhuǎn)換指令XLAT

第3章-1尋址方式和指令系統(tǒng)

1.傳送指令MOV

語句格式:MOVOPD,OPS

功能:將源操作數(shù)傳送入目的地址,源

地址內(nèi)容不變。即(OPS)->OPDo

下圖描述了MOV指令在傳送數(shù)據(jù)時允

許傳送的路徑及類型。

第3章-1尋址方式和指令系統(tǒng)

字節(jié)類型號類型

MOV指令所允許的數(shù)據(jù)傳送路徑及類型

第3章-1尋址方式和指令系統(tǒng)

MOV指令使用規(guī)則

1)IP不能作目的寄存器

2)不允許mem—mem

3)不允許segreg—segreg

4)立即數(shù)不允許作為目的操作數(shù)

5)不允許segreg一立即數(shù)

6)源操作數(shù)與目的操作數(shù)類型要一致

第3章-1尋址方式和指令系統(tǒng)

幾個不能傳送的解決辦法:用AX作橋梁

存儲器一存儲器:

MOVAX,MEM1

MOVMEM2,AX

段寄存器一段寄存器:

MOVAX,DS

MOVES,AX

段寄存器一立即數(shù):

MOVAX,DATA

MOVDS,AX

第3章-1尋址方式和指令系統(tǒng)

例:存儲器與寄存器間數(shù)據(jù)傳送。

MOVAX,BUF;BUF是變量,源操作數(shù)為直接尋見

;源操作數(shù)為寄存器間接尋址■

MOVBH,[DI]

MOVDI,ES:3[SI];源操作數(shù)為變址尋址,使用跨段

前綴/

MOVBP,3[BX+SI];源操作數(shù)為基址■變址尋址,

MOVBUFA,DL;BUFA是一字節(jié)變量

MOV[BP],AX;使用SS段寄存器

MOVDS:[BP],DL;使用跨段前綴

MOVBUF,DS;BUF是個字變量

第3章-1尋址方式和指令系統(tǒng)

2.數(shù)據(jù)交換指令XCHG

語句格式:XCHGOPD,OPS,

功能:將源地址與目的地址中的內(nèi)容互換。即(OPD)

一OPS,(OPS)一OPD。

來兩操作數(shù)中必須有一個在寄存器中;—

*操作數(shù)不能為段寄存器和立即數(shù);■

來源和目地操作數(shù)類型要-致。,

例:.

MOVAX,5678H;(AX)=5678H

MOVBX,OFFFFH;(BX)=0FFFFH

XCHGAX,BX

(AX)=0FFFFH,(BX)=5678H

第3章-1尋址方式和指令系統(tǒng)

3.換碼指令/查表指令XLAT

語句格式:XLATOPS或XLAT

功能:將(BX)為首址(AL)為位移

量的字節(jié)存儲單元中的數(shù)據(jù)送AL寄存器。

即([BX+AL])->ALo

第3章-1尋址方式和指令系統(tǒng)

3.2.2堆棧操作指令

1.進棧指令PUSH

2.出棧指令POP

第3章-1尋址方式和指令系統(tǒng)

什么是堆棧?外

按“后進先出(LIFO)”方式工作的存儲區(qū)二

域。堆棧以字為單位進行壓入/彈出操作。I

為什么要設(shè)置堆棧?

為什么要按“后進先出”方式工作?

參見下圖

第3章-1尋址方式和指令系統(tǒng)

執(zhí)

2

3、

續(xù)

執(zhí)

(a)(b)

子程序調(diào)用示意圖

(a)主程序調(diào)子程序;(b)子程序嵌套示意圖

第3章-1尋址方式和指令系統(tǒng)

規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始冬

指向堆棧的頂部,SP的初值規(guī)定了所用堆棧區(qū)的

大小。堆棧的最高地址叫棧底。

進棧方向

SP

退棧方向

第3章-1尋址方式和指令系統(tǒng)

①壓棧指令

PUSHsrc;src為16位操作數(shù)

例:PUSHAX;將AX內(nèi)容壓棧

執(zhí)行操作:(SP)-1—高字節(jié)AH

(SP)?2一低字節(jié)AL

(SP)—(SP)-2

第3章-1尋址方式和指令系統(tǒng)

設(shè)(AX)=1Q2QH,執(zhí)行示意圖如下:

存儲區(qū)

(AX尸1020H

PUSHAX指令執(zhí)行示意圖

第3章-1尋址方式和指令系統(tǒng)

注意進棧方向是高地址向低地址發(fā)展。

壓棧指令的格式為:

PUSHreg

PUSHmem/reg

PUSHsegreg

例如:

PUSHAX

PUSH[BX]

PUSHDS

第3章-1尋址方式和指令系統(tǒng)

②彈出指令

POPdest

例:POPBX;將棧頂內(nèi)容彈至BX

執(zhí)行操作:(BL)一(SP)

(BH)-(SP)+1

(SP)-(SP)+2

第3章-1尋址方式和指令系統(tǒng)

POPBX的執(zhí)行示意圖如下圖所示

存儲區(qū)

(ss段)低地址

(SP)

(SP)+1

(SP)+2

出棧方向

執(zhí)行前高地址

POPBX指令執(zhí)行示意圖

第3章-1尋址方式和指令系統(tǒng)

堆棧指令使用時應(yīng)注意幾點:

①堆棧操作總是按字進行

②一般不能從棧頂彈出一個字給CS

③堆棧指針為SS:SP,SP永遠指向棧頂

④SP自動進行增減量±2

第3章-1尋址方式和指令系統(tǒng)

323標志寄存器傳送指令

1.標志送AH指令LAHF

2.AH送標志指令SAHF

3.標志寄存器進棧指令PUSHF

4.標志寄存器出棧指令POPF

第3章-1尋址方式和指令系統(tǒng)

標志寄存器

■狀態(tài)標志:C、P、A、z、s、0

■控制標志:T、I、D

第3章-1尋址方式和指令系統(tǒng)

1.標志送AH指令LAHF

語句格式:LAHF

功能:將標志寄存器的低8位送入AH寄存器。

即(FLAGS)7-0一AH。該指令的執(zhí)行對標

志位無影響。|

例:標志寄存器傳送。I

執(zhí)行前:(FLAGS)=0485H,(AX)=0FFFFH

執(zhí)行指令:LAHFI

(AX)=?

第3章-1尋址方式和指令系統(tǒng)

2.AH送標志指令SAHF,

語句格式:SAHF

功能:將AH的內(nèi)容送入標志寄存器的低8位,,

高8位不變。即(AH)一FLAGS7-0.。’

從該指令功能可看出,SAHF為LAHF的逆過凝

問題:將標志ZF置0?

第3章-1尋址方式和指令系統(tǒng)

3.標志寄存器進棧指令PUSHF

語句格式:PUSHF

功能:將標志寄存器的內(nèi)容壓入堆棧。

即(FLAGS)f(SP)o

第3章-1尋址方式和指令系統(tǒng)

4.標志寄存器出棧指令POPF

功能:將棧頂內(nèi)容彈出送入標志寄存器中。即

T(SP)-FLAGS。

POPF指令與PUSHF指令互為逆過程。

例:將標志寄存器的單步標志TF置位。

PUSHF;(FLSGS)f(SP)

POPAX;(SP)一AX

ORAX,0100H;設(shè)置D8=TF=1

PUSHAX;(AX)f(SP)

POPF;(SP)一IFLAGS,即(AX)

fFLAGS

第3章-1尋址方式和指令系統(tǒng)

3.2.4地址傳送指令

L傳送偏移地址指令LEA

2.傳送偏移地址及數(shù)據(jù)段首址指令LDS

3.傳送偏移地址及附加數(shù)據(jù)段指令LES

第3章-1尋址方式和指令系統(tǒng)

L傳送偏移地址指令LEA

語句格式:LEAOPD,OPS

功能:將源操作數(shù)的有效地址即16位偏移地址

傳送到目的寄存器中。

例:主存偏移地址的獲取。

MOVBX,0100H;(BX)=0100H

MOVSI,0210H;(SI)=0210H

LEABX,1234H[BX][SI];(BX)=?

第3章-1尋址方式和指令系統(tǒng)

注意以下兩條指令差別:

LEABX,BUFFER

MOVBX,BUFFER

前者表示將符號地址為BUFFER的存儲單元

的偏侈地址取到BX中;

后者表示將BUFFER存儲單元中的內(nèi)容取到

BX中。

第3章-1尋址方式和指令系統(tǒng)

2.傳送偏移地址及數(shù)據(jù)段首址指令LDS

語句格式:LDSOPD,OPS

功能:將主存中指定字單元數(shù)據(jù)送入指定

存儲器,下一字單元數(shù)據(jù)送DS寄存器。即

(OPS)一OPD,(OPS+2)->DSo

第3章-1尋址方式和指令系統(tǒng)

例:(DS)=COOOH,

(C0010H)=80H,

(C0011H)=O1H,

(C0012H)=00H,

(C0013H)=20H,

執(zhí)行:LDSSI,[0010H]

貝U(SI)=?,(DS)=?

(SI)=0180H,(DS)=2000H

第3章-1尋址方式和指令系統(tǒng)

3.傳送偏移地址及附加數(shù)據(jù)段指令LES

語句格式:LESOPD,OPS

功能:將主存某字單元內(nèi)容送指定寄存器。

即(OPS)一OPD,(OPS+2)->ESo

第3章-1尋址方式和指令系統(tǒng)

3.2.5輸入輸出(I/O)指令

1.輸入指令I(lǐng)N

2.輸出指令OUT

只限于用累加器AL或AX來傳送信息。

功能:(累加器卜-->1/。端口

第3章-1尋址方式和指令系統(tǒng)

1.輸入指令I(lǐng)NL

輸入指令用來從指定的外設(shè)寄存器取信息送入累加器。,

它有四種形式:■

(1)語句格式:INAL,PORT/

功能:(PORT)一AL;端口號0-255乙

(2)語句格式:INAX,PORT.

功能:(PORT)一AXJ

(3)語句格式:INAL,DX〃

功能:([DX])—AL;DX表示的端口范圍達64K4

(4)語句格式:INAX,DX

功能:([DX])一AX,

第3章-1尋址方式和指令系統(tǒng)

2.輸出指令OUT

輸出指令用來把累加器的內(nèi)容送往指定的外

設(shè)存儲器,它有四種形式:

(1)語句格式:OUTPORT,AL

功能:(AL)-PORT

(2)語句格式:OUTPORT,AX

功能:(AX)-PORT

(3)語句格式:OUTDX,AL

功能:(AL)->[DX]

(4)語句格式:OUTDX,AX

功能:(AX)->[DX]

第3章-1尋址方式和指令系統(tǒng)

33算術(shù)運算類指令

3.3.1加法指令

332減運算指令

333乘運算指令

3.3.4除運算指令

3.3.5符號擴展指令

3.3.6十進制調(diào)整指令

尋址方式和指令系統(tǒng)

3.3.1加法指令

1.力^指令I(lǐng)NC

2.加指令ADD

3.帶進位加指令ADC

第3章-1尋址方式和指令系統(tǒng)

1.加1指令I(lǐng)NC

語句格式:INCOPD

功能:將目的操作數(shù)加1,結(jié)果送目的地址。即

(OPD)+1-OPD。

INC指令是一個單操作數(shù)指令,操作數(shù)可以是寄存

器或存儲器操作數(shù)。

如:INCBX,即(BX)+1-BX。

加1指令可用于對計數(shù)器和地址指針進行調(diào)整。

注:本指令不影響CF標志!

第3章-1尋址方式和指令系統(tǒng)

2.加指令ADD

語句格式:ADDOPD,OPS

功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存

入目的地址中,源地址的內(nèi)容不改變。

即(OPD)+(OPS)->OPDo

例:ADDAL,30H

ADDAX,[BX+20H]

ADDCX,SI

ADD[DI],200H

ADD指令對標志位(指狀態(tài)標志)都有影響。

第3章-1尋址方式和指令系統(tǒng)

3.帶進位加指令ADC

語句格式:ADCOPD,OPS

功能:將目的操作數(shù)加源操作數(shù)再加進位標志位CF,

結(jié)果送目的地址。

即(OPD)+(OPS)+CF-OPD。

例:無符號雙字加法運算。

MOVAX,4652H;(AX)=4652H

ADDAX,0F0F0H;(AX)=3742H,CF=1

MOVDX,0234H;(DX)=0234H

ADCDX,0F0F0H;(DX)=0F325H,CF=0

第3章-1尋址方式和指令系統(tǒng)

結(jié)果為負’1結(jié)果為0

否則0否則

和的最高有效位有向高位的進位

否則

1兩個操作數(shù)符號相同,而結(jié)果符號與之相

OF=

0否則

CF位表示無符號數(shù)相加的溢出。

OF位表示帶符號數(shù)相加的溢出。

第3章-1尋址方式和指令系統(tǒng)

332減運算指令

1.減1指令DEC

2.減指令SUB

4.帶借位減指令SBB

3.求補指令NEG

5.比較指令CMP

第3章-1尋址方式和指令系統(tǒng)

1.減1指令DEC

語句格式:DECOPD

功能:將目的操作數(shù)減1,結(jié)果送目的地址。

即(OPD)-l->OPDo

DEC指令是一個單操作數(shù)指令,操作數(shù)可以

是寄存器或存儲器操作數(shù)。

如:DECCXo即(CX)一1一CX。

注:本指令不影響CF標志

第3章-1尋址方式和指令系統(tǒng)

2.減指令SUB

語句格式:SUBOPD,OPS

功能:目的操作數(shù)減源操作數(shù),結(jié)果存于目的地址,

源地址內(nèi)容不變。

即(OPD)-(OPS)一OPD

例:減法運算。|

MOVAX,5678H;(AX)=5678H

SUBAX,1234H;(AX)=4444H

MOVBX,3354H;(BX)=3354H

SUBBX,3340H;(BX)=0014H

注:1.源和目的操作數(shù)不能同時為存儲器操作數(shù);

2,立即數(shù)不能作為目的操作數(shù)。

第3章-1尋址方式和指令系統(tǒng)

3.帶借位減指令SBB

語句格式:SBBOPD,OPS

功能:目的操作數(shù)減源操作數(shù)再減借

位標志位CF,結(jié)果送目的地址。

即(OPD)—(OPS)—CF-OPD

第3章-1尋址方式和指令系統(tǒng)

4.求補指令NEG

語句格式:NEGOPD

功能:將目的操作數(shù)的每一位求反(包括符號位)

結(jié)果送目的地址。

等價:O-OPD^OFFFFH-OPD+1;

例:求補運算。

MOVAX,0FF64H

NEGAL(AX)=0FF9CH

SUBAL,9DH(AX)=0FFFFH

NEGAX(AX)=0001H

DECAL(AX)=0000H

NEGAX(AX)=0000H

第3章-1尋址方式和指令系統(tǒng)

SUB/SBB對標志位(CF/OF/ZF/SF)的影響[

被減數(shù)的最高有效位有向高位的借位

CF=1

、0否則

OF=1兩個操作數(shù)符號相反,而結(jié)果的符號與減數(shù)相同

否則「

0

CF=1表示無符號數(shù)減法溢出。|

OF=1表示帶符號數(shù)減法溢出。

NEG指令對CF/OF的影響:

CF:操作數(shù)為0時,求補的結(jié)果使CF=O,否則CF=L

OF:字節(jié)運算對-128求補或字運算對-32768求補時OF=1,

否貝I」OF=0。

第3章-1尋址方式和指令系統(tǒng)

5.比較指令CMP

語句格式:CMPOPD,OPS

功能:目的操作數(shù)減源操作數(shù),結(jié)果只影響標

志位,不送入目的地址。I

即(OPD)-(OPS)o,

第3章-1尋址方式和指令系統(tǒng)5

根據(jù)標志位來判斷比較的結(jié)果4

1)根據(jù)ZF判斷兩個數(shù)是否相等。若ZF=1,則兩數(shù)相等。

2)若兩個數(shù)不相等,則分兩種情況考慮:

①比較的是兩個無符號數(shù)

若CF=O,則OPD〉OPS;

若CF=L貝UOPDVOPS。

②比較的是兩個有符號數(shù)

若OF十SF=0,貝UOPD>OPS;

若OF十SF=L貝l」OPD<OPS。

第3章-1尋址方式和指令系統(tǒng)

比較指令在使用時,一般在其后緊跟一條條件轉(zhuǎn)移指

令,判斷比較結(jié)果的轉(zhuǎn)向。

舉例:比較AL、BL、CL中帶符號數(shù)的大小,<

最小數(shù)放在AL中。

程序:

CMPAL,BL;AL和BL比較

JNGBBB;若AL0BL,則轉(zhuǎn)

XCHGAL,BL;若AL〉BL,則交換

CMPAL,CL;AL和CL比較

JNGCCC;若ALWCL,貝ij轉(zhuǎn)

XCHGAL,CL;若AL〉CL,則交換

CCC:HLT

第3章-1尋址方式和指令系統(tǒng)

3.3.3乘運算指令

1.無符號數(shù)乘法指令MUL

2.有符號乘指令I(lǐng)MUL

進行乘法時:8位x8位-16位乘積

16位x16位732位乘積

第3章-1尋址方式和指令系統(tǒng)

1.無符號數(shù)乘法指令MUL

語句格式:MULOPS

功能:若是字節(jié)數(shù)據(jù)相乘,(AL)與OPS相乘得到字

數(shù)據(jù)存入AX中;若是字數(shù)據(jù)相乘,則(AX)與OPS相

乘得到雙字數(shù)據(jù),高字存入DX、低字存入AX中。

即字節(jié)乘法:(AL)x(OPS)一AX,

字乘法:(AX)x(OPS)一DX,AX

例:無符號數(shù)OA3H與11H相乘。

MOVAL,0A3H;(AL)=0A3H

MOVBL,UH;(BL)=11H

MULBL;(AX)=0AD3H

第3章-1尋址方式和指令系統(tǒng)

2.有符號乘指令I(lǐng)MUL

語句格式:IMULOPS

功能:字節(jié)乘法:(AL)x(OPS)—AX,字乘法:

(AX)x(OPS)一DX、AXo

IMUL指令除計算對象是帶符號二進制數(shù)外,其他都與

MUL一樣,但計算結(jié)果不同。

例:有符號數(shù)OB4H與UH相乘。

MOVAL,0B4H;(AL)=B4H

MOVBL,UH;(BL)=11H

IMULBL;(AX)=0FAF4H

第3章-1尋址方式和指令系統(tǒng)

注意:MUL/IMUL指令中

?AL(AX)為隱含的乘數(shù)寄存器;

?AX(DX,AX)為隱含的乘積寄存器;

?OPS不能為立即數(shù);

-除CF和OF外,對其它標志位無定義o

第3章-1尋址方式和指令系統(tǒng)

乘法指令對CF/OF的影響:

MUL指令:CF/OF=[°°乘積的局一半為零

111否則

…指…日::胃高一半是低一半的符號

例:(AL)=A5H(-5B),(BL)=11H

(1)IMULBL;(AX)—(AL)X(BL)

;A5X11=>-5BXll=-060BnF9F5

;(AX)=F9F5HCF=OF=1

(2)MULBL;(AX)—(AL)X(BL)

;A5X11=0AF5

;(AX)=0AF5HCF=OF=1

第3章-1尋址方式和指令系統(tǒng)

334除運算指令

1.無符號除指令DIV

2.有符號除指令I(lǐng)DIV

進行除法時:16位/8位一8位商

32位位―16位商

第3章-1尋址方式和指令系統(tǒng)

1.無符號除指令DIV

語句格式:DIVOPS

功能:字節(jié)除法:(AX)/(OPS)一AL(商)、AH(余

婁攵)

字除法:(DX、AX)/(OPS)一AX(商)、DX(余數(shù)

例:寫出實現(xiàn)無符號數(shù)0400H/0B4H運算的程序段。

MOVAX,0400H;(AX)=0400H

MOVBL,0B4H;(BL)=0B4H

DIVBL;商(AL)=05H,余數(shù)(AH)=7CH

注:若除數(shù)為零或AL中商大于OFFH(或AX中商大于

0FFFFH),則CPU產(chǎn)生一個類型0的內(nèi)部中斷。

第3章-1尋址方式和指令系統(tǒng)

2.有符號除指令I(lǐng)DIV

語句格式:IDIVOPS

功能:字節(jié)除法:(AX)/(OPS)->AL(商)、AH(余數(shù))

字除法:(DX,AX)/(OPS)TAX(商)、DX(余數(shù))

如除數(shù)為0,或字節(jié)除法時AL寄存器中的商超出?128?+127的范圍,

或字除法時AX寄存器中的商超出-32768?+32767的范圍,則CPU產(chǎn)

生一個類型0的內(nèi)部中斷。/

例:寫出實現(xiàn)有符號數(shù)0400H/0B4H運算的程序段。I

MOVAX,0400H;(AX)=0400H

MOVBX,0B4H;(BX)=0B4H

IDIVBX:(AL)=0F3H,(AH)=24H

第3章-1尋址方式和指令系統(tǒng)

注意:對于DIV/IDIV指令

>AX(DX,AX)為隱含的被除數(shù)寄存器。

AAL(AX)為隱含的商寄存器。|

>AH(DX)為隱含的余數(shù)寄存器。|

AOPS不能為立即數(shù)。|

>對所有條件標志位均無定義。

第3章-1尋址方式和指令系統(tǒng)

關(guān)于除法操作中的字長擴展問題

※除法運算要求被除數(shù)字長是除數(shù)字長的兩

倍,若不滿足則需對被除數(shù)進行擴展,否則

產(chǎn)生錯誤;

*對于無符號數(shù)除法擴展,只需將AH或DX,

清零即可;,

*對有符號數(shù)而言,則是符號位的擴展。可

使用下面介紹的符號擴展指令CBW和CWD。

第3章-1尋址方式和指令系統(tǒng)

3.3.5符號擴展指令

1.字節(jié)轉(zhuǎn)換成字指令CBW

2.將字轉(zhuǎn)換成雙字指令CWD

第3章-1尋址方式和指令系統(tǒng)

1.字節(jié)轉(zhuǎn)換成字指令CBW

語句格式:CBW

功能:將AL中的符號位數(shù)據(jù)擴展至AH。

例:將字節(jié)數(shù)據(jù)擴展成字數(shù)據(jù)。

MOVAL,0A5H;(AL)=0A5H

CBW;(AX)=0FFA5H

ADDAL,70H;(AL)=25H

CBW;(AX)=0025H

第3章-1尋址方式和指令系統(tǒng)

2.將字轉(zhuǎn)換成雙字指令CWD

語句格式:CWD

功能:將AX中的符號位數(shù)據(jù)擴展至DX。

例:將字數(shù)據(jù)擴展成雙字數(shù)據(jù)。

MOVDX,0;(DX)=0

MOVAX,OFFABH;(AX)=0FFABH

CWD;(DX)=0FFFFH(AX)=0FFABH

第3章-1尋址方式和指令系統(tǒng)

例:寫出34H+25H的程序段。

MOVAL,34H

MOVBL,25H

CBW;AL的符號擴展到AH

IDIVBL;0034H+25H,結(jié)果為

;(AH)=0FH,(AL)=01H

第3章-1尋址方式和指令系統(tǒng)

336十進制調(diào)整指令

1.壓縮BCD碼調(diào)整指令

2.非壓縮BCD碼調(diào)整指令

BCD碼本質(zhì)上是十進制數(shù),即應(yīng)遵循逢十

進一的規(guī)則。而計算機是按二進制(十六

進制)進行運算,并未按十進制規(guī)則進行

運算。

第3章-1尋址方式和指令系統(tǒng)

(1)壓縮BCD碼加法調(diào)整DAA%

兩個壓縮BCD碼相加結(jié)果在AL中,通過DAA調(diào)酒

整得到-個正確的壓縮BCD碼.

指令操作(調(diào)整方法):3

*若人1的低4位>9或AF=1,

貝IJ(AL)—(AL)+6,AF—1次|

*若41的高4位>9或CF=1夕

貝U(AL)—(AL)+60H,CF-1|

只對AL的內(nèi)容進行調(diào)整,對AH無影響;

DAA指令應(yīng)緊跟在ADD或ADC指令之后。

第3章-1尋址方式和指令系統(tǒng)

例:0100100048H

MOVAL,48H+01H010074H不正確的和

MOVBL,74H10111100BCH

ADDAL,BL+0110011066H

DAA100100010122H

(進位)(進位)

執(zhí)行ADD后,(AL尸BCH,高4位低4位均大于9,故DAA指令

執(zhí)行加66H調(diào)整,最后結(jié)果為:

(AL尸22H,CF=1,AF=1

第3章-1尋址方式和指令系統(tǒng)

(2)壓縮BCD碼減法的十進制調(diào)正指令DAS,

對AL中由兩個壓縮BCD碼相減的結(jié)果進行調(diào)整。理

整操作為:I/

?若AL的低4位〉9或AF=1,則:/

AL—(AL)-6,且AF-1彳

?若AL的高4位〉9或CF=1,則:4

AL—(AL)-60H,且CF-14

只對AL的內(nèi)容進行調(diào)整,對AH無影響;

DAS指令要求跟在減法指令之后。

第3章-1尋址方式和指令系統(tǒng)

2.非壓縮BCD碼調(diào)整指令

(1)加法的非壓縮BCD碼調(diào)整指令AAA

(2)減法的非壓縮BCD碼調(diào)整指令AAS

(3)乘法的非壓縮BCD碼調(diào)整指令AAM

(4)除法的非壓縮BCD碼調(diào)整指令AAD

第3章-1尋址方式和指令系統(tǒng)

(1)加法的非壓縮BCD碼調(diào)整指令AAA

語句格式:AAA

功能:如果AL的低4位大于9或(AF)=1,貝IJ:

(AL)=(AL)+6

(AH)=(AH)+1

(AF)=(CF)=1

且AL高4位清零。

否則:(CF)=(AF)=0

AL高4位清零。

AAA指令只影響AF和CF,其余標志無定義。

AAA指令應(yīng)緊跟在ADD或ADC指令之后。

第3章-1尋址方式和指令系統(tǒng)

例:計算8+9

00001000

+00001001

00010001=

這個1代表了16,而實際上

僅應(yīng)為10,即多進了6。

結(jié)果應(yīng)為17,而計算機相加為11,原因在于運算過

程中,如遇到低4位往高4位產(chǎn)生進位時(此時AF=1

是按逢十六進一的規(guī)則,但BCD碼要求逢十進一,<

因此只要產(chǎn)生進位,個位就會少6,這就要進行加6

調(diào)正。

第3章-1尋址方式和指令系統(tǒng)

⑵非壓縮BCD碼減法的十進制調(diào)正指令AAS'

對AL中由兩個非壓縮的BCD碼相減的結(jié)果進行

調(diào)整。調(diào)整操作為:I

若AL的低4位〉9或AF=1,則:I

①AL-(AL)-6,AH-(AH)-l,AF-11

②AL—(AL)&OFH

③CF-AFI

否則:AL—(AL)&OFH

第3章-1尋址方式和指令系統(tǒng)

舉例:16-8=?

MOVAX,0106H0000011006

MOVBL,08H-00001000-08

SUBAL,BL11111110FE

AAS----------00000110-06

nil1000F8

^AOOOO1111AOF

0000100008

結(jié)果為:(AL)=08H,(AH)=0,CF=AF=l

第3章-1尋址方式和指令系統(tǒng)

(3)乘法的非壓縮BCD碼調(diào)整指令AAM/

語句格式:AAM%

功能:被調(diào)整的乘積在AX中,對AL按10取模,二

則:>

(AL)/0AH-AH(商):AL(余數(shù))'

其中AH為商,AL為余數(shù),標志位AF、CF、。

OF、PF、SF、ZF受影響。/

第3章-1尋址方式和指令系統(tǒng)

例:按十進制乘法計算7X8=?

程序段如下:

MOVAL,07H;(AL)=07H

MOVCL,08H;(CL)=08H

MULCL;(AX)=0038H

AAM;(AH)=05H,(AL)=06H

所得結(jié)果為非壓縮的BCD碼。

又例:把3AH轉(zhuǎn)換成等值的十進制數(shù)。

MOVAL,3AH;58

UBCDJL#

AAM;(AH)=05H,(AL)=08H

第3章-1尋址方式和指令系統(tǒng)

(4)除法的非壓縮BCD碼調(diào)整指令AAD

語句格式:AAD

功能:除法運算前,先調(diào)整被除數(shù)AX內(nèi)容,

(AL)=(AL)+(AH)xOAH

(AH)=0

即把非壓縮型十進制數(shù)變成二進制數(shù)。

第3章-1尋址方式和指令系統(tǒng)

例:按十進制除法計算55+7=?

程序段如下:

MOVAX,0505H;(AX)=55BCD

MOVCL,07H;(CL)=7

AAD;(AX)=0037H

DIVCL;(AH)=6,(AL)=7

所得結(jié)果為非壓縮的BCD碼(商7余6)。

又例:把73轉(zhuǎn)換成等值的二進制數(shù)。

MOVAX,0703H;(AX)=73BCD

AAD;(AX)=0049H

第3章-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論