Suppose I have defined a byte in .data called val.
Suppose also that I have a number in register r10, let's say it is 12.
I am trying to get a 2s compliment of the number in the r10 and store it for future use in val.
So I do this:
neg r10
mov [val], r10b
But when I try to use the value in val later (or prod around with a debugger), it gets stored and treated as an unsigned value, so if r10 was -12, val is now 244, which is the unsigned equivalent.
How can I move the register to memory while preserving the sign? Alternatively, how do I set the sign after I move that memory back to a different register?