減法指令SUB(Subtract Binary Values Instruction)
指令的格式:SUB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是從目的操作數中減去源操作數。
帶借位減SBB(Subtract with Borrow Instruction)
指令的格式:SBB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是把源操作數和標志位CF的值從目的操作數中一起減去。
減1指令DEC(Decrement by 1 Instruction)
指令的格式:DEC Reg/Mem
受影響的標志位:AF、OF、PF、SF和ZF,不影響CF
指令的功能是把操作數的值減去1。
求補指令NEG(Negate Instruction)
指令的格式:NEG Reg/Mem
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能:操作數=0-操作數,即改變操作數的正負號。
例5.4 已知有二個32位數d1和d2,編寫程序片段從d1中減去d2的值。
解:
方法1:用16位寄存器編寫程序
MOVAX, word ptr d1;取低字
MOVDX, word ptr d1+2;取高字,(DX,AX)構成一個32位數據
SUBAX, word ptr d2;低字相減
SBBDX, word ptr d2+2;高字相減。在低字相減時,有可能會產生“借位”
MOVword ptr d1, AX;低字送給d1的低字
MOVword ptr d1+2, DX;高字送給d1的高字
方法2:用32位寄存器編寫程序
MOVEAX, d1
SUBEAX, d2
MOVd1, EAX
下面是學習和掌握減法類指令的控件,可模擬執(zhí)行SUB、SBB、DEC、NEG、CLC、STC和CMC等指令。
指令的格式:SUB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是從目的操作數中減去源操作數。
帶借位減SBB(Subtract with Borrow Instruction)
指令的格式:SBB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是把源操作數和標志位CF的值從目的操作數中一起減去。
減1指令DEC(Decrement by 1 Instruction)
指令的格式:DEC Reg/Mem
受影響的標志位:AF、OF、PF、SF和ZF,不影響CF
指令的功能是把操作數的值減去1。
求補指令NEG(Negate Instruction)
指令的格式:NEG Reg/Mem
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能:操作數=0-操作數,即改變操作數的正負號。
例5.4 已知有二個32位數d1和d2,編寫程序片段從d1中減去d2的值。
解:
方法1:用16位寄存器編寫程序
MOVAX, word ptr d1;取低字
MOVDX, word ptr d1+2;取高字,(DX,AX)構成一個32位數據
SUBAX, word ptr d2;低字相減
SBBDX, word ptr d2+2;高字相減。在低字相減時,有可能會產生“借位”
MOVword ptr d1, AX;低字送給d1的低字
MOVword ptr d1+2, DX;高字送給d1的高字
方法2:用32位寄存器編寫程序
MOVEAX, d1
SUBEAX, d2
MOVd1, EAX
下面是學習和掌握減法類指令的控件,可模擬執(zhí)行SUB、SBB、DEC、NEG、CLC、STC和CMC等指令。