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

时间:2010-12-26 16:16:17

标签: assembly x86

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

输入采用十六进制sdword

由于

3 个答案:

答案 0 :(得分:15)

嗯,有两种方法可以做到这一点,最好将数字加载到寄存器中,然后使用NEG指令作为Hans提及,即:NEG EAX将否定eax。另一种方式是XOR EAX,EAX SUB EAX,EDX,其中edx包含您想要否定的数字

答案 1 :(得分:1)

您可以使用该数字的两个补码。即按位后不加一个。

Data Segment
  num dw 00000010B
Data Ends

Code Segment
  Assume cs:code, ds:data

  Begin:
    mov ax, data
    mov ds, ax
    mov es, ax
    mov ax, num
    NOT ax
    add ax, 00000001B

  Exit:
    mov ax, 4c00h
    int 21h
Code Ends
End Begin

答案 2 :(得分:-2)

这是一个在线资源,显示了如何为80x86处理器执行此操作:http://webster.cs.ucr.edu/AoA/DOS/ch01/CH01-2.html