微型計(jì)算機(jī)組成與接口(高職)第3章指令系統(tǒng)_第1頁
微型計(jì)算機(jī)組成與接口(高職)第3章指令系統(tǒng)_第2頁
微型計(jì)算機(jī)組成與接口(高職)第3章指令系統(tǒng)_第3頁
微型計(jì)算機(jī)組成與接口(高職)第3章指令系統(tǒng)_第4頁
微型計(jì)算機(jī)組成與接口(高職)第3章指令系統(tǒng)_第5頁
已閱讀5頁,還剩205頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章指令系統(tǒng)

3.180X86/Pentium指令格式和尋址

方式

3.28086/8088指令系統(tǒng)

3.3匯編語言程序設(shè)計(jì)

返回主目錄

第3章指令系統(tǒng)

3.1.1指令格式

每臺計(jì)算機(jī)都有一套反映該計(jì)算機(jī)全部功能的指令,

它構(gòu)成了該計(jì)算機(jī)的指令系統(tǒng)。通常指令以二進(jìn)制編碼的

形式存放在存儲器中,用二進(jìn)制編碼形式表示的指令稱為

機(jī)器指令。CPU可以直接識別機(jī)器指令。對于使用者來

說,機(jī)器指令記憶、閱讀比較困難,為此將每一條指令都

用統(tǒng)一規(guī)定的符號和格式來表示。用符號表示的指令稱為

符號指令。符號指令具有直觀、易理解、可幫助記憶的

特點(diǎn)。匯編語言程序中的指令就是符號指令。在計(jì)算機(jī)

中,符號指令與機(jī)器指令具有一一對應(yīng)的關(guān)系。

每條符號指令都由操作碼和操作數(shù)兩部分組成,操作碼

表示計(jì)算機(jī)執(zhí)行某種指令功能,操作數(shù)表示操作中所需要的

數(shù)據(jù)或者所需數(shù)據(jù)與輸出數(shù)據(jù)的存放位置(又稱地址碼)。

80X86/Pentium系列CPU采用變字節(jié)指令格式,由1?16個(gè)

字節(jié)組成一條指令,指令的一般格式如圖3-1所示。

字段1字段2字段3字幽字段5字段6

PrefixOPcodemodr/ms-i-bdispdata

1?41?20」,2,停0,1,2,4^

1字節(jié)

字節(jié)子13節(jié)節(jié)

圖3-1指令格式

一條指令的6個(gè)字段中,字段1是附加字段,字段2到

字段6是基本字段。各字段的含義如下:

(1)操作碼字段OPcodeo

操作碼字段規(guī)定指令的操作類型,說明指令所要完成

的操作。同時(shí)還指出操作數(shù)類型、操作數(shù)傳送方向、寄存

器編碼或符號擴(kuò)展等。

(2)尋址方式字段modr/m和s-1-b。尋址方式字段規(guī)定

寄存器/存儲器操作數(shù)的尋址方式。modr/m為主尋址字

節(jié),它規(guī)定操作數(shù)存放的位置(r/m)以存儲器操作數(shù)有效

地址EA的計(jì)算方法。s-1-b為比例-變址-基址尋址字節(jié)。一

般所有訪問存儲器指令中都有主尋址字節(jié),是否需翼H例-

?變址-基址字節(jié)由主尋址字節(jié)的編碼決定。

(3)位移量字段disp。

位移量是存儲器操作數(shù)段內(nèi)偏移地址的一部分。disp字

段指出位移量的大小,其長度為0、1、2或4個(gè)字節(jié)。

(4)立即數(shù)字段data。

立即數(shù)字段指明立即操作數(shù)的大小,其長度也是0、1、

2或4個(gè)字節(jié)。8位立即數(shù)與16或32位操作數(shù)一起使用時(shí),

CPU自動將它擴(kuò)展為符號相同的16或32位數(shù),也可以將16

位擴(kuò)展為32位。

(5)前綴字段Prefix。

前綴字段用于修改指令操作的某些性質(zhì)。常用前翠有

五種:工?

①段超越前綴:將前綴中指明的段寄存器取代指令中

默認(rèn)的段寄存器。

②操作數(shù)寬度前綴:改變當(dāng)前操作數(shù)寬度的默認(rèn)值。

③地址寬度前綴:改變當(dāng)前地址寬度的默認(rèn)值。

④重復(fù)前綴:重復(fù)串的基本操作,以提高CPU處理

串?dāng)?shù)據(jù)的速度。

⑤總線鎖存前綴:產(chǎn)生鎖存信號,以防止其他總線主

控設(shè)備中斷CPU在總線上的傳輸操作。

每個(gè)前綴的編碼為一個(gè)字節(jié)。在一條指令前可同時(shí)使

用多個(gè)指令前綴,不同前綴的前后順序無關(guān)緊要。

上述指令格式的6個(gè)字段中,操作碼字段是必要的,

其他字段均可有可無,這取決于特定的操作功能。

3.1.2尋址方式

尋址方式是尋找操作數(shù)或操作數(shù)地址的方式。根據(jù)尋址

方式,可以方便地訪問各類操作數(shù)。

80X86/Pentium指令中的操作數(shù)有三種可能的存放位置:

①操作數(shù)在指令中,即指令的操作數(shù)部分就是操作數(shù)

本身,這種操作數(shù)叫立即操作數(shù)。

②操作數(shù)包含在CPU的某個(gè)內(nèi)部寄存器中,這時(shí)指令

的操作數(shù)部分是CPU內(nèi)部寄存器的一個(gè)編碼。

③操作數(shù)在內(nèi)存的數(shù)據(jù)區(qū)中,這時(shí)指令的操作數(shù)部分

包含此操作數(shù)所在的內(nèi)存地址。

80X86/Pentium系列CPU中,任何內(nèi)存單元的實(shí)際地址

都由兩部分組成:段基地址和段內(nèi)偏移地址。例如,內(nèi)存

中某一單元的邏輯地址用ES:TABLE來表示。'卜

其中ES是段基地址,TABLE為段內(nèi)偏移地址。段內(nèi)偏

移地址有16位或32位地址,段基地址和段內(nèi)偏移地址相加

形成線性地址。選用頁功能時(shí),線性地址由管理部件換算

為32位物理地址;不用頁功能時(shí),線性地址就是物理地址。

在存儲器尋址時(shí),指令的操作數(shù)部分給出的地址是段內(nèi)偏

