版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
微型計算機原理及應用匯編語言與匯編程序23指令的格式操作數(shù)的尋址方式常用指令1機器指令——用二進制編碼形式下達的指示和命令。如:1100110100100001
機器語言編寫程序煩瑣,難記憶,不易理解,易出錯符號指令——由助記符、符號組成,它與機器指令一一對應。1100110100100001
INT21H
匯編——機器只能識別機器指令,所以需要將符號指令翻譯成機器指令,翻譯的過程稱作匯編。匯編程序——完成匯編任務的程序。1E PUSHDS2BC0 SUBAX,AX50 PUSHAXB84D14 MOVAX,144DH8ED8 MOVDS,AX
匯編語言源程序匯編程序目標文件匯編語言源程序——用符號指令書寫的程序。學習要點正確定義各種符號,熟練使用地址表達式熟練掌握符號指令的尋址方式掌握符號指令匯編語言源程序的格式熟練掌握系統(tǒng)功能調(diào)用基本格式:
[標號:]操作碼助記符目的操作數(shù),源操作數(shù)[;注釋]標號:為該條指令所在內(nèi)存單元的符號地址,后面要跟冒號。標號一般由字母開頭,后跟字母、數(shù)字或特殊字符,不允許使用保留字。操作碼助記符:指示CPU執(zhí)行什么樣的操作。操作數(shù):分目的操作數(shù)和源操作數(shù)兩種。目的操作數(shù)是指令結(jié)果存放的位置,源操作數(shù)是指令操作的對象。注釋:說明本條指令或一段程序的功能,使程序可讀性強。匯編程序?qū)ζ洳贿M行處理。(1)標號是給該指令所在地址取的名字,必須后跟冒號“:”,它可以缺省,是可供選擇的標識符。86系列匯編語言中可使用的標識符必須遵循下列規(guī)則:①標識符由字母(a~z,A~Z)、數(shù)字(0~9)或某些特殊字符(@,-,?)組成。②第一個字符必須是字母(a~z,A~Z)或某些特殊的符號(@,-,?),但“?”不能單獨作標識符。③標識符有效長度為31個字符,若超過31個字符,則只保留前面的31個字符為有效標識符。下面是有效的標識符:
START:MY-CODE:ALPHA:
NUM@-1:LOOP1:X:
?MORE-350:BETA-1:DELAYIS:下面是無效的標識符:
4LOOP:MAIN
A/B:
BETA*:START=3:GAMA$1:
NUM+1:?:ONE*TWO:(2)指令助記符是指令名稱的代表符號,它是指令語句中的關(guān)鍵字,不可缺省,它表示本指令的操作類型,必要時可在指令助記符的前面加上一個或多個“前綴”,從而實現(xiàn)某些附加操作。(3)操作數(shù)是參加本指令運算的數(shù)據(jù),有些指令不需要操作數(shù),可以缺?。挥行┲噶钚枰獌蓚€操作數(shù),這時必須用逗號(,)將兩個操作數(shù)分開;有些操作數(shù)可以用表達式來表示。(4)注釋部分是可選項,允許缺省,如果帶注釋則必須用分號(;)開頭,注釋本身只用來對指令功能加以說明,給閱讀程序帶來方便,匯編程序不對它做任何處理。以字母開頭的一串字符為了區(qū)別符號和數(shù)據(jù),以字母開頭的十六進制數(shù),其前面要加一個前導0如:0FFH數(shù)據(jù)
FFH符號
符號匯編中的各種符號由偽指令定義,有常量、變量和標號三類1符號指令中的表達式常用的有二進制數(shù)、十進制數(shù)、十六進制數(shù)和ASCII字符如:1010B,10,0AH,’A’,’$’,’ABC’1.常量
—在匯編時已有確定數(shù)值的量ASCII字符做數(shù)值常量時,需加單引號1.1常量和數(shù)值表達式(1)數(shù)值常量程序中為經(jīng)常使用的數(shù)值取的名。用EQU或“=”偽指令定義,如:PEQU314P=314注:匯編時,匯編程序不給符號常量分配存儲單元(2)符號常量1.1常量和數(shù)值表達式數(shù)據(jù)存放規(guī)律字節(jié)數(shù)據(jù)---一個字節(jié)單元存放字數(shù)據(jù)---二個字節(jié)單元存放雙字數(shù)據(jù)---四個字節(jié)單元存放規(guī)定:(1)“低對低,高對高”(2)低位字節(jié)的地址為字的地址1、變量存儲區(qū)中數(shù)據(jù)的存放1.2變量在數(shù)據(jù)段或附加數(shù)據(jù)段中用偽指令定義[變量名]DB
表達式[,……];定義字節(jié)變量[變量名]DW
表達式[,……];定義字變量[變量名]DD
表達式[,……];定義雙字變量[變量名]DQ
表達式[,……];定義四字變量[變量名]DT
表達式[,……];定義六字節(jié)變量[變量名]DT
表達式[,……];定義十字節(jié)變量數(shù)據(jù)定義偽指令指明了變量的類型表達式確定變量的初值。表達式有如下6種:2.變量的定義1.2變量(1)表達式為常量或數(shù)值表達式→存入數(shù)值如:W1
DW
1(2)表達式為ASCII字符串→存入ASCII值如:W2
DW
’AB’
;用DW定義時,串長不可大于2
B2
DB
’AB$’;用DB定義時,串長可大于2(3)表達式為重復子句格式:NDUP(表達式)如:B3
DB
2
DUP(0)
B4
DB
2
DUP(5,’A’)1.3變量例:BDB3
W
DW1122H
1.3變量W2DW
1994HB2DB2DUP(-5,-1)DB1DUP(10,E);重復因子1不能省DB13,1,3例畫出數(shù)據(jù)的存儲形式1.3變量W2DW
1994HB2DB2DUP(-5,-1)DB1DUP(10,E);重復因子1不能省DW1,3例畫出數(shù)據(jù)的存儲形式1.3變量匯編語言與匯編程序13符號指令中的表達式操作數(shù)的尋址方式常用指令2符號指令的格式:
操作助記符[目的操作數(shù)][,源操作數(shù)]
;注釋操作助記符——指明指令進行什么操作源操作數(shù)指明操作數(shù)據(jù)的地址;目的操作數(shù)既指明操作數(shù)據(jù)的地址,還指明(操作后)數(shù)據(jù)的存放地址尋址方式——根據(jù)操作數(shù)尋找操作數(shù)據(jù)(或數(shù)據(jù)的存放)地址的方式2
操作數(shù)的尋址方式操作數(shù)即為操作數(shù)據(jù),操作數(shù)據(jù)就在指令中立即尋址方式只能用于源操作數(shù),主要用來給寄存器或存儲器賦初值例:MOV5,AL╳
立即數(shù)沒有類型屬性1.立即尋址例:MOVAL,5;將字節(jié)05H送AL,AL=05HMOVAX,18;將字0012H送AX,AX=0012HMOVBL,-1;將字節(jié)FFH送BL,BL=0FFH操作數(shù)據(jù)在指定的寄存器中2.
寄存器尋址
例:AX=2035H,BX=0178HMOVBX,AX;BX=AX=2035HADDAL,BL;AL=ADH,BL=78HAH,AL,BH,BL,CH,CL,DH,DL→8位通用寄存器AX,BX,CX,DX,SI,DI,BP,SP→16位通用寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP→32位通用寄存器傳送指令助記符目的操作數(shù)源操作數(shù)操作數(shù)據(jù)在存儲器中,其偏移地址由指令直接給出(地址表達式中只有變量名和常量)3.直接尋址地址表達式為:變量名或常量或變量名+常量變量名:段地址默認在DS中
例:MOVAX,W該指令的源操作數(shù)的地址為DS:OFFSETW常量:段地址默認在DS中例:MOV AX,[2000H]如果DS=3000H,則執(zhí)行情況如圖所示。執(zhí)行結(jié)果為:AX=2040H直接尋址常用已定義的變量表示
例:W2DW-5,1994H
MOVAX,W2;AX=FFFBHMOVBX,W2+2;BX=1994H區(qū)分立即尋址與直接尋址從變量中取數(shù)據(jù)屬于直接尋址方式,注意與符號常量區(qū)別例:AAEQU10MOVAX,AA;立即尋址,AX=000AHMOVBX,AA+5;立即尋址,BX=000FH若BX=0124H,
MOV
CX,[BX];間接尋址,CX=1958HMOV
AX,BX
;寄存器尋址,AX=0124H
操作數(shù)為帶方括號的寄存器:[SI],[DI],[BX],[BP],[EAX]…[ESP]寄存器的內(nèi)容為操作數(shù)據(jù)的偏移地址4.間接尋址間接尋址只有一種形式[寄存器]間接尋址屬于存儲器尋址,寄存器內(nèi)容為操作數(shù)據(jù)的偏移地址。寄存器尋址中,寄存器內(nèi)容即為操作數(shù)據(jù)。只有SI,DI,BX,BP和32位的寄存器可用于間接尋址。
例:MOVAX,[ECX]MOVAX,[CX]
╳
若用BP間址,約定段寄存器為SS;否則,約定段寄存器為DS。
例:MOVAX,[BX];(DS:[BX])→AX
例:MOVAX,[BP];(SS:[BP])→AX
操作數(shù)據(jù)在存儲器中,其偏移地址為基址寄存器(BX或BP或32位的寄存器)的內(nèi)容與變量的偏移地址、常量之和:
[變量名+基址寄存器+常量]
或變量名[基址寄存器+常量]例:MOVBL,2[BX]或MOVBL,[BX+2]
;(DS:[BX+2])→BL例:MOV6[BP],AX或MOV[BP+6],AX;AX→SS:[BP+6]段寄存器的確定,首先由變量確定;若無變量,則由寄存器確定,寄存器確定的原則同間址。4.1基址尋址4.2.變址尋址操作數(shù)據(jù)在存儲器中,其偏移地址為變址寄存器(SI、DI或32位的寄存器)的內(nèi)容與變量的偏移地址、常量之和。
例:MOVAX,2[SI]或MOVAX,[SI+2]執(zhí)行的操作是(DS:[SI+2])→AX段寄存器的確定,首先由變量確定;若無變量,則由寄存器確定,寄存器確定的原則同間址。
如果指令執(zhí)行前DS=3000H,SI=2000H,COUNT的偏移地址為3000H,指令執(zhí)行情況如圖所示。指令執(zhí)行結(jié)束后,AX=3412H。MOV AX,[COUNT+SI]4.3.基址變址尋址例:MOVAX,4[BX+DI]
或MOVAX,[BX+DI+4];(DS:[BX+DI+4])→AX段寄存器的確定,首先由變量確定;若無變量,則由基址寄存器確定,基址寄存器確定的原則同間址。
基址寄存器和變址寄存器的位數(shù)要相同。操作數(shù)據(jù)在存儲器中,其偏移地址為指令中指定的基址寄存器和變址寄存器的內(nèi)容與變量的偏移地址、常量之和。例:W為一字變量,B為一字節(jié)變量,則:
MOVAL,W[BX]╳
MOVAL,BYTEPTRW[BX]√
MOVAX,B[SI+5]╳MOVAX,WORDPTRB[SI+5]√在符號指令中的基址,變址,基址變址三種尋址中,其位移量可以是常數(shù)或符號常量,還可以是變量名。若是變量名,它給出變量所在段的偏移地址,其意義是取變量單元中的數(shù)據(jù),所以其類型要與另一操作數(shù)的類型一致。
例:將立即數(shù)35H存入字節(jié)變量BUF+5單元中直接尋址:MOVBUF+5,35H間接尋址:MOVBX,OFFSETBUF+5MOVBYTEPTR[BX],35H基址尋址:MOVBX,5MOVBUF[BX],35H;常用間址、基址/變址訪問一片連續(xù)的單元
例:B1DB’AB$’MOVAL,B1[BX];AL=41HMOVAH,B1[BX+1];AH=42H(2)存儲器尋址中段寄存器的確定存儲器尋址時段寄存器的基本約定和段更換見下表:存儲器存取方式約定段寄存器段更換偏移地址取指令CS不允許IP、EIP堆棧操作SS不允許SP、ESP數(shù)據(jù)存取(BP、EBP和ESP間址、基址除外)DS另外5個段寄存器EABP、EBP和ESP間址、基址數(shù)據(jù)存取SS另外5個段寄存器EA字符串處理指令的源串DSESCSSSSI、ESI字符串處理指令的目的串ES不允許DI、EDI有效地址EA(EffectiveAddress)是匯編程序計算后得到的地址表達式的偏移地址。匯編語言與匯編程序1符號指令中的表達式操作數(shù)的尋址方式常用指令23數(shù)據(jù)傳送指令加減運算指令邏輯運算指令移位指令其他常用指令注:學習時注意指令格式及功能3常用指令1.通用數(shù)據(jù)傳送指令格式:MOVdest,source
目的操作數(shù)源操作數(shù)功能:將一個字節(jié)或一個字或一個雙字數(shù)據(jù)從源傳送至目的地址中,源保持不變3.1數(shù)據(jù)傳送類指令指令特點:將數(shù)據(jù)從一個部位傳送到另一部位。不影響標志寄存器中的狀態(tài)標志位。MOV指令的9種形式:MOVREG,REGMOVREG,IMMMOVMEM,IMMMOVMEM,REGMOVREG,MEMMOVSEGREG,REG;CS除外MOVREG,SEGREGMOVSEGREG,MEM;CS除外MOVMEM,SEGREG3.1數(shù)據(jù)傳送類指令一個指令中,兩操作數(shù)類型必須一致至少1個操作數(shù)的類型要明確,不能出現(xiàn)二義性代碼段寄存器CS和立即數(shù)均不能作為目的操作數(shù)源操作數(shù)和目的操作數(shù)不能同時為存儲器操作數(shù)存儲器操作數(shù)的類型由地址表達式的變量名確定立即數(shù)的類型不明確,不含變量名的地址表達式的類型也不明確。在立即數(shù)送存儲器的指令中,若存儲器操作數(shù)是不含變量名的地址表達式,則必需使用PTR來明確其中一個操作數(shù)的類型。注意:3.1數(shù)據(jù)傳送類指令(1)字節(jié)、字和雙字交換指令格式:XCHGdest,source
功能:將源地址與目的地址中的內(nèi)容互換
XCHGREG,REGXCHGREG,MEMXCHGMEM,REG2.數(shù)據(jù)交換指令3.1數(shù)據(jù)傳送類指令例如,數(shù)據(jù)段中有兩個字變量W1和W2,編寫程序段將兩個字變量互換
W1DW1234HW2DW5678H①用數(shù)據(jù)交換指令實現(xiàn):
MOVAX,W1;AX=1234HXCHGAX,W2;AX=5678H,W2=1234HMOVW1,AX;W1=5678H②僅用MOV指令實現(xiàn):
MOVAX,W1MOVBX,W2MOVW1,BXMOVW2,AX3.1數(shù)據(jù)傳送類指令3.棧操作指令堆棧的概念堆棧中數(shù)據(jù)的存取遵循“先進后出”的原則。堆棧的活動端稱為棧頂,固定端稱為棧底。80x86的堆棧的伸展方向是從高地址向低地址。堆棧操作都是字或雙字操作,進棧時SP自動減2/4,出棧時SP自動加2/4。3.1數(shù)據(jù)傳送類指令(1)進棧指令格式:PUSHsourceSP→0040HSP→003FHSP→003EH1234例:AX=1234HPUSHAX執(zhí)行AXAHAL1234執(zhí)行過程如下圖:3.1數(shù)據(jù)傳送類指令(2)出棧指令格式:POPdestBXBHBLSP→0040HSP→003FH12SP→003EH34執(zhí)行1234例:POPBX執(zhí)行過程如下圖:3.1數(shù)據(jù)傳送類指令使用棧操作指令實現(xiàn)將數(shù)據(jù)段中兩個字變量W1和W2互換的程序段如下:PUSHW1PUSHW2POPW1POPW23.1數(shù)據(jù)傳送類指令加減運算的操作數(shù):注:兩操作數(shù)需類型相同,不能同為存儲器加減法指令執(zhí)行后的結(jié)果將影響狀態(tài)標志
3.2加減運算指令
1.加法類指令
(1)加法指令ADD格式:ADDdest,source操作:source+dest→dest
即將源操作數(shù)據(jù)與目的操作數(shù)據(jù)相加,結(jié)果存入目的地址中,源地址內(nèi)容不變(2)加進位的加法指令ADC格式:ADCdest,source操作:dest+source+CF→dest
;CF為前面指令產(chǎn)生的CF例3個32位無符號數(shù)12345678H、8765ABCDH和2468FEDCH相加,其和(仍為32位無符號數(shù))存入雙字變量EQ中。用16位通用寄存器編寫的程序段如下程序段如下:
MOVDX,1234HMOVAX,5678HADDAX,0ABCDHADCDX,8765HADDAX,0FEDCHADCDX,2468HMOVWORDPTREQ,AXMOVWORDPTREQ+2,DX用32位通用寄存器編寫的程序段如下:MOVEAX,12345678HADDEAX,8765ABCDHADDEAX,2468FEDCHMOVEQ,EAX
格式:INCdest操作:dest+1→dest
例:MOVBX,1INCBX;BX=0002H該指令不影響CF,對其它標志位的影響同ADDdest,1操作數(shù)只能為REG和MEM,類型要明確。例:INCCL√INC[SI]
×類型不明確→INCBYTEPTR[SI]
INC2000H
×立即數(shù)沒有類型該指令常用于修改偏移地址和計數(shù)次數(shù)(3)增量指令I(lǐng)NC
格式:DECdest
操作:dest-1→dest(1)減法指令SUB
2.減法類指令格式:SUBdest,source操作:dest-source→dest(2)帶借位減指令SBB格式:SBBdest,source操作:dest-source-CF
→dest;CF為前面指令產(chǎn)生的進位(借位)(3)減量指令DEC例:2個32位無符號數(shù)8765ABCDH和2468FEDCH相減,其差放雙字變量EQ中。用16位通用寄存器編寫的程序段如下:MOVAX,0ABCDHSUBAX,0FEDCHMOVDX,8765HSBBDX,2468HMOVWORDPTREQ,AXMOVWORDPTREQ+2,DX用32位通用寄存器編寫的程序段如下:MOVEAX,8765ABCDHSUBEAX,2468FEDCHMOVEQ,EAX
(3)比較指令CMP
格式:CMPdest,source
操作:dest-source執(zhí)行減操作,只影響標志,不改變操作數(shù)主要用來判斷兩數(shù)的大小與是否相等后面常跟條件轉(zhuǎn)移指令,根據(jù)比較結(jié)果實現(xiàn)程序的分支
1.求補指令格式:NEGdest操作:將操作數(shù)中的內(nèi)容求補后再送入操作數(shù)中單操作數(shù)指令,操作數(shù)只能是REG,MEM該指令是求補指令,而不是求補碼指令影響標志,影響規(guī)律同減法指令3.3邏輯運算指令若將執(zhí)行求補指令前后的數(shù)均視為補碼數(shù),則求補指令將該數(shù)變?yōu)榻^對值相等符號相反的另一個數(shù)。例:MOVAX,0FFFBH;AX=FFFBH
NEGAX;AX=0005H例:MOVBX,000AH;BX=000AHNEGBX;BX=FFF6H
格式:NOTdest操作:將操作數(shù)中的內(nèi)容逐位取反后再送回操作數(shù)中注:單操作數(shù)指令,操作數(shù)只能是REG,MEM該指令只是執(zhí)行求反操作,而不是求反碼指令,對符號位也求反
該指令不影響標志位2.求反指令
格式:ANDdest,source操作:dest∧source→dest作用:取出目的操作數(shù)中與源操作數(shù)的“1”對應的位例:MOVAX,0F6E5HANDAX,000FH;AX=0005H3.邏輯與指令
格式:ORdest,source
操作:dest∨source→dest
作用:將目的操作數(shù)和源操作數(shù)中的所有“1”位拼合在一起例:MOVBX,7B00H
ORBX,0056H;BX=7B56H→對應“1”位置1,對應“0”位則不變4.邏輯或指令
格式:XORdest,source
操作:dest⊕source→dest,
作用:將REG清0,也可將目的操作數(shù)中的某些位取反
例:MOVCX,35EBH
XORCX,00FFH;CX=3514H思考:用什么方法可以實現(xiàn)對通用寄存器清0?
XORAX,AXMOVAX,0SUBAX,AXANDAX,0
5.邏輯異或指令AND、OR、XOR指令均為雙操作數(shù)指令,對源操作數(shù)和目的操作數(shù)的要求同加減指令,如下圖所示:AND、OR、XOR三條邏輯指令均將標志位CF和OF清0,對PF、SF、ZF的影響同加操作此類指令常用于拆字、拼字例:將AX的高4位,CX的中間8位,BX的低4位拼合起來,程序段如下:如:AX=1234H,BX=5678H,CX=9ABCH→AX=ACCBHANDAH,0F0H;取AX高4位,AH=10HANDBL,0FH;取BX低4位,BL=08HANDCX,0FF0H;取CX中間8位,CX=0AB0HORCH,AH;拼字CH=1AHORCL,BL;CL=0B8HCX=1AB8H目的操作數(shù)僅可以是REG或MEM源操作數(shù)為移位的次數(shù),只能是CL或立即數(shù)1~31,8086微處理器的立即數(shù)只能是1。
以CL為源操作數(shù)的移位指令執(zhí)行以后,CL的值不變移位指令為雙操作數(shù)指令,用于將目的操作數(shù)中的二進制數(shù)移位3.4移位指令
格式:SHRdest,source操作:;最后移出位移至CF用0填補已空出的位
例:AL=abcdefghSHRAL,1;執(zhí)行后,AL=0abcdefg,CF=h例:AL=abcdefgh,CL=3SHRAL,CL;執(zhí)行后,AL=000abcde,CF=fdestCF01.邏輯右移SHR
格式:SARdest,source操作:;最后移出位移至CF,最高位向右移動同時保持不變例:AL=abcdefghSARAL,1;執(zhí)行后,AL=aabcdefg,CF=hdestCF2.算術(shù)右移SAR注:邏輯右移SHR一位,等于對無符號數(shù)除以2運算
例:MOVAL,0CH;AL=12SHRAL,1;AL=6算術(shù)右移SAR一位,等于對符號數(shù)除以2運算
例:MOVCH,80H;CH=80H→-128SARCH,1;CH=C0H→-64
格式:SHLdest,sourceSALdest,source操作:;最后移出位移至CF用0填補已空出位
例:AL=abcdefghSHLAL,1;執(zhí)行后,AL=bcdefgh0,CF=adestCF03.算術(shù)/邏輯左移SAL/SHL
格式:RORdest,source操作:;右邊移出位移入CF,同時移入左邊空出位例:AL=abcdefghRORAL,1
執(zhí)行后,AL=habcdefg,CF=hdestCF4.循環(huán)右移ROR
格式:ROLdest,source操作:;左邊移出位移入CF,同時移入右邊空出位例:將相鄰字節(jié)變量B1(低地址)和B2中的兩個8位二進制數(shù)交換
MOVCL,8ROLWORDPTRB1,CLdestCF5.循環(huán)左移ROL
格式:RCRdest,source操作:;前面指令產(chǎn)生的CF移至最高位
例:AL=abcdefgh,CF=i,CL=4RCRAL,CL執(zhí)行后,AL=fghiabcd,CF=edestCF6.帶進位循環(huán)右移RCR
格式:RCLdest,source操作:;前面指令產(chǎn)生的CF移至最低位
例:AL=abcdefgh,CF=iRCLAL,1執(zhí)行后,AL=bcdefghi,CF=adestCF7.帶進位循環(huán)左移RCL例1編寫程序段實現(xiàn)將字變量W中的無符號數(shù)除以8,商和余數(shù)分別放入字變量QUOT和字節(jié)變量REMA中思路:用邏輯右移1位的指令,將被除數(shù)按低位到高位的順序1次移1位.每次移入CF中的余數(shù),用帶進位的循環(huán)右移指令移入字節(jié)變量REMA中.3位余數(shù)都移入字節(jié)變量REMA中后再用邏輯右移指令右移5位將3位余數(shù)從D7~D5移至D2~D0.3.4指令應用舉例W DW65525QUOTDW0REMADB0MOVAX,W;AX=1111111111110101BSHRAX,1;AX=0111111111111010B,CF=1RCRREMA,1;REMA=10000000BSHRAX,1;AX=0011111111111101B,CF=0RCRREMA,1;REMA=01000000BSHRAX,1;AX=0001111111111110B,CF=1RCRREMA,1;REMA=10100000BMOVQUOT,AX;QUOT=0001111111111110BMOVCL,5SHRREMA,CL;REMA=00000101B移位過程如下圖所示:
還可以先取出余數(shù),再連續(xù)邏輯右移3位得商:
MOVREMA,7;最低3位的邏輯尺(7)
MOVAX,WANDREMA,AL;取余數(shù)
MOVCL,3SHRAX,CLMOVQUOT,AX使用32位指令編寫的程序段如下:MOVZXEAX,WROREAX,3MOVDWORDPTRQUOT,EAXROLWORDPTRREMA,3思路:(W)×10=(W)×(23+2)=(W)×23+(W)×216位無符號數(shù)乘以2和乘以8分別用左移1位和左移3位實現(xiàn)16位無符號乘以2有可能大于16位無符號數(shù)的最大值65535,因此要將它擴展為32位的無符號數(shù)再乘以2,即用邏輯左移雙字來實現(xiàn)乘以2的操作
例2編寫程序段將字變量W中的無符號數(shù)乘以10,乘積存入變量J2中W DW65525J2DW0,0MOVAX,WXORDX,DX ;DX清0,擴展為32位SHLAX,1 ;乘以2RCLDX,1MOVJ2+2,DX;保存乘以2的結(jié)果MOVJ2,AXSHL,AX,1 ;W中的內(nèi)容乘以4RCLDX,1SHLAX,1 ;W中的內(nèi)容乘以8RCLDX,1ADDJ2,AX ;2(W)+8(W)ADCJ2+2,DX該程序的移位指令的執(zhí)行過程如圖所示:
使用32位指令編寫的程序段如下:W DW65525J2 DD0MOVZXEAX,WSHLEAX,1MOVEDX,EAXSHLEAX,2 ADDEAX,EDXMOVJ2,EAX
例3字變量NUMW中有一無符號數(shù),編寫程序,計算(NUMW)16+30并將結(jié)果送入NUMW+2和NUMW
NUMWDW1234H,0 MOVCL,4ROLNUMW,CL
;將NUMW字單元中的1234H變成2341H
MOVAX,000FH ANDAX,NUMW;取低位字的最低4位AX=0001H
ANDNUMW,0FFF0H;清低位字的最低4位(NUMW)=2340H
ADDNU
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家電業(yè)務員產(chǎn)品介紹總結(jié)
- 媒體工作室行政后勤工作總結(jié)
- 陶瓷制品生產(chǎn)合同三篇
- 資金管理及優(yōu)化總結(jié)
- 設(shè)立圖書角提升閱讀興趣計劃
- 電商平臺前臺服務總結(jié)
- 2023年福建省寧德市公開招聘警務輔助人員輔警筆試自考題2卷含答案
- 大學生村官農(nóng)村村情調(diào)研報告范本
- 《認識臭氧層危機》課件
- 2024年社會人文科學研究服務項目資金申請報告代可行性研究報告
- 勞務派遣服務外包技術(shù)方案
- 采購管理實務全套教學課件
- 極致物業(yè)管理系統(tǒng)收費管理業(yè)務操作
- GB∕T 29639-2020 生產(chǎn)經(jīng)營單位生產(chǎn)安全事故應急預案編制導則
- 貴州省工傷保險待遇申領(lǐng)授權(quán)委托書
- 媒介融合(ppt)課件
- 酒店項目投資分析報告可行性報告
- 液壓系統(tǒng)中油管尺寸的選擇
- 視頻監(jiān)控臺賬參考模板
- 初一初三國家體育鍛煉標準評分表
- F1方程式賽車的空氣動力學
評論
0/150
提交評論