RJMP OPcode帮助,Avr汇编程序

时间:2015-02-19 07:15:46

标签: assembly avr opcode

我有一个问题是在rjmp的操作码中解决K的值。操作码是1100 kkkk kkkk kkkk。其中Pc< - PC + k + 1.当我解决这个问题时,我得到k = -1然后我知道操作码中K的12位是0xFFF。然后我假设我的答案是CFFF,但这是不正确的。答案是CFFD。我做错了什么?下面是我给出的代码。

foo: NOP
  NOP
  RJMP foo

1 个答案:

答案 0 :(得分:1)

你想跳回1个单词,公式给出k + 1 = -1 k = -2,{12}为0xFFE。插入操作码会产生0xCFFE。您可以使用汇编程序进行检查:

00000000 <foo>:
   0:   00 00           nop
   2:   fe cf           rjmp    .-4             ; 0x0 <foo>

查看它的其他方法是从下一条指令测量偏移量,因为当添加偏移量时,cpu已经增加了PC。 +1来自哪里。