.
.
btfsc STATUS,Z
goto loop
.
.
loop: return
此代码的行为如何? goto 没有扩展,所以堆栈中没有保存任何内容?代码中也没有调用。
答案 0 :(得分:0)
goto
和btfsc
指令都会影响程序计数器,而不会影响堆栈。
在您的代码段中,如果Z
寄存器的STATUS
位置位,则程序计数器前进到下一条指令。 goto
指令执行将程序计数器更改为标签return
处的loop
指令的地址。 return
指令将程序计数器设置为堆栈上的返回地址。此时堆栈上必须有一个有效的返回地址。如果未设置堆栈,则生成的跳转是不可预测的。
如果Z
位清零,则程序计数器'跳过'并前进到goto
指令之后的下一条指令,程序将继续执行。