装配分支:程序计数器

时间:2013-06-19 14:43:23

标签: assembly microcontroller

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

PC←(PC)+ $ 0002高级PC返回地址

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

  • 第1行指令1
  • 第2行BSR
  • 第3行指示2
  • 第4行指令3

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

鲍勃

1 个答案:

答案 0 :(得分:2)

您可能正在使用汇编程序位置计数器和CPU 程序计数器。 BSR是一个2字节指令(AD + addr),因此PC需要提前2个。