如何在汇编中将正数转换为负数

alo*_*onp 6 x86 assembly

我想在汇编中将正数转换为负数,我需要一个代码示例

输入采用十六进制sdword

谢谢

Nec*_*lis 15

好吧,有两种方法可以做到这一点,最好是将数字加载到寄存器中,然后使用NEG汉斯提到的指令,即:NEG EAX否定eax.另一种方式是XOR EAX,EAX SUB EAX,EDXedx包含你想要否定的数字

  • @ user1720897:`XOR EAX,EAX`是一个依赖性破解成语(参见intel优化指南),这意味着CPU可以使用寄存器重命名来加快速度.它也是一个较小的编码,这有助于i-cache压力和指令获取和解码.TBH,在这种情况下没有任何区别,它只是我的习惯(但不是坏习惯). (5认同)
  • 除了“XOR EAX,EAX”,为什么不只是“MOV EAX, 0h”? (2认同)