0

我正在使用 HCS08 CPU(用于飞思卡尔 MCU),但我无法理解分支指令。这是手册。此架构中的程序计数器指向要获取的下一条指令。BSR 指令(第 237 页)将以下列方式更新程序计数器寄存器(在将其保存到堆栈并进行分支之前):

PC ← (PC) + $0002 提前 PC 到返回地址

他们说“程序计数器从操作码地址增加 2(因此它指向下一条指令的操作码,这将是返回地址)”。但为什么是 2 而不仅仅是 1?假设我有

  • 第 1 行指令1
  • 2号线BSR
  • 第 3 行指令2
  • 第 4 行指令3

CPU取“instruction1”时并不知道下一行会有分支,所以在“instruction1”取到后,程序计数器指向第2行。当CPU取到BSR时,它不会递增程序计数器;它将程序计数器的实际值加 2 保存在堆栈中,该值将由分支结束时的返回指令使用。但是 Program Counter + 2 指向第 4 行,而不是第 3 行!!!这不是错误吗?感谢您阅读!

鲍勃

4

1 回答 1

2

您可能对汇编器位置计数器和 CPU程序计数器感到困惑。BSR是2字节指令(AD+addr),所以PC需要提前2。

于 2013-06-19T14:48:15.327 回答