我正在为我的数字设计课上的考试而学习,但我不明白一些事情。这是带有答案的工作表,
- 我了解每条指令的 PC 地址。我不明白的是在b上,它说分支跳转到哪里,68hc12在分支之后获取并执行哪条指令。我看到 080B 20 F8,但这到底是什么意思,就像 080B 是内存中存放指令的插槽,但是后面的 20 F8 是什么意思?我也不太了解 C 部分中的 A,任何帮助都会很棒。
A) 说明这20 F8
是 的原始机器代码bra loop
,其他指令未显示。
显然,您应该对机器代码格式有足够的了解,才能弄清楚分支到哪里。
我不知道 68HC12,但根据其他 ISA(如 x86)的经验,我假设 0x20 是操作码,而 0xF8 是带符号的 2 的补码相对位移,可能相对于分支指令的结尾。
哦,是的,为 C 部分编写的解决方案证实了这一点。但0x080D + 0xF8
只有在没有从低字节到高字节的进位时才有效。除非 68hc12 位移很奇怪或有分段,否则您必须在添加之前签署扩展它,所以它是0x080D + 0xFFF8
.