移地址。為了適應(yīng)處理各種數(shù)據(jù)結(jié)構(gòu)的需要,段內(nèi)偏移量

由幾個(gè)基本部分組合而成,所以也稱為有效地址EA。

組成有效地址EA的基本部分包括:基址寄存器內(nèi)容、

變址寄存器內(nèi)容、位移量、比例因子等。其中,基址、變

址寄存器中通常為某局部存儲區(qū)的起點(diǎn),位移量是指令中

的disp字段,比例因子是32位尋址方式中特有的一種地址分

量。有效地址EA的計(jì)算公式如下:

EA[基址寄存器]+([變址寄存器]X比例因子)+

位移量

對于基址、變址寄存器和比例因子、位移量的取值規(guī)定

有所不同。表3-1給出了這兩種尋址方式的四個(gè)分量的規(guī)

定,由此可組合出多種存儲器尋址方式。

表3-116位尋址和32位尋址方式的四個(gè)分量

有效地址分量16位尋址方式32位尋址方式

基址寄存器BX、BP任何32位通用寄存器

變址寄存器SI、DI除ESP外的任何32位通用寄存器

比例因子11、2、4、8

位移量0、8、160、8、32

8086/8088提供了八種尋址方式,它們是立即尋址方式、

寄存器尋址方式、直接尋址方式、寄存器間接尋址方式、

變址尋址方式、基址尋址方式、基址加變址尋址方式和帶有

位移量的基址加變址尋址方式。80X86/Pentium有11種尋址

方式。與8086/8088相比增加的三種尋址方式是比例變址尋

址方式、基址加比例變址尋址方式和帶位移量的比例變址

尋址方式。

1.立即尋址方式

在立即尋址方式下,操作數(shù)作為立即數(shù)包含在指令的操

作碼之后,與操作碼一起存放在代碼段區(qū)域。立即數(shù)總是和

操作碼一起被取入CPU的指令隊(duì)列,在指令執(zhí)行時(shí),不再需

要訪問存儲器。-一

立即數(shù)可以是8位、16位或32位操作數(shù)。若是16位,

低位字節(jié)存放在相鄰兩個(gè)字節(jié)存儲單元的低地址單元中;

若是32位,則低位字存放在相鄰兩個(gè)字存儲單元的低地址

單元中。

立即數(shù)可以用二進(jìn)制數(shù)、八進(jìn)制數(shù)、十進(jìn)制數(shù)以及十

六進(jìn)制數(shù)來表示。在非十進(jìn)制的立即數(shù)末尾需要使用字母

加以標(biāo)識。必要情況下,十進(jìn)制數(shù)用字母D加以標(biāo)識,通

常情況下不需要標(biāo)識。如:

MOVAL,10;十進(jìn)制數(shù)(D)

MOVAL,00100101B;二進(jìn)制數(shù)(B)

MOVAL,OAH;十六進(jìn)制(H)黑:,

2.寄存器尋址方式

在寄存器尋址方式下,操作數(shù)存在于指令規(guī)定的8位、

16位或32位寄存器中。寄存器可用來存放源操作數(shù),也可

用來存放目的操作數(shù)。寄存器尋址方式是CPU內(nèi)部的操

作,不需要使用訪問總線周期,因此指令的執(zhí)行速度比較

快。以上兩種尋址方式中,操作數(shù)是從指令或寄存

器中獲得的。而在實(shí)際的程序運(yùn)行中,大多數(shù)操作數(shù)需從

內(nèi)存中獲得。對于內(nèi)存的尋址方式有多種,不管哪一種尋

址方式,最終都將得到存放操作數(shù)的物理地址。指令的操

作數(shù)部分是此操作數(shù)的有效地址EA。

3.直接尋址方式

直接尋址方式是存儲器直接尋址方式的簡稱,是一種

針對內(nèi)存的尋址方式。在這種尋址方式下,指令代碼中給

出操作數(shù)的偏移地址,即有效地址(EA)。它是一個(gè)16位或

32位的位移量數(shù)據(jù),與操作碼一起放在代碼段中。在默認(rèn)

方式下,操作數(shù)存放在數(shù)據(jù)段(DS)。如果要對除DS段

之外的其他段(CS、ES、SS、FS、GS)中的數(shù)據(jù)尋址,

應(yīng)在指令中增加前綴,指出段寄存器名,這就是段跨越。

在實(shí)地址方式下,對內(nèi)存進(jìn)行尋址時(shí),需計(jì)算物理地址。

物理地址的計(jì)算公式為:;

物理地址16dx段地址(DS)+偏移地址(EA)「

不同的段地址存放在不同段的段寄存器中。如數(shù)據(jù)段

的段地址存放在數(shù)據(jù)段寄存器DS中。有些機(jī)器允許將數(shù)據(jù)

存放在非數(shù)據(jù)段中,這時(shí)需要在指令中使用段跨越前綴標(biāo)

識出相應(yīng)的段寄存器。在直接尋址方式的指令中,直接給

出了有效地址EA,那么操作數(shù)的物理地址就是

16dX(DS)+EAo

直接尋址的指令如:MOVAX,[1000H]

當(dāng)(DS)2000H時(shí),根據(jù)物理地址計(jì)算公式,得物理地

址16dx2000H+1000H21000H

j

存儲器

AHAL

圖3-2直接尋址不意圖

指令的執(zhí)行結(jié)果是:(AX)(21000H),即內(nèi)存21000H

單元的內(nèi)容已傳送到寄存器AX中。指令的執(zhí)行情況如圖3

-2所示。

下面的指令表示在附加段獲得操作數(shù)。如:

MOVAX,ES:

指令對應(yīng)的物理地址計(jì)算公式為:

16dX(ES)+1000H

在匯編語言中,可以用符號地址代替數(shù)值地址來表示

有效地址。如:

MOVAX,[VALUE]

其中VALUE為存放操作數(shù)單元的有效地址,符號地址的

方括號[]可以省略。飛卜,

4.寄存器間接尋址方式

寄存器間接尋址方式也是對內(nèi)存的尋址方式之一,操

作數(shù)的有效地址EA在指定的寄存器中,即EA[寄存器]。

在16位尋址和32位尋址方式中,寄存器的使用規(guī)定有所

不同。

16位尋址時(shí),EA放在基址寄存器BX、BP或變址寄存

器SI、DI中,所以該方式下的操作數(shù)的物理地址計(jì)算公式

有以下幾個(gè):

物理地址16dX(DS)+(BX)

物理地址16dX(DS)+(DI)

