




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購買進(jìn)口相機(jī)合同協(xié)議
- 購車貸款免息合同協(xié)議
- 誤簽拆遷協(xié)議書范本
- 豆芽合同協(xié)議書范本
- 購買私人碎石合同協(xié)議
- 2025屆浙江省G12名校協(xié)作體高三上學(xué)期返???地理試題(含答案)
- 財(cái)務(wù)管理公司合同協(xié)議
- 購車合同協(xié)議終修訂版
- 貼地板合同協(xié)議
- 2025屆山東省泰安市肥城市高三上學(xué)期開學(xué)考-地理試題(含答案)
- 浙江省紹興市2025年高考二模數(shù)學(xué)試題(含答案)
- DeepSeek1小時(shí)快速入門教程學(xué)習(xí)
- 腦卒中多學(xué)科會診制度
- 企業(yè)資產(chǎn)管理(EAM)系統(tǒng)實(shí)施作業(yè)指導(dǎo)書
- 2023《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀
- 鋁加工(深井鑄造)企業(yè)安全生產(chǎn)數(shù)字化改造指引試行
- 《使用有毒物品作業(yè)場所勞動保護(hù)條例》新版解讀:加強(qiáng)勞動保護(hù)預(yù)防職業(yè)危害
- 《動物防疫》課件
- 山西焦煤招聘2025筆試題庫
- 軍工科研招投標(biāo)行為規(guī)范須知
- 幼兒園食堂主要負(fù)責(zé)人食品安全崗位職責(zé)
評論
0/150
提交評論