AVR汇编语言代码

时间:2013-06-03 06:50:37

标签: assembly avr

我坚持使用以下代码,并且基本不了解它是如何工作的?

在执行以下代码行后确定r22的十进制值:

clr r22  

dec r22

push r22

dec r22

pop r5

r22的值=?

2 个答案:

答案 0 :(得分:1)

好吧,只需逐个完成每条指令,并找出每个指令的作用。

  1. clr r22 :这会将寄存器设置为0。
  2. dec r22 :这会减少它,因此它会从0下溢到255.
  3. push r22 :这会将255(r22)推入堆栈。
  4. dec r22 :这会减少r22,所以r22现在是254。
  5. pop r5 :这会从堆栈中弹出一个值(255)并将其存储在r5中,而不会影响r22。
  6. 所以,除非我出错了,答案是r22 = 254。

答案 1 :(得分:0)

寄存器(8位)从0到FF(dec r22)到FE(dec r22)

如果r22是4位,那么E = 14

如果r22是8位,那么FE = 254

如果r22是16位,则FFFE = 65534

等等

处理器寄存器就像汽车里程表 当它达到99,999英里时,它会向前转到00000

寄存器到达F-F-F-F,15-15-15-15(不是9-9-9-9,因为它是十六进制而不是十进制),当我们+1时它返回到0-0-0-0