我想在汇编中将正数转换为负数, 我需要一个代码示例
输入采用十六进制sdword
由于
答案 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