PIC组件 - 无分支返回

时间:2015-02-04 16:56:03

标签: assembly pic

.
.
btfsc STATUS,Z
goto loop
.
.
loop: return

此代码的行为如何? goto 没有扩展,所以堆栈中没有保存任何内容?代码中也没有调用

1 个答案:

答案 0 :(得分:0)

gotobtfsc指令都会影响程序计数器,而不会影响堆栈。

在您的代码段中,如果Z寄存器的STATUS位置位,则程序计数器前进到下一条指令。 goto指令执行将程序计数器更改为标签return处的loop指令的地址。 return指令将程序计数器设置为堆栈上的返回地址。此时堆栈上必须有一个有效的返回地址。如果未设置堆栈,则生成的跳转是不可预测的。

如果Z位清零,则程序计数器'跳过'并前进到goto指令之后的下一条指令,程序将继续执行。