物理地址16dx(DS)+(SI)

物理地址16dX(SS)+(BP)

前三個(gè)式子表示操作數(shù)在數(shù)據(jù)段,最后一個(gè)式子表示操

作數(shù)在堆棧段。

例如:MOVAX,[BX]

當(dāng)(DS)IOOOH,(BX)2000H時(shí),物理地址為

16dX1000H+2000H12000H

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

內(nèi)存12000H單元的內(nèi)容傳送到寄存器AX中,指令的執(zhí)行情

況如圖3-3所示。類似于直接尋址方式,在該方式下,當(dāng)指

令中指定的寄存器為BX、SI、DI時(shí),操作數(shù)存放在數(shù)據(jù)段

中,因此段地址是寄存器DS的內(nèi)容。若指令中指定的寄存器

為BP時(shí),操作數(shù)存放在堆棧段中,段地址是寄存器SS的內(nèi)容。

若指令中指定了跨越前綴,則可以從指定的段中獲得梯作數(shù)。

圖3-3寄存器間接尋址示意圖

例如對于ADDAX,ES:(SI),

物理地址為

16dX(ES)+(SI)

利用寄存器間接尋址方式可以非常方便地通過改變寄

存器的內(nèi)容來改變內(nèi)存地址,比起直接尋址方式,其在使

用時(shí)更為靈活,如圖3-3所示。

32位尋址時(shí),八個(gè)32位通用寄存器均可用來進(jìn)行寄存

器間接尋址。這時(shí),EBP、ESP的默認(rèn)段寄存器為SS,其

余六個(gè)寄存器均默認(rèn)段寄存器為DS。同樣可以采用加段超

越前綴的方法對其他段進(jìn)行尋址。

當(dāng)直接尋址時(shí),有效地址EA在指令中,它是一[個(gè)常

量。當(dāng)間接尋址時(shí),有效地址EA在寄存器中,寄存器的內(nèi)

容由它之前的指令確定,因而是一個(gè)變量。

5.變址尋址方式

在變址尋址方式中,操作數(shù)的有效地址是變址寄存器

(SI或DI)的內(nèi)容與指令中指定的位移量的和。即有效地址

EA[變址寄存器]+位移量。

當(dāng)進(jìn)行16位尋址時(shí),SI和DI作為變址寄存器。這

時(shí),物理地址計(jì)算公式為物理地址16dx(DS)+(SI)+8位

(16位)位移量或物理地址16dX(DS)+(DI)+8位(16位)位移量

例如:MOVAX,100H(SI)

當(dāng)(DS)2000H,(SI)IOOOH時(shí),物理地址為

位移量

16dx(DS)+(SI)+20000H+1000H+100H21100H■

執(zhí)行指令的結(jié)果將內(nèi)存21100H單元和21101H單元的內(nèi)

容傳送到寄存器AX中。在用變址尋址方式進(jìn)行有效地址

的計(jì)算中,位移量可為正數(shù),也可為負(fù)數(shù),同樣可以使用

段跨越前綴標(biāo)識段寄存器的使用情況。

當(dāng)進(jìn)行32位尋址時(shí),除ESP外的任何32位通用寄存器

均可作變址寄存器。其中,EBP以SS為默認(rèn)段寄存器,其

余寄存器以DS為默認(rèn)寄存器。

6.基址尋址方式

在基址尋址方式中,操作數(shù)的有效地址是基址寄存器

的內(nèi)容與指令中指定的位移量的和。

當(dāng)進(jìn)行16位尋址時(shí),BP和BX作為基址寄存器。在缺

省段超越前綴時(shí),BX以DS作為默認(rèn)段寄存器,BP以SS

作為默認(rèn)段寄存器,位移量可以是8位或16位。該方式下

物理地址計(jì)算公式為

物理地址16dX(DS)+(BX)+8位(或16位)位移量

或物理地址16dX(SS)+(BP)+8位(或16位)位移量

當(dāng)進(jìn)行32位尋址時(shí),八個(gè)32位通用寄存器均可作為

基址寄存器。其中EBP、ESP以SS為默認(rèn)段寄存器,其

余六個(gè)寄存器以DS作為默認(rèn)段寄存器。

存儲器

DSBXSI

AX

12150

12151

圖3-4基址變址尋址示意圖

7.基址加變址尋址方式

在基址加變址尋址方式中,有效地址EA基址寄存器+變

址寄存器,即兩個(gè)寄存器的內(nèi)容之和為操作數(shù)的有效地址。

它有16位和32位兩種尋址方式。在每種情況下,基址寄存

器、變址寄存器的使用規(guī)定以及段寄存器的默認(rèn)規(guī)定與基

址尋址方式相同。在尋址方式中,當(dāng)基址寄存器和變址寄

存器的默認(rèn)段寄存器不同時(shí),一般由基址寄存器來決定默

認(rèn)用哪一個(gè)段寄存器作為段基址指針。若在指令中規(guī)定了

段跨越,則可以用其他寄存器作為段基地址?;芳幼冎?/p>

尋址方式的物理地址計(jì)算公式為:

物理地址16dX(DS)+(BX)+(SI)

或物理地址16dx(SS)+(BP)+(DI)

如:

MOVAX,[BX][SI]或MOVAX,[BX+SI]

若(DS)1200H,(BX)100H,(SI)5OH,則操作數(shù)地址為

16dX(DS)+(BX)+(SI)16dX1200H+100H+50H12150H

指令的執(zhí)行結(jié)果將內(nèi)存12150H單元的內(nèi)容傳送到寄存

器AX中。指令的執(zhí)行情況如圖3-4所示。

基址變址尋址方式中,可以使用段跨越前綴標(biāo)識操作

數(shù)所在的段。

如:OVAX,ES:[BX+DI]

則物理地址16dX(ES)+(BX)+(DI)"

8.帶有位移量的基址加變址尋址方式

在帶位移量的基址加變址尋址方式中,操作數(shù)的有

效地址是基址寄存器和變址寄存器以及8位(或16位)的

位移量之和,即

EA[基址寄存器]+[變址寄存器]+位移量

它有16位和32位尋址方式。

每種尋址方式下,基址寄存器、變址寄存器的使用

規(guī)定和段寄存器的默認(rèn)規(guī)定與基址加變址尋址方式相同。

若基址寄存器是BX,則使用DS為段寄存器;若基址寄存

'AV

器是BP,則使用SS為段寄存器。二;

相應(yīng)地,

物理地址16dx(DS)+(BX)+(DI)+8位(或16位)位移

量或物理地址16dX(SS)+(BP)+(SI)+8位(或16位)位移量

例如:MOVAX,100[BX+DI]或MOVAX,

[BX+DI+100H]

^(DS)2000H,(BX)1000H?(DI)1OOH,則

物理地址16dx2000H+1000H+100H+100H21200H

指令的執(zhí)行結(jié)果將內(nèi)存單元21200H和21201H的內(nèi)容

傳送到寄存器AX中。除了上面介紹的八種方式外,坦下

三種尋址方式適合于32位尋址的情況,它們是32位特希的

?尋址方式。

9.比例變址尋址方式

比例變址尋址方式的有效地址為

EA[變址寄存器]X比例因子+位移量

這里,乘比例因子的操作在CPU內(nèi)部由硬件完成。

10.基址加比例變址尋址方式

基址加比例變址尋址方式的有效地址為

EA[基址寄存器]+[變址寄存器]X比例因子

11.帶位移量的基址加比例變址尋址方式

帶位移量的基址加比例變址尋址方式的有效地址為

EA[基址寄存器]+[變址寄存器]X比例因子+位

移量在尋址過程中,變址寄存器內(nèi)容乘以比例因子的拆作在

CPU內(nèi)部由硬件完成。7匕1

3.L3存儲器尋址時(shí)的段約定

在進(jìn)行存儲器操作數(shù)訪問時(shí),除了要計(jì)算偏移地址

EA外,還必須確定段寄存器,即操作數(shù)所在的段。一般

情況下,指令中不特別指出段寄存器。因?yàn)樵?/p>

