3)加1指令INC(单操作数指令) 格式: INC reg/mem 功能:类似于C语言中的++操作:对指定的 操作数加1 例: INC AL INC SI INC BYTE PTR BX+4 注:本指令不影响CF标志
1 格式:INC reg/mem 功能:类似于C语言中的++操作:对指定的 操作数加1 例: INC AL INC SI INC BYTE PTR[BX+4] 注:本指令不影响CF标志。 3) 加1指令INC(单操作数指令)
ADD/ADC对条件标志位( CF/OF/ZE/SF)的影响: SF=1结果为负 ZF=1结果为0 否则 0否则 CF=1和的最高有效位有向高位的进位 0否则 OF 1两个操作数符号相同,而结果符号与之相反 0否则 CF位表示无符号数相加的溢出。 OF位表示带符号数相加的溢出
2 ADD/ADC对条件标志位(CF/OF/ZF/SF)的影响: CF位表示无符号数相加的溢出。 OF位表示带符号数相加的溢出。 1 结果为负 0 否则 SF= 1 结果为0 0 否则 ZF= 1 和的最高有效位有向高位的进位 0 否则 CF= 1 两个操作数符号相同,而结果符号与之相反 0 否则 OF=
2.减法指令 (1)不考虑借位的减法指令SUB 格式: sub dest,src 操作:dest←(dest)-(src) 注:1.源和目的操作数不能同时为存储器操作数 2.立即数不能作为目的操作数 指令例子: SUB AL, 60H Sub BX+20H, DX SUB AX,CⅩ
3 (1) 不考虑借位的减法指令SUB 格式: SUB dest, src 操作: dest←(dest)-(src) 注:1.源和目的操作数不能同时为存储器操作数 2.立即数不能作为目的操作数 指令例子: SUB AL,60H SUB [BX+20H],DX SUB AX,CX 2. 减法指令
(2)考虑借位的减法指令SBB SB指令主要用于多字节的减法。 格式: sbb dest SrC 操作:dest←(dest)-(src)-(CF) 指令例子: SBB AX, CX SBb WORD PTRSI, 2080H SBB SI, DX
4 SBB指令主要用于多字节的减法。 格式: SBB dest, src 操作: dest←(dest)-(src)-(CF) 指令例子: SBB AX,CX SBB WORD PTR[SI],2080H SBB [SI],DX (2) 考虑借位的减法指令SBB
例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列 实现W<x+y+24-,结果放在W,W+2单元中 MOV AX.X MOV DXX+2 ADD AX, Y ADC DX, Y+2 X+y ADD AX 24 ADC DXO ;x+y+24 SUB AX, Z SBB DX, Z+2 x+y+24-Z MOV W.AX MOW+2,DX;结果存入W,W+2单元
5 例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列 实现wx+y+24-z,结果放在W,W+2单元中。 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入W, W+2单元