2014-01-26 163 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。这意味着您的操作结果没有它应该有的标志。例如,你添加两个正整数,你得到一个负整数。