需要帮助理解Arm处理器

时间:2014-01-26 02:16:33

标签: arm

我是一名机械英语学生,我目前正在研究ARM处理器。我刚刚遇到一个问题,但我不明白他们是如何得出这些答案的。需要帮助理解。另请帮助我们如何从负十进制转换为十六进制。谢谢。

在ARM中执行以下计算的结果是什么?怎么样 是否设置了状态标志? (以32位写入操作数和结果 十六进制表示法!)

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

答案是:

  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 个答案:

答案 0 :(得分:0)

将负二进制转换为hexa的方法称为two's complement

状态标志是:

  • N:严格否定结果
  • Z:结果为零
  • C:carry:如果你认为数字是无符号的,那么操作在最高有效位上产生carry,在ARM上,这意味着结果应该是2 ^ 32 +实际结果存储在寄存器中。
  • V:signed oVerflow。这意味着您的操作结果没有它应该具有的符号。例如,你添加两个正整数,你得到一个负数。
相关问题