80X86/Pentium中,對于各種不同操作類型的存儲器尋址

的段寄存器有一個(gè)基本默認(rèn)約定。只要在指令中不特別

說明要超越這個(gè)約定,則一般情況下就按這個(gè)基本約定

來尋找操作數(shù)。這些基本約定如表3-2所示。

表3-2中,除了程序只能在代碼段,堆棧操作數(shù)只

能在堆棧段,目的串操作數(shù)只能在附加數(shù)據(jù)段外,其帙操

作雖然有默認(rèn)段,但都是允許超越的。1

表3-2存儲器操作時(shí)段和偏移地址寄存器的約定

存儲器操作類型默認(rèn)段寄存器允許超越的段寄存器偏移地址寄存器

取指令代碼CS無(E)IP

堆棧操作SS無(E)SP

源串?dāng)?shù)據(jù)訪問DSCS、ES、SS、FS、GS(E)SI

目的串?dāng)?shù)據(jù)訪問ES無(E)DI

通用數(shù)據(jù)訪問DSCS、ES、SS、FS、GS偏移地址

以(E)BP、(E)SP間

SSCS、ES、SS、FS、GS偏移地址

接尋址的指令

3.28086/8088指令系統(tǒng)

8086/8088指令系統(tǒng)是80X86/Pentium的基本指令集。指令

的操作數(shù)是8位或16位操作數(shù),偏移地址是16位地址。按功

能可將指令分成六類,即數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)

算與移位類、串操作類、控制轉(zhuǎn)移類和處理器控制類。

為便于理解指令的形式和功能,對指令中操作數(shù)符號的

約定如下:

OPRD:操作數(shù);

OPRD1,OPRD2:多操作數(shù)指令中,OPRD1為目標(biāo)操

作數(shù),OPRD2為源操作數(shù);

reg:8位或16位的通用寄存器;

sreg:段寄存器;

reg8:8位通用寄存器;

regl6:16位通用寄存器;

mem:8位或16位存儲器;

mem8:8位存儲器;

meml6:16位存儲器;

imm:8位或16位立即數(shù);

imm8:8位立即數(shù);

imml6:16位立即數(shù)。

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

數(shù)據(jù)傳送類指令是計(jì)算機(jī)中最基本、最常用、最重要

的一類操作。它用來在寄存器與存儲單元、寄存器與寄存

器、累加器與I/O端口之間傳送數(shù)據(jù)、地址等信息,也可以

將立即數(shù)傳送到寄存器或存儲單元中。為此,指令中必須

指明數(shù)據(jù)起始存放的源地址和數(shù)據(jù)傳送的目標(biāo)地址。

數(shù)據(jù)傳送類指令共有14條,分成4組。如表3-3所示。

其中,除了SAHF、POPF指令外,其他指令執(zhí)行后對標(biāo)志

位沒有影響。

表3-3數(shù)據(jù)傳送類指令

指令類型指令功能指令格式

字節(jié)或字傳送MOV目標(biāo),源

字壓入堆棧PUSH源

通用數(shù)據(jù)傳送字彈出堆棧POP目標(biāo)

字節(jié)或字交換?XCHG目標(biāo),源

字節(jié)翻譯XLAT

裝入有效地址LEA目標(biāo),源

地址傳送裝入DS寄存器LDS目標(biāo),源

裝入ES寄存器LES目標(biāo),源

將FR低字節(jié)裝入AH寄存器LAHF

將AH內(nèi)容裝入FR低字節(jié)SAHF

標(biāo)志位傳送

將FR內(nèi)容壓入堆棧PUSHF

從堆棧中彈出FR內(nèi)容POPF

輸入字節(jié)或字IN累加器,端口

I/O數(shù)據(jù)傳送

輸出字節(jié)或字OUT端口,累加器

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

(1)傳送指令MOV。

指令格式:MOVOPRD1,OPRD2

指令功能:將源操作數(shù)傳送給目標(biāo)操作數(shù),即

OPRD2-OPRDloOPRD1和OPRD2可以是字節(jié)或字,

但是必須等長。

具體指令形式:

MOVreg/sreg,reg;reg/sreg*-reg

MOVreg,sreg;reg-sreg

MOVreg/sreg,mem;reg/sreg^-mem

MOVmem,reg/sreg;mem-reg/sreg

MOVreg,imm;reg-imm

MOVmem,imm;mem-imm[HT5]

源操作數(shù)可以是通用寄存器、段寄存器、存儲器以及

立即操作數(shù),目標(biāo)操作數(shù)可以是通用寄存器、段寄存器

(CS除外)或存儲器。各種數(shù)據(jù)傳送關(guān)系如圖3-5所示。

使用MOV指令進(jìn)行數(shù)據(jù)傳送時(shí)應(yīng)注意:段寄存器CS及

