?? +?
字號:
匯編語法
[數(shù)據(jù)傳送指令]
一、通用數(shù)據(jù)傳送指令
1、傳送指令 MOV (move)
指令的匯編格式:MOV DST,SRC
指令的基本功能:(DST)<-(SRC) 將原操作數(shù)(字節(jié)或字)傳送到目的地址。
指令支持的尋址方式:目的操作數(shù)和源操作數(shù)不能同時用存儲器尋址方式,這個限制適用于所有指令。
指令的執(zhí)行對標志位的影響:不影響標志位。
指令的特殊要求:目的操作數(shù)DST和源操作數(shù)SRC不允許同時為段寄存器;
目的操作數(shù)DST不能是CS,也不能用立即數(shù)方式。
2、進棧指令 PUSH (push onto the stack)
出棧指令 POP (pop from the stack)
指令的匯編格式:PUSH SRC ;POP DST
指令的基本功能:PUSH指令在程序中常用來暫存某些數(shù)據(jù),而POP指令又可將這些數(shù)據(jù)恢復。
PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)
POP DST (DST)<-((SP));(SP)<-(SP)
指令支持的尋址方式:push 和 pop指令不能不能使用立即數(shù)尋址方式。
指令對標志位的影響:PUSH 和 POP指令都不影響標志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字數(shù)據(jù)后,SP的修改必須是+2 或者 -2;
POP指令的DST不允許是CS寄存器;
3、交換指令 XCHG (exchange)
指令的匯編格式:XCHG OPR1,OPR2
指令的基本功能:(OPR1)<->(OPR2)
指令支持的尋址方式:一個操作數(shù)必須在寄存器中,另一個操作數(shù)可以在寄存器或存儲器中。
指令對標志位的影戲:不影響標志位。
指令的特殊要求:不允許使用段寄存器。
二、累加器專用傳送指令
4、輸入指令 IN (input)
輸出指令 OUT (output)
指令的匯編格式:IN ac,port port<=0FFH
IN ac,DX port>0FFH
OUT port,ac port<=0FFH
OUT DX,ac port>0FFH
指令的基本功能:對8086及其后繼機型的微處理機,所有I/O端口與CPU之間的通信都由輸入輸出指令IN和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)傳送字
指令對標志位的影響:不影響標志位。
指令的特殊要求:只限于在AL或AX與I/O端口之間傳送信息。
傳送16位信息用AX,傳送8位信息用AL,這取決于外設端口的寬度。
5、換碼指令 XLAT (translate)
指令的匯編格式:XLAT opr 或 XLAT
指令的基本功能:這條指令根據(jù)AL寄存器提供的位移量,將BX指使的字節(jié)表格中的代碼換存在AL中。
(AL)<-((DS)*16+(BX)+(AL))
指令對標志位的影響:不影響標志位。
指令的特殊要求:所建字節(jié)表格的長度不能超過256字節(jié),因為存放位移量的是8位寄存器AL。
opr為表格的首地址,因為opr所表示的偏移地址已存入BX寄存器,所以opr在換碼指令中可有可無,有則提高程序的可讀性。
三、地址傳送指令
6、有效地址傳送器 LEA (load effective address)
指令的匯編格式:LEA reg,src
指令的基本功能:LEA指令把源操作數(shù)的有效地址送到指定的寄存器,這個有效地址是由src選定的一種存儲器尋址方式確定的。
指令支持的尋址方式:各種存儲器尋址方式。
指令對標志位的影響:不影響標志位。
指令的特出要求:指令中reg不能是段寄存器;
7、指針送寄存器和DS LDS (load DS with point)
指針送寄存器和ES LES (load ES with point)
指令的匯編格式:LDS reg,src
LES reg,src
指令的基本功能:LDS和LES指令把確定內存單元位置的偏移地址送寄存器,段地址DS或ES。這個偏移地址和段地址(也稱地址指針)是由src指定的兩個相繼字單元提供的。
LDS reg,src (reg)<-(src) (DS)<-(src+2)
LES reg,src (reg)<-(src) (ES)<-(src+2)
指令支持的尋址方式:src必須為存儲器尋址方式
指令對標志位的影響:不影響標志位。
指令的特殊要求:指令中REG不能是段寄存器;
四、標志寄存器傳送指令
8、標志寄存器的低字節(jié)送AH LAHF (load AH with FLAGS)
指令的匯編格式:LAHF
指令的基本功能:(AH)<-(FLAGS)0-7
指令對標志位的影響:不影響標志位
9、AH送標志寄存器低字節(jié) SAHF(store AH into FLAGS)
指令的匯編格式:SAHF
指令的基本功能:(FLAGS)0-7<-(AH)
指令對標志位的影響:由裝入值來確定標志位的值。
10、標志進棧 PUSHF (push the flags)
指令的匯編格式:PUSHF
指令的基本功能:(SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15
指令對標志位的影響:不影響標志位。
11、標志出棧 POPF (pop the FLAGES)
指令的匯編格式:POPF
指令的基本功能:(FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2
指令對標志位的影響:由裝入值來確定標志位的值。
[算術指令]
一、加法指令
12、加法指令 ADD (addition)
指令的匯編格式:add dst,src
指令的基本功能:(dst)<-(src)+(dst)
指令支持的尋址方式:他們兩個操作數(shù)不能同時為存儲器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 加法結果為負數(shù)(符號位為1)
SF=0 加法結果為正數(shù)(符號位為0)
ZF=1 加法結果為零
ZF=0 加法結果不為零
CF=1 最高有效位向高位有進位
CF=0 最高有效位向高位無進位
OF=1 兩個同符號數(shù)相加(正數(shù)+正數(shù) 或 負數(shù)+負數(shù)),結果符號與其相反。
OF=0 兩個不同符號數(shù)相加,或同符號數(shù)相加,結果符號與其相同。
13、帶進為加法指令 ADC (add with carry)
指令的匯編格式:ADD dst,src
指令的基本功能:(dst)<-(src)+(dst)+CF
指令支持的尋址方式:他們兩個操作數(shù)不能同時為存儲器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 加法結果為負數(shù)
SF=0 加法結果為正數(shù)
ZF=1 加法結果為零
ZF=0 加法結果不為零
CF=1 最高有效位向高位有進位
CF=0 最低有效位相高位無進位
OF=1 兩個同符號數(shù)相加,結果符號與其相反,
OF=0 兩個同符號數(shù)相加,或同符號相加,結果符號與其相同
14、加1指令 INC (increament)
指令的匯編格式:INC opr
指令的基本功能:(opr)<-(opr)
指令支持的尋址方式 可以使用除立即數(shù)方式外的任何尋址方式
指令對標志位的影響:SF=1 加法結果為負數(shù)
SF=0 加法結果為正數(shù)
ZF=1 加法結果為零
ZF=0 加法結果不為零
OF=1 兩個同符號數(shù)相加,結果符號與其相反,
OF=0 兩個同符號數(shù)相加,或同符號相加,結果符號與其相同。
二、減法指令
15、減法指令 SUB (subtract)
指令的匯編格式:SUB dst,src
指令的基本功能:(dst)<-(dst)-(src)
指令支持的尋址方式:他們兩個操作數(shù)不能同時為存儲器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(shù)(符號位為1)
SF=0 減法結果為正數(shù)(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號相反(正數(shù)-負數(shù),或負數(shù)-正數(shù)),而結果符號與減數(shù)相同。
OF=0 同符號數(shù)相減時,或不同符號數(shù)相減,其結果符號與減數(shù)不同。
16、帶借位減法指令 SBB (subtract with borrow)
指令的匯編格式:SBB dst,src
指令的基本功能:(dst)<-(dst)-(src)-CF
指令支持的尋址方式:他們兩個操作數(shù)不能同時為存儲器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(shù)(符號位為1)
SF=0 減法結果為正數(shù)(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號相反(正數(shù)-負數(shù),或負數(shù)-正數(shù)),而結果符號與減數(shù)相同。
OF=0 同符號數(shù)相減時,或不同符號數(shù)相減,其結果符號與減數(shù)不同。
17、減1指令 DEC (decrement)
指令的匯編格式:DEC opr
指令的基本功能:(opr)<-(opr)-1
指令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(shù)(符號位為1)
SF=0 減法結果為正數(shù)(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
OF=1 兩數(shù)符號相反(正數(shù)-負數(shù),或負數(shù)-正數(shù)),而結果符號與減數(shù)相同。
OF=0 同符號數(shù)相減時,或不同符號數(shù)相減,其結果符號與減數(shù)不同。
18、比較指令 CMP (compare)
指令的匯編格式:CMP opr1,opr2
指令的基本功能:(opr1)-(opr2),根據(jù)相減結果設置條件碼,但不回送結果。
指令支持的尋址方式:他們兩個操作數(shù)不能同時為存儲器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(shù)(符號位為1)
SF=0 減法結果為正數(shù)(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1 兩數(shù)符號相反(正數(shù)-負數(shù),或負數(shù)-正數(shù)),而結果符號與減數(shù)相同。
OF=0 同符號數(shù)相減時,或不同符號數(shù)相減,其結果符號與減數(shù)不同。
19、求補指令 NEG (negate)
指令的匯編格式:NEG opr
指令的基本功能:(opr)<- -(opr)
指令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對標志位的影響:CF=1 不為0的操作數(shù)求補時
CF=0 為0的操作數(shù)求補時
OF=1 操作數(shù)為-128(字節(jié)運算)或操作數(shù)為-32768(字運算)
OF=0 當求補運算的操作數(shù)不為-128(字節(jié))或-32768(字)時
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -