算術運算指令
①加法類指令
②減法類指令
③乘法指令
④除法指令
⑤BCD嗎指令
一、加法類指令
首先我么們先看加法類指令三個(add,adc,inc)
1)不帶進位位的加法指令ADD
add用來執行2個字節或2個字的相加操作,運算時不考慮CF位

ADD DST,SRC ;DST<--(DST)+(SRC)
ADD影響OF,SF,ZF,AF,PF,CF標志
2)帶進位位的加法指令ADC
ADC在功能上和ADD類似,只是有一點區別,即執行ADC指令時,將進位標志CF的值加進和中。
ADC DST,SRC ;DST<--(DST)+(SRC)+CF
ADC指令多用於多字節相加運算,如進行兩個8字節(64位)數據相加,應先用ADD指令將低32位相加,再用ADC指令將高32位相加,此時會把低位字節產生的進位傳遞到高位字節運算中。
ADC影響OF,SF,ZF,AF,PF,CF.標志位
3)增量指令INC
INC指令只有一個操作數,指令執行時,將操作數內容加1,

INC指令影響AF,OF,PF,SF,ZF.
注意:INC指令不影響進位標志CF
二、減法類指令(SUB,SBB,CMP,DEC,NEG)
1)比考慮借位的減法指令SUB
SUB和上面的加法類似,也是不帶借位的減
SUB [BP+2],CL ;將ss段中的BP+2所指的單元中的值減去CL中的值,結果在BP+2所指堆棧單元中
SUB影響的標志位OF,ZF,AF,SF,PF,CF

2)考慮借位的減法指令SBB
和上面的ADC類似,就是SBB在執行減法運算時還要減去CF的值。
SBB AX,2530H ;將AX中的內容減去2530H,並減去進位位CF的值
和上面類似,這里不在重復
3)減量指令DEC
這又和上面的INC類似,就是將操作數減一,同樣不會影響CF,只是執行減一而已。
和上面都一樣,這里不在重復。
4)求補指令NEC
其實我更喜歡叫它求負指令,它就是對給出的操作數求一個負,然后回送,可是機器內部是以補碼的形式存儲的,所以就是求補指令啦。
NEG影響的標志位AF,CF,ZF,PF,SF,OF'
注意:①如果操作數的值為80H、8000H、80000000H,那么執行求補指令會溢出,結果沒有變化,但溢出標志OF置1
②此指令執行時,通常使CF為1,只有當操作數為0時,CF才為0,因為此指令是用0減去某個操作數,所以除非為0,通常都會產生借位。
5)比較指令CMP
cmp也是執行兩個數相減操作,但不送回相減結果,會影響標志位
此指令會影響標志位AF,CF,OF,PF,SF,ZF
那么如果判斷比較結果呢?
答:如果比較的兩個操作數相等的話,ZF = 1,根據ZF就可判斷兩數是否相等
①兩個無符號比較
無符號相減時CF,就是借位標志,如果CF為0,表示無借位,則被減數大,若果,CF為1,則表示有借位,則減數大
②兩個有符號數比較
看符號標志SF,而符號標志SF總是和結果的最高位相同,如果SF為0,表示被減數大,如果SF為1,則表示減數大
轉載來自 http://blog.csdn.net/best_fiends_zxh/article/details/52723765
