问题描述
假设我在.data
中定义了一个称为val
的字节。
还要假设我在寄存器r10
中有一个数字,假设它是12
。
我正试图在r10
中取一个2的补码,并将其存储在val
中以备将来使用。
所以我这样做:
neg r10
mov [val],r10b
但是,当我稍后尝试在val
中使用该值(或使用调试器进行测试)时,该值将被存储并视为无符号值,因此,如果r10
为-12,则{{ 1}}现在是244,即无符号等效项。
如何在保存符号的同时将寄存器移到内存中?另外,将内存移回另一个寄存器后,如何设置符号?
解决方法
一个有符号的8位整数,即-12
被存储为244
。当您尝试使用调试器读取该值时,它将把该数字视为无符号字节,并显示244
。如果您告诉调试器将内存视为带符号的字节,它将可以正常工作。