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