什么是匯編語言
匯編語言(assembly language)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級(jí)語言,亦稱為符號(hào)語言。在匯編語言中,用助記符(Mnemonics)代替機(jī)器指令的操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替指令或操作數(shù)的地址。在不同的設(shè)備中,匯編語言對(duì)應(yīng)著不同的機(jī)器語言指令集,通過匯編過程轉(zhuǎn)換成機(jī)器指令。普遍地說,特定的匯編語言和特定的機(jī)器語言指令集是一一對(duì)應(yīng)的,不同平臺(tái)之間不可直接移植。
許多匯編程序?yàn)槌绦蜷_發(fā)、匯編控制、輔助調(diào)試提供了額外的支持機(jī)制。有的匯編語言編程工具經(jīng)常會(huì)提供宏,它們也被稱為宏匯編器。
匯編語言不像其他大多數(shù)的程序設(shè)計(jì)語言一樣被廣泛用于程序設(shè)計(jì)。在今天的實(shí)際應(yīng)用中,它通常被應(yīng)用在底層,硬件操作和高要求的程序優(yōu)化的場(chǎng)合。驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)和實(shí)時(shí)運(yùn)行程序都需要匯編語言。
數(shù)據(jù)傳輸指令
一、通用數(shù)據(jù)傳送指令
1、傳送指令MOV (move)
指令的匯編格式:MOV DST,SRC
指令的基本功能:(DST)《-(SRC) 將原操作數(shù)(字節(jié)或字)傳送到目的地址。
指令支持的尋址方式:目的操作數(shù)和源操作數(shù)不能同時(shí)用存儲(chǔ)器尋址方式,這個(gè)限制適用于所有指令。
指令的執(zhí)行對(duì)標(biāo)志位的影響:不影響標(biāo)志位。指令的特殊要求:
目的操作數(shù)DST和源操作數(shù)SRC不允許同時(shí)為段寄存器;目的操作數(shù)DST不能是CS,也不能用立即數(shù)方式。
2、進(jìn)棧指令PUSH (push onto the stack)
出棧指令 POP (pop from the stack)
指令的匯編格式:PUSH SRC ;POP DST
指令的基本功能:PUSH指令在程序中常用來暫存某些數(shù)據(jù),而POP指令又可將這些數(shù)據(jù)恢復(fù)。
PUSH SRC (SP)《-(SP)-2 ;(SP)《-(SRC)
POP DST (DST)《-((SP));(SP)《-(SP)
指令支持的尋址方式:push 和 pop指令不能不能使用立即數(shù)尋址方式。
指令對(duì)標(biāo)志位的影響:PUSH 和 POP指令都不影響標(biāo)志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字?jǐn)?shù)據(jù)后,SP的修改必須是+2 或者 -2; POP指令的DST不允許是CS寄存器;
3、交換指令XCHG (exchange)
指令的匯編格式:XCHG OPR1,OPR2
指令的基本功能:(OPR1)《-》(OPR2)
指令支持的尋址方式:一個(gè)操作數(shù)必須在寄存器中,另一個(gè)操作數(shù)可以在寄存器或存儲(chǔ)器中。
指令對(duì)標(biāo)志位的影戲:不影響標(biāo)志位。
指令的特殊要求:不允許使用段寄存器。
二、累加器專用傳送指令
4、輸入指令I(lǐng)N (input)
輸出指令 OUT (output)
指令的匯編格式:IN ac,port port《=0FFH
IN ac,DX port》0FFH
OUT port,ac port《=0FFH
OUT DX,ac port》0FFH
指令的基本功能:對(duì)8086及其后繼機(jī)型的微處理機(jī),所有I/O端口與CPU之間的通信都由輸入輸出指令I(lǐng)N和OUT來完成。IN指令將信息從I/O輸入到CPU,OUT指令將信息從CPU輸出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。
IN ac,port port《=0FFH (AL)《-(port)傳送字節(jié)或 (AX)《-(port+1,port)傳送字
IN ac,DX port》0FFH (AL)《-((DX))傳送字節(jié)或 (AX)《-((DX)+1,(DX))傳送字
OUT port,ac port《=0FFH (port)《-(AL)傳送字節(jié)或 (port+1,port)《-(AX)傳送字
OUT DX,ac port》0FFH (DX)《-(AL)傳送字節(jié)或 ((DX)+1,(DX))《-(AX)傳送字指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:只限于在AL或AX與I/O端口之間傳送信息。傳送16位信息用AX,傳送8位信息用AL,這取決于外設(shè)端口的寬度。
5、換碼指令XLAT (translate)
指令的匯編格式:XLAT opr 或 XLAT
指令的基本功能:這條指令根據(jù)AL寄存器提供的位移量,將BX指使的字節(jié)表格中的代碼換存在
AL中。 (AL)《-((DS)*16+(BX)+(AL))
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:所建字節(jié)表格的長(zhǎng)度不能超過256字節(jié),因?yàn)榇娣盼灰屏康氖?位寄存器AL。opr為表格的首地址,因?yàn)閛pr所表示的偏移地址已存入BX寄存器,所以opr在換碼指令中可有可無,有則提高程序的可讀性。
三、地址傳送指令
6、有效地址傳送器LEA (load effective address)
指令的匯編格式:LEA reg,src
指令的基本功能:LEA指令把源操作數(shù)的有效地址送到指定的寄存器,這個(gè)有效地址是由src選定的一種存儲(chǔ)器尋址方式確定的。
指令支持的尋址方式:各種存儲(chǔ)器尋址方式。
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特出要求:指令中reg不能是段寄存器;
7、指針?biāo)图拇嫫骱虳S LDS (load DS with point)
指針?biāo)图拇嫫骱虴S LES (load ES with point)
指令的匯編格式:LDS reg,src LES reg,src
指令的基本功能:LDS和LES指令把確定內(nèi)存單元位置的偏移地址送寄存器,段地址DS或ES。這個(gè)偏移地址和段地址(也稱地址指針)是由src指定的兩個(gè)相繼字單元提供的。
LDS reg,src (reg)《-(src) (DS)《-(src+2)
LES reg,src (reg)《-(src) (ES)《-(src+2)
指令支持的尋址方式:src必須為存儲(chǔ)器尋址方式
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:指令中REG不能是段寄存器;
四、標(biāo)志寄存器傳送指令
8、標(biāo)志寄存器的低字節(jié)送AH LAHF (load AH with FLAGS)
指令的匯編格式:LAHF
指令的基本功能:(AH)《-(FLAGS)0-7
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位
9、AH送標(biāo)志寄存器低字節(jié) SAHF(store AH into FLAGS)
指令的格式:SAHF
指令的基本功能:(FLAGS)0-7《-(AH)
指令對(duì)標(biāo)志位的影響:由裝入值來確定標(biāo)志位的值。
10、標(biāo)志進(jìn)棧 PUSHF (push the flags)
指令的匯編格式:PUSHF
指令的基本功能:(SP)《-(SP)-2 ((SP)+1,(SP))《-(FLAGS)0-15
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
11、標(biāo)志出棧 POPF (pop the FLAGES)
指令的匯編格式:POPF
指令的基本功能:(FLAGS)0-15《-((SP)+1,(SP)) (SP)《-(SP)+2
指令對(duì)標(biāo)志位的影響:由裝入值來確定標(biāo)志位的值。
算術(shù)指令
一、加法指令
12、加法指令A(yù)DD (addition)
指令的匯編格式:add dst,src
指令的基本功能:(dst)《-(src)+(dst)
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1 加法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 加法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 加法結(jié)果為零
ZF=0 加法結(jié)果不為零
CF=1 最高有效位向高位有進(jìn)位
CF=0 最高有效位向高位無進(jìn)位
OF=1 兩個(gè)同符號(hào)數(shù)相加(正數(shù)+正數(shù)或負(fù)數(shù)+負(fù)數(shù)),結(jié)果符號(hào)與其相反。
OF=0 兩個(gè)不同符號(hào)數(shù)相加,或同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相同。
13、帶進(jìn)為加法指令ADC (add with carry)
指令的匯編格式:ADD dst,src
指令的基本功能:(dst)《-(src)+(dst)+CF
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1 加法結(jié)果為負(fù)數(shù)
SF=0 加法結(jié)果為正數(shù)
ZF=1 加法結(jié)果為零
ZF=0 加法結(jié)果不為零
CF=1 最高有效位向高位有進(jìn)位
CF=0 最低有效位相高位無進(jìn)位
OF=1 兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相反,
OF=0 兩個(gè)同符號(hào)數(shù)相加,或同符號(hào)相加,結(jié)果符號(hào)與其相同
14、加1指令I(lǐng)NC (increament)
指令的匯編格式:INC opr
指令的基本功能:(opr)《-(opr)
指令支持的尋址方式可以使用除立即數(shù)方式外的任何尋址方式
指令對(duì)標(biāo)志位的影響:SF=1 加法結(jié)果為負(fù)數(shù)
SF=0 加法結(jié)果為正數(shù)
ZF=1 加法結(jié)果為零
ZF=0 加法結(jié)果不為零
OF=1 兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相反,
OF=0 兩個(gè)同符號(hào)數(shù)相加,或同符號(hào)相加,結(jié)果符號(hào)與其相同。
二、減法指令
15、減法指令SUB (subtract)
指令的匯編格式:SUB dst,src
指令的基本功能:(dst)《-(dst)-(src)
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1 減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 減法結(jié)果為零
ZF=0 減法結(jié)果不為零
CF=1 二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進(jìn)制減法運(yùn)算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0 同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。
16、帶借位減法指令SBB (subtract with borrow)
指令的匯編格式:SBB dst,src
指令的基本功能:(dst)《-(dst)-(src)-CF
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1 減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 減法結(jié)果為零
ZF=0 減法結(jié)果不為零
CF=1 二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進(jìn)制減法運(yùn)算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0 同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。
17、減1指令DEC (decrement)
指令的匯編格式:DEC opr
指令的基本功能:(opr)《-(opr)-1
指令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1 減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 減法結(jié)果為零
ZF=0 減法結(jié)果不為零
OF=1 兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0 同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。
18、比較指令CMP (compare)
指令的匯編格式:CMP opr1,opr2
指令的基本功能:(opr1)-(opr2),根據(jù)相減結(jié)果設(shè)置條件碼,但不回送結(jié)果。
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:
SF=1 減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 減法結(jié)果為零
ZF=0 減法結(jié)果不為零
CF=1 二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進(jìn)制減法運(yùn)算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0 同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。
19、求補(bǔ)指令NEG (negate)
指令的匯編格式:NEG opr
指令的基本功能:(opr)《- -(opr)
指令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對(duì)標(biāo)志位的影響:CF=1 不為0的操作數(shù)求補(bǔ)時(shí)
CF=0 為0的操作數(shù)求補(bǔ)時(shí)
OF=1 操作數(shù)為-128(字節(jié)運(yùn)算)或操作數(shù)為-32768(字運(yùn)算)
OF=0 當(dāng)求補(bǔ)運(yùn)算的操作數(shù)不為-128(字節(jié))或-32768(字)時(shí)三、乘法指令
20、無符號(hào)乘法指令NUL (unsigned multiple)
有符號(hào)乘法指令 IMUL(signed muliple)
指令的匯編格式:NUL src IMUL src
指令的基本功能:(AX)《-(AL)*(src) (DX,AX)《-(AX)*(src)
指令支持的尋址方式:src可以使用除立即數(shù)方式以外的任一種尋址方式。
指令對(duì)標(biāo)志位的影響:乘法指令只影響標(biāo)志位CF和OF,其他條件碼位無定義。MUL指令的條件碼設(shè)置為:
CF OF=0 0 乘積的高一半為0(字節(jié)操作的(AH)或字操作的(DX))
CF OF=1 1 乘積的高一半不為0
IMUL指令的條件碼設(shè)置為:
CF OF=0 0 乘積的高一半為低一半的符號(hào)擴(kuò)展。
CF OF=1 1 其他情況
指令的特殊要求:MUL和IMUL指令的區(qū)別僅在于操作數(shù)是無符號(hào)還是帶符號(hào)數(shù),它們的共同點(diǎn)是,指令中只給出源操作數(shù)src,目的操作數(shù)是隱含的,它只能是累加器(字運(yùn)算為AX,字節(jié)運(yùn)算為AL)。隱含的乘積寄存器是AX或DX(高位)和AX(低位)。
四、符號(hào)擴(kuò)展指令
21、節(jié)擴(kuò)展為字CBW (convert byte to word)
指令的匯編格式:CBW
指令的基本功能:(AH)=00H 當(dāng)(AL)的最高有效位為0時(shí)
?。ˋH)=FFH 當(dāng)(AL)的最高有效位為1時(shí)
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位
指令的特殊要求:這是條無操作數(shù)的指令,進(jìn)行符號(hào)擴(kuò)展的操作數(shù)必須存放在AL寄存器 AX寄存器中。
22、字?jǐn)U展為雙字CWD (convert word to double word)
指令的匯編格式:CWD
指令的基本功能:(DX)=0000H 當(dāng)(AX)的最高有效位為0時(shí)
?。―X)=FFFFH 當(dāng)(AX)的最高有效位為1時(shí)
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位
指令的特殊要求:這是條無操作數(shù)的指令,進(jìn)行符號(hào)擴(kuò)展的操作數(shù)必須存放在AL寄存器或AX寄存器中。
五、除法指令23、無符號(hào)數(shù)除法DIV (unsigned divide)
帶符號(hào)數(shù)除法 IDIV (singed divide)
指令的匯編格式:DIV src IDIV src
指令的基本功能:字操作
?。ˋL)《-(AX)/src的商 (AH)《-(AX)/src的余數(shù)字節(jié)操作
?。ˋX)《-(DX,AX)/src的商 (DX)《-(DX,AX)/src的余數(shù)
指令支持的尋址方式:src作為除數(shù),可用除立即數(shù)以外的任一種尋址方式來取得。
指令對(duì)標(biāo)志位的影響:不影響條件碼。
指令的特殊要求:除法指令要求字操作時(shí),被除數(shù)必須為32位,除數(shù)是16位,商和余數(shù)是16位的;字節(jié)操作時(shí),被除數(shù)必須為16位,除數(shù)是8位,得到的商和余數(shù)是8位的。
六、十進(jìn)制調(diào)整指令
邏輯指令
一、邏輯運(yùn)算指令的格式:AND dst,src
指令的基本功能:(dst)《-(dst)與(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:指令執(zhí)行后CF 和OF 置零,AF無定義。
SF=1 指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 指令執(zhí)行后的結(jié)果為零
ZF=0 指令執(zhí)行后的結(jié)果不為零
PF=1 結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0 結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0
25、邏輯或OR (logic or)
指令的匯編格式:OR dst,src
指令的基本功能:(dst)《-(dst)或(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,原操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF 和OF 置零,AF無定義。
SF=1 指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 指令執(zhí)行后的結(jié)果為零
ZF=0 指令執(zhí)行后的結(jié)果不為零
PF=1 結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0 結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0
26、邏輯非NOT (logic not)
指令的匯編格式:NOT orc
指令的基本功能:(dst)《-(opr)
指令支持的尋址方式:除立即數(shù)尋址方式以外的其余尋址方式
指令對(duì)標(biāo)志位的影響:對(duì)標(biāo)志位無影響
27、異或XOR (exclusice or)
指令的匯編格式:XOR dst,src
指令的基本功能:(dst)《-(dst)異或(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,原操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF 和OF 置零,AF無定義。
SF=1 指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 指令執(zhí)行后的結(jié)果為零
ZF=0 指令執(zhí)行后的結(jié)果不為零
PF=1 結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0 結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0
28、測(cè)試指令TEST
指令的匯編格式:TEST opr1,opr2
指令的基本功能:(opr1)與(opr2)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址,即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF 和OF 置零,AF無定義。
SF=1 指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0 指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1 指令執(zhí)行后的結(jié)果為零
ZF=0 指令執(zhí)行后的結(jié)果不為零
PF=1 結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0 結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0
二、移位指令
29、邏輯左移SHL (shift logical left)
指令的匯編格式:SHL dst,cnt
指令的基本功能:SHL指令向左逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最低位用0來補(bǔ)充,最高位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1 當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0 當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置
30、邏輯右移SHR (shift logical right)
指令的匯編格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最高位用0來補(bǔ)充,最低位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1 當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0 當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。
31、算術(shù)左移SAL (shift arithmetic left)
指令的匯編格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最低位用0來補(bǔ)充,最高位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1 當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0 當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。
32、算術(shù)右移SAR (shift arithmetic right)
指令的匯編格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最高位用符號(hào)位來補(bǔ)充,最低位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1 當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0 當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。
33、循環(huán)左移ROL (rotate left)
指令的匯編格式:ROL dst,cnt
指令的基本功能:ROL 對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù)左移循環(huán)移動(dòng)cnt所指定的次數(shù),每左移一次,把最高位同時(shí)移入CF和操作數(shù)最低位。指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1 當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0 當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。
34、循環(huán)右移ROR (rotate right)
指令的匯編格式:ROR dst,cnt
指令的基本功能:ROR 對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù)右移循環(huán)移動(dòng)cnt所指定的次數(shù),每右移一次,把最低位同時(shí)移入CF和操作數(shù)最高位。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫在指令中,cnt》1時(shí),cnt必須放入CL寄存器中。
評(píng)論
查看更多