0

我被困在下面的代码上,对它的工作原理没有基本的了解?

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

clr r22  

dec r22

push r22

dec r22

pop r5

r22 的值 = ?

4

2 回答 2

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。

所以,除非我做错了什么,否则答案是 r22 = 254。

于 2013-06-03T06:56:56.937 回答
0

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

如果 r22 是 4 位,则 E = 14

如果 r22 为 8 位,则 FE = 254

如果 r22 是 16 位,则 FFFE = 65534

等等

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

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

于 2013-06-03T08:58:42.840 回答