2011年05月20日 星期五 19时59分14秒
1.加法指令add,adc,inc
(1)add dst, src和adc dst, src
dst是目的操作数,src是源操作数。
add指令实现的功能是:将目标操作数和源操作数相加,结果存放在目标操作数中,运算中产生的进位送进位标志位。 即(dst) <-- (dst)+(src)。执行指令后对进位标志CF、辅助进位标志AF、零标志ZF、符号标志SF、溢出标志OF和奇偶标志PF有影响,控制标志不变化。
adc指令实现的功能是:(dst) <-- (dst)+(src)+CF,执行指令后对进位标志CF、辅助进位标志AF、零标志ZF、符号标志SF、溢出标志OF和奇偶标志PF有影响,控制标志不变化。
两条指令中目的操作数和源操作数的有以下几种配对方式:
目标操作数
源操作数
通用寄存器(AX BX CX DX SI DI BP SP) 立即数/内存单元/通用寄存器
内存单元(X ptr 段寄存器:[……]) 立即数/通用寄存器
注:通用寄存器还包括ah,al,bh, bl, ch, cl, dh, dl。X是word或byte
两条指令都需注意:
1-1.操作数类型要匹配,要么都为字类型要么都为字节类型。
1-2.目的操作数dst不能是立即数。
1-3.段寄存器不能作为操作数,并且指针寄存器IP也不能作为操作数。
1-4.两个操作数不能同时为内存单元。
1-5.内存单元作为目的操作数时,必须显式指明指令进行的是字操作还是字节操作,并且当寻址方式为直接寻址时,必须使用段跨越前缀。
2.inc opr
指令实现的功能是将opr加1,即(opr) <-- (opr)+1
注意:
2-1.操作数不能是立即数
2-2.操作数不能是段寄存器或指针寄存器IP
2-3.当操作数是内存单元时必须显式指明指令进行的是字操作还是字节操作,并且当寻址方式为直接寻址时,必须使用段跨越前缀。
2-4.inc指令不影响CF标志位
3.减法指令sub,sbb,dec类比加法相关指令;取补指令neg操作数不能是段寄存器或指针寄存器IP或立即数,并且内存单元作为操作数时,必须显式指明指令进行的是字操作还是字节操作,并且当寻址方式为直接寻址时,必须使用段跨越前缀,另取补指令影响标志位。