我正在使用HCS08 CPU(用于飞思卡尔MCU),我无法理解分支指令。这是manual。此体系结构中的程序计数器指向要获取的 next 指令。 BSR指令(第237页)将按以下方式更新程序计数器寄存器(在将其保存到堆栈并进行分支之前):
PC←(PC)+ $ 0002高级PC返回地址
他们说“程序计数器从操作码地址递增2(因此它指向下一条指令的操作码,它将是返回地址)”。 但为什么由2而不仅仅是1 ??? 假设我有
当CPU取出“instruction1”时,不知道下一行会有分支,所以在“instruction1”取指令后,程序计数器指向第2行。当CPU取出BSR时,它不会不要增加程序计数器;它在堆栈中保存程序计数器的实际值加2,这将由分支末尾的返回指令使用。但程序计数器+ 2指向第4行,而不是第3行!这不是一个错误吗? 谢谢你的阅读!
鲍勃
答案 0 :(得分:2)
您可能正在使用汇编程序位置计数器和CPU 程序计数器。 BSR是一个2字节指令(AD + addr),因此PC需要提前2个。