立即數(shù)不能作為目標(biāo)操作數(shù);兩個(gè)存儲單元之間不允許直

接傳送數(shù)據(jù);立即數(shù)不能直接傳送到段寄存器;兩個(gè)段寄

存器之間不能直接傳送數(shù)據(jù)。

通用寄存器

(AX、BX、CX、DX、BP、

SP、SLDI)

111)1

.

器即

數(shù)

11

段寄存器

(CS、SS、DS、ES)

圖3-5數(shù)據(jù)傳送關(guān)系示意圖

(2)堆棧操作指令PUSH/POP。

堆棧是按照后進(jìn)先出原則組織的一段內(nèi)存數(shù)據(jù)區(qū)域。

80X86/Pentium規(guī)定堆棧設(shè)置在堆棧段SS內(nèi)。堆棧的棧底是

固定不變的,這塊存儲器只有一個(gè)出入口,稱之為棧頂棧指

針SP始終指向堆棧的棧頂。隨著PUSH和POP指令的執(zhí)行,

棧頂?shù)奈恢脤l(fā)生變化,進(jìn)棧棧頂向低地址方向擴(kuò)展,退棧

棧頂向高地址(棧底)方向擴(kuò)展,即SP的內(nèi)容被修改,并始

終指向的是棧頂。在子程序調(diào)用或中斷時(shí),堆棧用于保護(hù)當(dāng)

前的斷點(diǎn)地址和現(xiàn)場數(shù)據(jù),以便子程序執(zhí)行完畢后正確返回

到主程序。斷點(diǎn)地址的保存由子程序調(diào)用指令或中斷晌座來

完成,現(xiàn)場數(shù)據(jù)保存可通過堆棧操作指令來實(shí)現(xiàn)。

、"UI\I)匕審

指令格式:PUSHOPRD

POPOPRD

指令功能:進(jìn)棧指令PUSH使SP-2—SP,然后將16位

的源操作數(shù)壓入堆棧,先高位后低位。源操作數(shù)可以是

通用寄存器、段寄存器和存儲器。

POP退棧指令的執(zhí)行過程與PUSH相反。它從當(dāng)前棧

頂彈出16位操作數(shù)到目標(biāo)操作數(shù),同時(shí)SP+2—SP,使SP

指向新的棧頂。目標(biāo)操作數(shù)可以是通用寄存器、段寄存

器(CS除外)或存儲器。

進(jìn)棧和退棧的操作數(shù)要求以字為單位。PUSH和POP

指令不影響標(biāo)志位?!?/p>

具體指令形式:

PUSHreg16;SPSP-2,[SP]-regl6

POPreg16;regl6<-[SP],SPSP+2

PUSHSreg;SPSP-2,[SP]<-Sreg16

POPSreg16;Sreg16[SP],SPSP+2

PUSHmem16;SPSP-2,[SP]-meml6

POPmem16;meml6-[SP],SPSP+2

(3)交換指令XCHG。

指令格式:XCHG0PRD1,0PRD2

指令功能:將一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目標(biāo)操

作數(shù)進(jìn)行交換。

具體指令形式:[HT5〃]

XCHGreg,reg[WB];reg<-->reg

XCHGmem,reg[DW];mem^-->reg

XCHGreg,mem[DW];reg^-->mem[HT5]

XCHG可實(shí)現(xiàn)寄存器之間或寄存器與存儲器之間單信息

交換。但是,不能在兩個(gè)存儲單元之間直接交換數(shù)據(jù)漆段

寄存器和立即數(shù)不能作為操作數(shù)。一s,

(4)查表轉(zhuǎn)換指令XLAT。

指令格式:XLAT

XLATOPRD;AL-[BX+AL]

指令功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換。它將數(shù)據(jù)段中

偏移地址為BX與AL寄存器之和的存儲單元的內(nèi)容送入AL

寄存器。

在使用該指令時(shí),應(yīng)首先在數(shù)據(jù)段中建立一個(gè)長度小

于256B的表格,表的首地址置于BX中,AL中存放查找對

象在表中的下標(biāo)。指令執(zhí)行后,所查找的對象存于A1中,

BX內(nèi)容保持不變。;

2.地址傳送指令

⑴有效地址傳送指令LEA。

指令格式:LEA0PRD1,0PRD2

指令功能:將源操作數(shù)的有效地址送到目的操作數(shù)。

具體指令形式:

LEAreg16,mem;reg16-Addr(mem)

(2)地址指針傳送指令LDS/LES。

指令格式:LDS0PRD1,0PRD2

LES0PRD1,OPRD2

指令功能:這兩條指令的功能類似,都是將源操作數(shù)

偏移地址決定的雙字單元中的第一個(gè)字的內(nèi)容傳送到指令

指定的16位通用寄存器,第二個(gè)字的內(nèi)容傳送給段寄存器

DS或ES。

3.標(biāo)志字傳送指令

標(biāo)志字傳送指令用于對標(biāo)志寄存器(FR)的保護(hù)和更

新操作。指令的操作數(shù)由隱含方式給出。

(1)標(biāo)志字讀寫指令LAHF/SAHFo

指令格式:LAHF

SAHF

LAHF指令可將標(biāo)志寄存器的低字節(jié)(含符號標(biāo)志SF、

零標(biāo)志ZF、輔助進(jìn)位標(biāo)志AF、奇偶標(biāo)志PF和進(jìn)位標(biāo)志CF)

傳送到AH寄存器中。這條指令不影響標(biāo)志位。,

SAHF指令的功能與LAHF相反,它將寄存器AH的內(nèi)

容傳送到標(biāo)志寄存器的低字節(jié)中。

(2)標(biāo)志進(jìn)棧/出棧指令PUSHF/POPFo

指令格式:PUSHF

POPF

PUSHF指令把標(biāo)志寄存器的內(nèi)容壓入堆棧,同時(shí)堆棧

指針SP-SP-2。

POPF指令將堆棧指針SP所指的一個(gè)字傳送到標(biāo)聲寄存

器中,同時(shí)堆棧指針SP-SP+2。

4.輸入/輸出數(shù)據(jù)傳送指令I(lǐng)N/OUT

在計(jì)算機(jī)中,輸入/輸出操作是由CPU利用輸入、輸

出指令并通過累加器AL,AX進(jìn)行的。輸入指令完成由輸入

端口到CPU的信息傳送,輸出指令完成從CPU到輸出端口的

信息傳送。

指令格式:INOPRD1,OPRD2

OUTOPRD1,OPRD2

