2014-01-26 166 views
0

我是一名機械工程師,目前我正在學習ARM處理器。我剛剛遇到了一個問題,但我不明白他們如何能夠得出這些答案。需要幫助理解。另外請幫助如何從負十進制轉換爲十六進制。謝謝。需要幫助理解ARM處理器

在ARM中執行以下計算的結果是什麼? 如何設置狀態標誌? (寫操作數和結果在32位 十六進制符號!)

  1. (-1)+(1)
  2. (0) - (1)
  3. (2^31 - 1)+(1)
  4. (-4)+(5)

的答案是:

  1. (-1)+(+ 1):

    -1: 0xFFFFFFFF 
    1: 0x00000001 
    ---------------- 
    0: 0x00000000 
    N=0, Z=1, C=1, V=0 
    
  2. (0) - (+ 1):減法通過添加和替換否定=>(0)+( - 1)

    0: 0x00000000 
    -1: 0xFFFFFFFF 
    ---------------- 
    0: 0xFFFFFFFF 
    N=1, Z=0, C=0, V=0 
    
  3. (2^31-1)+(+ 1):

    : 0x7FFFFFFF 
    1: 0x00000001 
    ---------------- 
    0: 0x80000000 
    N=1, Z=0, C=0, V=1 
    
  4. (-4)+(+ 5):

    -4: 0xFFFFFFFC 
    5: 0x00000005 
    ---------------- 
    1: 0x00000001 
    N=0, Z=0, C=1, V=0 
    
+1

這是一個相當廣泛的問題。你能對你不明白的事情做出非常具體的描述嗎?要將十進制轉換爲負值,首先將十進制轉換爲正值,反轉位,向LSB中加1。 – 2014-01-26 02:28:37

+0

[標誌的含義](http://infocenter.arm.com/help/topic/com.arm.doc.dui0473h/Chdijedg.html),[二的補充表示](http://en.wikipedia.org /維基/兩%27s_complement)。至少_try _... – Notlikethat

回答

0

到負二進制轉化爲六的方式被稱爲two's complement

狀態標誌:

  • N:嚴格陰性結果
  • Z:結果爲零
  • Ç :carry:如果您將數字視爲無符號數,則操作會在最多的si上產生一個carry在ARM上,這意味着結果應該是2^32 +存儲在寄存器中的實際結果。
  • V:signed oVerflow。這意味着您的操作結果沒有它應該有的標誌。例如,你添加兩個正整數,你得到一個負整數。