算術指令
一、加法指令
12、加法指令ADD (addition)
指令的匯編格式:add dst,src
指令的基本功能:(dst)《-(src)+(dst)
指令支持的尋址方式:他們兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 加法結果為負數(符號位為1)
SF=0 加法結果為正數(符號位為0)
ZF=1 加法結果為零
ZF=0 加法結果不為零
CF=1 最高有效位向高位有進位
CF=0 最高有效位向高位無進位
OF=1 兩個同符號數相加(正數+正數或負數+負數),結果符號與其相反。
OF=0 兩個不同符號數相加,或同符號數相加,結果符號與其相同。
13、帶進為加法指令ADC (add with carry)
指令的匯編格式:ADD dst,src
指令的基本功能:(dst)《-(src)+(dst)+CF
指令支持的尋址方式:他們兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 加法結果為負數
SF=0 加法結果為正數
ZF=1 加法結果為零
ZF=0 加法結果不為零
CF=1 最高有效位向高位有進位
CF=0 最低有效位相高位無進位
OF=1 兩個同符號數相加,結果符號與其相反,
OF=0 兩個同符號數相加,或同符號相加,結果符號與其相同
14、加1指令INC (increament)
指令的匯編格式:INC opr
指令的基本功能:(opr)《-(opr)
指令支持的尋址方式可以使用除立即數方式外的任何尋址方式
指令對標志位的影響:SF=1 加法結果為負數
SF=0 加法結果為正數
ZF=1 加法結果為零
ZF=0 加法結果不為零
OF=1 兩個同符號數相加,結果符號與其相反,
OF=0 兩個同符號數相加,或同符號相加,結果符號與其相同。
二、減法指令
15、減法指令SUB (subtract)
指令的匯編格式:SUB dst,src
指令的基本功能:(dst)《-(dst)-(src)
指令支持的尋址方式:他們兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(符號位為1)
SF=0 減法結果為正數(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數小于減數,不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數〉=減數,夠減的情況)
OF=1 兩數符號相反(正數-負數,或負數-正數),而結果符號與減數相同。
OF=0 同符號數相減時,或不同符號數相減,其結果符號與減數不同。
16、帶借位減法指令SBB (subtract with borrow)
指令的匯編格式:SBB dst,src
指令的基本功能:(dst)《-(dst)-(src)-CF
指令支持的尋址方式:他們兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(符號位為1)
SF=0 減法結果為正數(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數小于減數,不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數〉=減數,夠減的情況)
OF=1 兩數符號相反(正數-負數,或負數-正數),而結果符號與減數相同。
OF=0 同符號數相減時,或不同符號數相減,其結果符號與減數不同。
17、減1指令DEC (decrement)
指令的匯編格式:DEC opr
指令的基本功能:(opr)《-(opr)-1
指令支持的尋址方式:可以使用除立即數方式外的任何尋址方式。
指令對標志位的影響:SF=1 減法結果為負數(符號位為1)
SF=0 減法結果為正數(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
OF=1 兩數符號相反(正數-負數,或負數-正數),而結果符號與減數相同。
OF=0 同符號數相減時,或不同符號數相減,其結果符號與減數不同。
18、比較指令CMP (compare)
指令的匯編格式:CMP opr1,opr2
指令的基本功能:(opr1)-(opr2),根據相減結果設置條件碼,但不回送結果。
指令支持的尋址方式:他們兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:
SF=1 減法結果為負數(符號位為1)
SF=0 減法結果為正數(符號位為0)
ZF=1 減法結果為零
ZF=0 減法結果不為零
CF=1 二進制減法運算中最高有效位向高位有借位(被減數小于減數,不夠減的情況)
CF=0 二進制減法運算中最高有效為向高位無借位(被減數〉=減數,夠減的情況)
OF=1 兩數符號相反(正數-負數,或負數-正數),而結果符號與減數相同。
OF=0 同符號數相減時,或不同符號數相減,其結果符號與減數不同。
19、求補指令NEG (negate)
指令的匯編格式:NEG opr
指令的基本功能:(opr)《- -(opr)
指令支持的尋址方式:可以使用除立即數方式外的任何尋址方式。
指令對標志位的影響:CF=1 不為0的操作數求補時
CF=0 為0的操作數求補時
OF=1 操作數為-128(字節運算)或操作數為-32768(字運算)
OF=0 當求補運算的操作數不為-128(字節)或-32768(字)時三、乘法指令
20、無符號乘法指令NUL (unsigned multiple)
有符號乘法指令 IMUL(signed muliple)
指令的匯編格式:NUL src IMUL src
指令的基本功能:(AX)《-(AL)*(src) (DX,AX)《-(AX)*(src)
指令支持的尋址方式:src可以使用除立即數方式以外的任一種尋址方式。
指令對標志位的影響:乘法指令只影響標志位CF和OF,其他條件碼位無定義。MUL指令的條件碼設置為:
CF OF=0 0 乘積的高一半為0(字節操作的(AH)或字操作的(DX))
CF OF=1 1 乘積的高一半不為0
IMUL指令的條件碼設置為:
CF OF=0 0 乘積的高一半為低一半的符號擴展。
CF OF=1 1 其他情況
指令的特殊要求:MUL和IMUL指令的區別僅在于操作數是無符號還是帶符號數,它們的共同點是,指令中只給出源操作數src,目的操作數是隱含的,它只能是累加器(字運算為AX,字節運算為AL)。隱含的乘積寄存器是AX或DX(高位)和AX(低位)。
四、符號擴展指令
21、節擴展為字CBW (convert byte to word)
指令的匯編格式:CBW
指令的基本功能:(AH)=00H 當(AL)的最高有效位為0時
(AH)=FFH 當(AL)的最高有效位為1時
指令對標志位的影響:不影響標志位
指令的特殊要求:這是條無操作數的指令,進行符號擴展的操作數必須存放在AL寄存器 AX寄存器中。
22、字擴展為雙字CWD (convert word to double word)
指令的匯編格式:CWD
指令的基本功能:(DX)=0000H 當(AX)的最高有效位為0時
(DX)=FFFFH 當(AX)的最高有效位為1時
指令對標志位的影響:不影響標志位
指令的特殊要求:這是條無操作數的指令,進行符號擴展的操作數必須存放在AL寄存器或AX寄存器中。
五、除法指令23、無符號數除法DIV (unsigned divide)
帶符號數除法 IDIV (singed divide)
指令的匯編格式:DIV src IDIV src
指令的基本功能:字操作
(AL)《-(AX)/src的商 (AH)《-(AX)/src的余數字節操作
(AX)《-(DX,AX)/src的商 (DX)《-(DX,AX)/src的余數
指令支持的尋址方式:src作為除數,可用除立即數以外的任一種尋址方式來取得。
指令對標志位的影響:不影響條件碼。
指令的特殊要求:除法指令要求字操作時,被除數必須為32位,除數是16位,商和余數是16位的;字節操作時,被除數必須為16位,除數是8位,得到的商和余數是8位的。
六、十進制調整指令
評論
查看更多