指令功能:在AL或AX寄存器與I/O端口之間傳送數(shù)據(jù)。

具體指令形式:

INAL,imm8;AL*-(imm8)

OUTimm8,AL;(imm8)—AL

INAX,imm8AX—(imm8+l)(imm8)

OUTimm8,AX(imm8+l)(imm8)—AX

INAL,DXAL-(DX)

OUTDX,AL(DX)-AL

INAX,DXAX-(DX+1)(DX)

OUTDX,AX(DX+1)(DX)-AX

j

3.2.2算術(shù)運(yùn)算類指令

算術(shù)運(yùn)算指令可完成加、減、乘、除運(yùn)算以及在算術(shù)運(yùn)

算過程中進(jìn)行進(jìn)制及編碼調(diào)整操作。在進(jìn)行這些操作時(shí),可

針對字節(jié)或字運(yùn)算,也可對帶符號數(shù)和無符號數(shù)進(jìn)行運(yùn)算。

算術(shù)運(yùn)算類指令如表3-4所示。

1.加法指令

(1)加法指令A(yù)DD。

指令格式:ADD0PRD1,0PRD2

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

目的操作數(shù)。即0PRD1+0PRD2-0PRD1。

類另1」指令名稱指令格式

加法(字節(jié)/字)ADD目標(biāo),源

加法帶進(jìn)位加法(字節(jié)/字)ADC目標(biāo),源

加1(字節(jié)/字)INC目標(biāo)

減法(字節(jié)/字)SUB目標(biāo),源

帶借位減法(字節(jié)/字)SBB目標(biāo),源

減法減1(字節(jié)/字)DEC目標(biāo)

取負(fù)NEG目標(biāo)

比較CMP目標(biāo),源

不帶符號乘法MUL源

乘法

帶符號整數(shù)乘法IMUL源

不帶符號除法DIV源

帶符號整數(shù)除法IDIV源

除法

字節(jié)轉(zhuǎn)換成字CBW

字轉(zhuǎn)換成雙字CWD

加法的ASCII碼調(diào)整(非壓縮BCD數(shù))AAA

加法的十進(jìn)制調(diào)整(壓縮BCD數(shù))DAA

減法的ASCII碼調(diào)整(非壓縮BCD數(shù))AAS

十進(jìn)制調(diào)整

減法的十進(jìn)制調(diào)整(壓縮BCD數(shù))DAS

乘法的ASCII碼調(diào)整(非壓縮BCD數(shù))AAM

除法的ASCII碼調(diào)整(非壓縮BCD數(shù))AAD

具體指令形式:ADDreg,reg[WB];reg<-reg+reg

ADDreg,mem;reg-reg+mem

ADDreg,imm;reg-reg+imm

ADDmem,reg;mem-mem+reg

ADDmem,imm;mem-mem+imm[HT5]

要求源操作數(shù)和目的操作數(shù)同時(shí)為帶符號的數(shù)或無符

號數(shù),且長度相等。

⑵帶進(jìn)位加法指令A(yù)DC。

指令格式:ADC0PRD1,0PRD2

指令功能:將源操作數(shù)與目的操作數(shù)以及進(jìn)位標(biāo)志位

CF的值相加,并將結(jié)果存放于目的操作數(shù),即

0PRD1+0PRD2+CF-0PRD1。

具體指令形式:

ADCreg,reg;regreg+reg+CF

ADCreg,mem;regreg+mem+CF

ADCreg,imm;reg-reg+imm+CF

ADCmem,reg9mem—mem+reg+CF

ADCmem,imm9mem-mem+imm+CF

(3)加1指令I(lǐng)NC。

指令格式:INCOPRD

指令功能:將指定操作數(shù)內(nèi)容加1。INC指令不影響進(jìn)

位標(biāo)志CF。

具體指令形式:

INCmem;mem-mem+1

INCreg;reg<-reg+l[HT]

2.減法指令

減法指令有SUB減法、SBB帶借位的減法、DEC減1、

NEG求補(bǔ)和CMP比較等指令。:

⑴減法指令SUB。

指令格式:SUB0PRD1,0PRD2

指令功能:將目的操作數(shù)減去源操作數(shù),結(jié)果存放于

目的操作數(shù),即0PRD1-0PRD2-0PRD1。

具體指令形式:

SUBreg,reg;reg-reg-reg

SUBreg,mem;reg—reg-mem

SUBreg,imm;reg-reg-imm

SUBmem,reg;mem*-mem-reg

SUBmem,imm;mem-mem-imm

*

(2)帶借位減法指令SBB。

指令格式:SBB0PRD1,0PRD2

指令功能:將目的操作數(shù)減去源操作數(shù),再減去借

位CF的值,結(jié)果存放于目的操作數(shù)。即0PRD1-0PRD2-

CF-0PRD1。

具體指令形式:

SBBreg,regreg*-reg-reg-CF

SBBreg,memreg-reg-mem-CF

SBBreg,immreg^reg-imm-CF

SBBmem,regmem-mem-reg-CF

SBBmem,immmem-mem-imm-CF

(3)減1指令DEC。

指令格式:DECOPRD

指令功能:對指定操作數(shù)減1。DEC指令不影響進(jìn)位

志。

具體指令形式:KHT5〃X

DECmem[DW];mem-mem-1

DECreg[DW];reg-reg-1[HT]

(4)求補(bǔ)指令NEG。

指令格式:NEGOPRD

指令功能:對指定操作數(shù)求補(bǔ)運(yùn)算。在機(jī)器內(nèi)部.,

對操作數(shù)的求補(bǔ)操作是對操作數(shù)進(jìn)行

求反后末位加1。通過求補(bǔ)可使正數(shù)變?yōu)樨?fù)數(shù)或使負(fù)

數(shù)變?yōu)檎龜?shù)。這樣使得一個(gè)正數(shù)減去一個(gè)正數(shù)的減法運(yùn)

算,轉(zhuǎn)化為一個(gè)正數(shù)加上一個(gè)負(fù)數(shù)的加法運(yùn)算。

具體指令形式:

NEGmem;mem-O-mem

NEGreg;reg^O-reg[HT]

(5)比較指令CMP。

指令格式:CMPOPRD1,OPRD2

指令功能:將目的操作數(shù)減去源操作數(shù),結(jié)果不予保

存。只是根據(jù)結(jié)果的狀態(tài)設(shè)置條件標(biāo)志位,設(shè)置狀態(tài)標(biāo)志

