3.3.2.2 减法指令

  SUB dst,src 减法指令(subtract
  执行操作: (dst) ← (dst)-(src)

  SBB dst,src 带借位减法指令(subtract with borrow
  执行操作: (dst) ← (dst)-(src)-CF

  DEC opr 减1指令(decrement
  执行操作: (opr) ← (opr)-1

  CMP opr1,opr2 比较指令(compare
  执行操作: (opr1)-(opr2),根据相减结果设置条件码,但不回送结果

  以上指令除DEC指令不影响CF外,其他都影响条件码。与加法类似,SF和ZF分别表示减法结果的符号以及为零的情况;CF表明无符号数相减结果溢出与否;OF表明带符号数相减结果溢出与否。但在对CF和OF位的设置方法上减法和加法有所不同,下面对此做进一步说明:
  CF=1   二进制减法运算中最高有效位向高位有借位(被减数<减数,不够减的情况)
  CF=0   二进制减法运算中最高有效位向高位无借位(被减数≥减数,够减的情况)
  OF=1   两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同
  OF=0   同符号数相减时,或不同符号数相减,其结果符号与减数不同

  NEG opr 求补指令(negate
  执行操作: (opr) ← -(opr),
                        
  求补操作即把操作数变为与其符号相反的数:
  机器在执行求补指令时,把操作数各位求反后末位加1,因此执行的操作也可表示为:
  (opr) ← 0FFFFH-(opr)+1

  NEG指令的条件码设置方法为:
   CF=1  不为0的操作数求补时
   CF=0  为0的操作数求补时
   OF=1  当求补运算的操作数为-128(字节)或-32768(字)时
   OF=0  当求补运算的操作数不为-128(字节)或-32768(字)时