所以这本书“一步一步的汇编语言”真的很棒,但是在实际的内存和寄存器数据工作时,它的工作原理有点神秘。除此之外,我不确定签名值在内存中是如何表示的,我觉得这可能会让我感到困惑。 anywho ...ASM问题,二进制补码
它说:“-1 = $ FF,-2 = $ FE等等”。现在我明白一个数字的二进制补码本身已经乘以-1,并且当添加到原始数字时会给出0.所以,FF是二进制中的11111111和十进制中的255。所以我的问题是:当它说“-1 = $ FF”时,这本书说什么?这是否意味着-255 + -1会给你0,但它也没有明确地设置OF标志?
所以在实践中...假设我们有11h,十进制为17,二进制为00100001。并且这个值在AL中。 所以然后我们NEG AL,这将设置CF和SF,并将AL中的值更改为十进制中的... 239,二进制中的11101111或EFh?我只是不明白那是17 * -1?还是这本书只是一句措辞不佳的解释,它真的意味着它给了你需要引起溢出的价值?
谢谢!
感谢快速反应的家伙!好吧,我明白了。所以现在我的问题是,这种表示法完成了什么?为什么有一个和两个的补充? – 2011-04-11 23:41:01
补码是常见的,因为它是一种表示有符号数的非常方便的方式。 'x - y == x + -y',一致。我不确定补码是什么,除了在IP中用作校验和(IIRC)。 – cHao 2011-04-12 00:16:37
@zero:我的回忆是二进制补码,通常用于补码,因为它在硬件实现方面稍微简单一些(它在硬件逻辑中需要较少的特殊情况来进行减法或某物)。它还具有只有一个表示为零的优点(补码也具有“负零”)。我能想到的补码唯一的缺点是,你可以得到一个比负数少的正数。例如,有符号字符可以下降到“-128”,但只能上升到“127”。负的零必须去某个地方...... – 2011-04-12 18:15:37