位與SUB指令含義相同。「

CMPreg,reg;reg-reg

CMPreg,mem;reg-mem

CMPreg,imm;reg-imm

CMPmem,reg;mem-reg

CMPmem,imm;mem-imm

比較指令通常用于比較兩個(gè)操作數(shù)的大小。由受影響

的標(biāo)志位狀態(tài)來判斷兩個(gè)操作數(shù)比較的結(jié)果。不論是無符

號數(shù)比較還是有符號數(shù)比較,若在比較指令后,ZF1,則

兩者相等,否則不相等。若兩者不相等,則可在比較兩個(gè)

數(shù)之后,利用其他標(biāo)志位的狀態(tài)來確定兩者中哪個(gè)大。

如果是兩個(gè)無符號數(shù)比較,則可根據(jù)進(jìn)位標(biāo)志CF的狀

態(tài)來判斷:

若CF1,貝I」0PRDK0PRD2;若CFO,貝”

OPRDl>OPRD2o

如果是兩個(gè)有符號數(shù)比較,則要根據(jù)SF和OF兩個(gè)標(biāo)志

的關(guān)系來判斷:

若SFOFO,則OPRD1>OPRD2;若SFOF1,貝

OPRDl<OPRD2o

在程序中,比較指令常用于條件轉(zhuǎn)移之前,條件轉(zhuǎn)移指

令根據(jù)CMP操作之后的狀態(tài)標(biāo)志決定程序轉(zhuǎn)移或不轉(zhuǎn)移。

二7憶

3.乘法指令

乘法指令包括無符號數(shù)乘法、帶符號數(shù)乘法兩種。

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

指令格式:MULOPRD

指令功能:完成兩個(gè)無符號數(shù)的乘法運(yùn)算。要求被

乘數(shù)放在AL或AX累加器中,用于字節(jié)運(yùn)算和字運(yùn)算,另

一乘數(shù)可通過指令中的OPRD(除立即數(shù)方式以外的尋址

方式)獲得。

具體指令形式:

MULreg;AX-ALXreg8或DX,

AX<-AXXregl6

具體指令形式:

IMULreg;AX-ALXreg8或DX,

AX-AXXregl6

IMULmem;AX-ALXmem8或DX,

AX-AXXmem16

乘法指令的執(zhí)行結(jié)果會使標(biāo)志位發(fā)生變化。只有進(jìn)位

標(biāo)志CF、溢出標(biāo)志OF有意義,其它標(biāo)志位無定義。CF、

OF定義如下:當(dāng)進(jìn)行字節(jié)運(yùn)算時(shí),其結(jié)果超過字節(jié)長度成

為字(AHW0),

CF和OF置、'1〃;當(dāng)進(jìn)行字運(yùn)算時(shí),其結(jié)果超過字長

度成為雙字(DXWO),CF和OF置這樣就可以用OF及

CF來檢查和判斷字節(jié)或字操作的結(jié)果。對MUL指令,當(dāng)

進(jìn)行字節(jié)操作時(shí),乘積結(jié)果的高一半為O(AHO),或當(dāng)進(jìn)行

字操作時(shí),乘積結(jié)果高一半為O(DXO),CF和OF均為0。對

于IMUL指令,如果乘積結(jié)果的高一半為低一半的符號位的

擴(kuò)展,那么CF和OF均置''0〃,否則置、'1〃。

乘法指令為乘積保留了兩倍于原來操作數(shù)的存儲空

間,因而不會出現(xiàn)溢出現(xiàn)象。

1

4.除法指令

除法指令包括無符號數(shù)除法指令DIV,帶符號數(shù)除法指

令I(lǐng)DIV,以及在除法運(yùn)算中輔助DIV、IDIV指令的字節(jié)轉(zhuǎn)

換為字指令CBW和字轉(zhuǎn)換為雙字指令CWB。

(1)無符號數(shù)除法指令DIV。

指令格式:DIVOPRD

指令功能:完成兩個(gè)無符號數(shù)的除法運(yùn)算,除法操作

可作字節(jié)或字操作。在進(jìn)行字節(jié)操作時(shí),要求被除數(shù)為16

位、并存放在AX累加器,除數(shù)8位由指令中的源操作數(shù)指

定,結(jié)果的8位商存放于AL中,8位余數(shù)存放于AH中。在

進(jìn)行字操作時(shí),要求被除數(shù)為32位,存放在DX,AX寄存器

中,16位除數(shù)由指令中源操作數(shù)指定,結(jié)果的16位闔薦放

于AX中,16位余數(shù)存放于DX中.巡,

⑵帶符號數(shù)除法指令I(lǐng)DIV。

指令格式:IDIV源操作數(shù)

指令功能:完成兩個(gè)帶符號數(shù)的除法操作。在執(zhí)行該指

令時(shí),要求操作數(shù)為帶符號數(shù),商及余數(shù)也為帶符號數(shù),

余數(shù)與被除數(shù)的符號相同。

除法指令的使用需要說明:

①源操作數(shù)不允許使用立即尋址方式。

②除法指令執(zhí)行后,標(biāo)志位無定義。

③除數(shù)為零時(shí),則產(chǎn)生一個(gè)0類型中斷。

在除法運(yùn)算中常常使用CBW和CWD對除法所需操作數(shù)

進(jìn)行長度擴(kuò)展。.

IT產(chǎn)

(3)字節(jié)轉(zhuǎn)換為字指令CBW。

指令格式:CBW

指令功能:將AL中的符號擴(kuò)展到AH中。

如:當(dāng)(AL)04H,執(zhí)行CBW指令后,(AH)OO;

當(dāng)(AL)FOH,執(zhí)行CBW指令后,(AH)OFFH

(4)字轉(zhuǎn)換為雙字節(jié)指令CWD。

指令格式:CWD

指令功能:將AX中的符號擴(kuò)展到DX中。它只是增加

了操作數(shù)長度,其操作數(shù)的大小沒有改變。CBW和CWD

指令的執(zhí)行對標(biāo)志位無影響。.$.

5.十進(jìn)制調(diào)整指令

在算術(shù)運(yùn)算中操作數(shù)可以采用BCD碼,但是運(yùn)算后的

結(jié)果必須經(jīng)過調(diào)整,否則結(jié)果是錯誤的。BCD碼是一種用

二進(jìn)制編碼表示的十進(jìn)制數(shù),每個(gè)BCD碼都是由4位二進(jìn)

