包括普通加法ADD,带进位加法ADC,+1指令INC。
加法调整指令十进制调整指令DAA,ascii调整指令AAA。段寄存器不参与加减乘除。
1.1ADD
eg:ADD CL,10;寄存器加立即数。
目标操作数和源操作数不能同时是存储器。操作对象时字节或者字
带符号数产生溢出时,OF标志位为1.无符号数最高位产生进位时,CF标志位置为1.
1.2 ADC
eg:ADC dest,src;(dest)<--(dest)+(src)+(CF)
多用于多字节数据的加法运算,低字节产生进位时,在高字节相加时应该加上此进位。
P65例题
1.3 INC
INC dest;(dest)<--(dest)+1
自增1.不影响进位标志CF。常用于循环程序中修改地址。
1.4 AAA
加法ASCII调整指令。不写操作数,实际操作AL和AH。
eg:7+8=?
MOV AX,0007H
MOV BL,08H;
ADD,AL,BL
AAA; (AL)=05H,(AH)=01H,(CF)=(AF)=1
如果AL的低4位大于9或AF=1,则AL的内容加06H,AH的内容加1,AF置1,CF置1,AL高四位置零;
否则AL高四位置零。
操作的不压缩BCD,得到也是不压缩BCD码,个位在AL,十位在AH。
P68例题
1.5 DAA
加法的十进制调整指令,实际操作寄存器AL。针对压缩BCD码,不改变AH的内容,只调整AL。
eg:68+59=?
MOV AL,68H
MOV BL,59H
ADD AL,BL
DAA
如果AL的低4位大于9或AF=1,则AL的内容加06H,并将AF置1;
如果AL的高4位大于9或CF=1,则AL的内容加60H,且将CF置1。如果两个都不满足,则将AF,CF清零。
此处的AAA和DAA一定要多理解一下例题。
接下来更新减法