Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编分支:程序计数器_Assembly_Microcontroller - Fatal编程技术网

Assembly 汇编分支:程序计数器

Assembly 汇编分支:程序计数器,assembly,microcontroller,Assembly,Microcontroller,我使用的是HCS08 CPU(用于飞思卡尔MCU),我无法理解分支指令。这是你的电话号码。此体系结构中的程序计数器指向要获取的下一条指令。BSR指令(第237页)将以以下方式更新程序计数器寄存器(在将其保存到堆栈中并进行分支之前): 个人电脑← (PC)+0002美元预付PC至返回地址 他们说“程序计数器从操作码地址递增2(因此它指向下一条指令的操作码,即返回地址)”。 但为什么是2倍而不仅仅是1倍??? 如果我有 第1行说明1 第2行BSR 第3行说明2 第4行说明3 当CPU获取“指令1

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

个人电脑← (PC)+0002美元预付PC至返回地址

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

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


Bob

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

哦,我没注意到!非常感谢。