制代碼來表示的,故稱為壓縮BCD碼。例如,10000101可

看作十進(jìn)制的85。使用BCD碼進(jìn)行算術(shù)運(yùn)算,一方面符

合計(jì)算機(jī)只能處理二進(jìn)制數(shù)的要求,另一方面BCD碼也給

編寫和閱讀程序帶來了直觀效果。為此指令系統(tǒng)提供了必

須用在ADD、ADC指令后面的加法十進(jìn)制調(diào)整指令DAA

和必須用在SUB、SBB指令后面的減法十進(jìn)制調(diào)整指令

DASo經(jīng)過調(diào)整后的結(jié)果才是正確的BCD碼。

(1)壓縮BCD數(shù)加法調(diào)整指令DAA。

指令格式:DAA

指令功能:將AL寄存器中的和調(diào)整為壓縮的BCD碼。

由于一個(gè)字節(jié)可以表示兩位BCD碼,因此該指令的調(diào)整將

根據(jù)標(biāo)志位CF、AF以及AL寄存器的值自動地進(jìn)行。

DAA指令的操作依據(jù)以下兩條原則進(jìn)行:

①當(dāng)輔助進(jìn)位標(biāo)志AF1或者AL寄存器的低4位為A?

FH時(shí),AL寄存器的內(nèi)容加上06H,并將標(biāo)志AF置''1〃(調(diào)

整低4位)。

②當(dāng)CF1或者AL寄存器的高4位為A?FH時(shí),A*尚存

器的內(nèi)容加上60H,并將標(biāo)志CF置''1〃(調(diào)整高4位)。

1

例如,當(dāng)(AL)26,(CL)26時(shí),執(zhí)行以下指令:

ADDAL,CL;(AL)4C,CFOAFO

DAA;(AL)52,CFOAFI

可以看到DAA指令是將(AL)-(AL)+06,得到(AL)52,

使結(jié)果調(diào)整為正確的BCD碼,并將標(biāo)志AF置

(2)壓縮BCD數(shù)減法調(diào)整指令DAS。

指令格式:DAS

指令功能:將AL寄存器中的差調(diào)整為壓縮的BCD碼。

DAS指令的使用要求與DAA指令一樣。DAS指令也是根據(jù)

標(biāo)志位CF、AF以及AL寄存器的值自動進(jìn)行調(diào)整。

DAS指令的操作依據(jù)以下兩條原則進(jìn)行:

①當(dāng)輔助進(jìn)位標(biāo)志AF1或者AL寄存器的低4位為A?

FH時(shí),AL寄存器的內(nèi)容減06H,并將AF置、'1〃。

②當(dāng)CF1或者AL寄存器的高4位為A?FH時(shí),AL寄存

器的內(nèi)容減60H,并將標(biāo)志CF置

DAA、DAS指令對壓縮BCD碼在運(yùn)算之后進(jìn)行自動調(diào)

整。在算術(shù)運(yùn)算中也可以使用非壓縮的BCD碼。同樣,非

壓縮的BCD碼在運(yùn)算之后,其結(jié)果也需要進(jìn)行調(diào)整。非壓

縮的BCD碼用8位二進(jìn)制代碼表示一個(gè)十進(jìn)制數(shù),即占用一

個(gè)字節(jié),其中低4位的含義與壓縮BCD碼相同,而高4位為

“0”。如:十進(jìn)制數(shù)8表示為非壓縮的BCD碼即為00001000。

(3)非壓縮BCD數(shù)加法調(diào)整指令A(yù)AA。

指令格式:AAA

指令功能:將寄存器AL中的和調(diào)整為非壓縮的BCD碼。

AAA指令用在ADD、ADC指令之后。

AAA指令調(diào)整過程如下:

①當(dāng)(AL)的低4位為0?9H之間,且AF為''0〃,則執(zhí)

行③;

②當(dāng)(AL)的低4位為A?FH之間,或AF為、'1〃,貝U

(AL)-(AL)+06,(AH)-(AH)+1,AF置''1〃;

③AL寄存器的高4位被清除;

④將AF的值送CF標(biāo)志位。/工40

例如,當(dāng)(AX)0008H,(BL)09H時(shí)執(zhí)行下列指令:

ADDAL,BL;(AX)0011H,(BL)09H

AAA;(AL)07H,(AH)OIH,或(AX)0107H,CF1

(4)非壓縮BCD數(shù)減法調(diào)整指令A(yù)AS。

指令格式:AAS

指令功能:將AL中的差調(diào)整為非壓縮的BCD碼,AAS

指令用在SUB、SBB指令之后。

AAS指令調(diào)整過程如下:

①當(dāng)(AL)的低4位為0?9H時(shí),且AFO,則執(zhí)行③;

②當(dāng)(AL)的低4位為A?FH時(shí),,或AF1,貝lJ(AL)-(AL)-

06H,(AH)-(AH)-1,AF置''1〃;

③AL寄存器高4位被清除;

④將AF的值送CF標(biāo)志位。

AAA指令和AAS指令對AF、CF標(biāo)志位產(chǎn)生影響,其

它標(biāo)志位均無定義。

(5)非壓縮BCD數(shù)乘法調(diào)整指令A(yù)AM。

指令格式:AAM

指令功能:將存放在寄存器AL中的積調(diào)整為非壓縮的

BCD碼。AAM指令用在MUL指令對兩個(gè)非壓縮BCD碼的數(shù)

進(jìn)行乘法之后。

其調(diào)整方法是將AL寄存器中的內(nèi)容除以O(shè)AH,商放在

AH寄存器中,余數(shù)放在AL寄存器中。

例如,當(dāng)(AL)08H,(CL)08H時(shí)執(zhí)行下列指令:

MULAL,CL;(AL)80H

AMM;(AH)06H(AL)04H

由此可見,調(diào)整后的結(jié)果是非壓縮BCD碼乘積結(jié)果。

由于非壓縮的BCD碼占一個(gè)字節(jié),因此結(jié)果被分別存放在

AH、AL中。

(6)非壓縮BCD數(shù)除法調(diào)整指令A(yù)AD。

指令格式:AAD

指令功能:將AX寄存器中非壓縮的BCD碼形式的被除

數(shù)調(diào)整為二進(jìn)制數(shù),并存放在AL寄存器中。AAD指令的使

用要求與加法調(diào)整AAA、減法調(diào)整AAS、乘法調(diào)整AAM不

同,它是放在除法DIV指令的前面來使用的,其調(diào)整方法是

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論