加法指令

加法指令

加法指令(Addition),使用助記符ADD,常用的加法指令包括不帶進位加法指令、帶進位加法指令、增量指令和十進制調整指令。

簡介

算術運算類指令用來執行二進制及十進制的算術運算:加、減、乘、除。這類指令會根據運算結果影響狀態標誌,有時要利用這些標誌才能得到正確的結果。因而使用它們時須留心有關狀態標誌。

加法指令add

•一般格式:

•add dst,src

•指令與指令代碼

•指令 指令代碼

•ADD A, Rn O0101rrr

•ADD A, direct 00100101 direct

•ADD A, @Ri O010011i

•ADD A, #data 00100100 data

•功能:dst—dst+src,完成兩個運算元相加,結果送至目的運算元dst,源運算元不變。

•對運算元的要求:兩個運算元不能同時為存儲器定址方式。

•目的運算元:8位、16位或32位的暫存器、存儲器運算元。

•源運算元:與目的運算元類型相同的暫存器、存儲器或立即數運算元。

•如指令:

•add al,90h

•源運算元的定址方式:有暫存器定址、直接定址、暫存器間接定址、立即定址。

•對標誌位的影響

•加法運算對程式狀態字暫存器PSW的各標誌位有一定的影響。

•①如果位7有進位輸出,則CY =1,否則CY =0;

•②如果位3有進位輸出,則AC =1,否則AC =0;

•③溢出標誌位OV= C6①C7,如果位6有進位輸出而位7沒有或者位7有進位輸出而位6沒有,則OV =1,否則OV =0;

•④P標誌位始終跟蹤累加器Acc內1的個數,如果A中有奇數個1,則P=l。

源運算元為立即數定址,目的運算元為暫存器定址。兩個數相加後結果存放在目的運算元。假設指令執行前(a1)一82h,指令執行後(a1)一12h(82h+90h的結果),加的結果影響標誌,使得進位標誌CF一1(最高位有進位);溢出標誌OF一1(結果的符號位變化了);零標誌ZF:0(結果不為o);符號標誌SF=0(結果的符號位為0);輔助進位標誌AF一0(低4位沒有進位);奇偶標誌PF=1(結果的“1”的個數為偶數)。

下面的指令都是正確的指令:

add bx,[3000hi ; bx暫存器與有效地址為3000h單元內容相加

add di,cx ;di暫存器與CX暫存器的內容相加

add dx,[bx十sij;dx暫存器與存儲單元內容相加

add[si],dx ; 存儲器運算元與暫存器dX相加

add eax,Eesi] ; 存儲器運算元與暫存器eax相加

這些指令的運行結果都對標誌CF、OF、PF、SF、ZF和AF產生影響。

帶進位加法指令adc

•一般格式:

•adc dst,src

•指令與指令代碼

•指令 指令代碼

•ADDC A, Rn OOlllrrr

•ADDC A, direct 00110101 direct

•ADDC A, @Ri OOl1011i

•ADDC A, #data 00110100 data

•功能:dst·-dst+src+CF

•adc指令除完成add加法指令運算外,還要加進位標誌CF,其用法及對狀態標誌位的影響也與add指令一樣。adc指令主要用於與add指令相結合實現多位元組數相加。對運算元的要求也與add指令一樣。

•對PSW的影響

•如果位7有進位輸出,則進位標誌位CY為l,否則CY為0;如果位3有進位輸出,則標誌位AC =1,否則AC =0;如果位6有進位輸出而位7沒有或者位7有進位輸出而位6沒有,則溢出標誌位OV =1,否則OV =0。

•定址方式

•與ADD指令相同。

增量指令inc

•一般格式:

•指令與指令代碼

•指令 指令代碼

•INC A 00000100

•INC Rn OOOOlrrr

•INC direct 00000101 direct

•INC@Ri OOOOOlli

•INC DPTR 1010001 1

•功能:oprd——oprdq-1

•inc指令對運算元oprd加1(增量),它是一個單運算元指令。運算元可以是暫存器或存儲器。

•例如:

•inc cx ; 計數器cx內容加1

•inc byte ptr [bx] ; 存儲單元的內容加1

•inc ecx ; 計數器ecx內容加1

•由於增量指令主要用於對計數器和地址指針的調整,所以它不影響進位標誌CF,對其他狀態標誌位的影響與add、ado指令一樣。

•對標誌位影響

•若原來為OFFH,加1後將溢出為OOH,對Acc的操作可能影響P,但不影響任何標誌位。

•定址方式

•有直接定址、暫存定址、暫存器間接定址。

十進制調整指令

•指令與指令代碼

•指令 指令代碼

•DA A 11010100

•功能

•若該指令的上一條指令是加法指令,加數和被加數為十進制BCD碼,相加結果不是十進制的BCD碼,則必須將結果調整為BCD碼,該指令自動選擇調整值OOH、06H、60H、66H,將結果調整為十進制BCD碼。

相關詞條

熱門詞條

聯絡我們