所以這本書「一步一步的彙編語言」真的很棒,但是在實際的內存和寄存器數據工作時,它的工作原理有點神祕。除此之外,我不確定簽名值在內存中是如何表示的,我覺得這可能會讓我感到困惑。 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