Assembly PIC汇编-返回而不分支

Assembly PIC汇编-返回而不分支,assembly,pic,Assembly,Pic,这段代码的行为如何?goto没有分支,所以堆栈上没有保存任何内容?代码中也没有调用。goto和btfsc指令都会影响程序计数器,而不是堆栈 在代码段中,如果设置了状态寄存器的Z位,则程序计数器前进到下一条指令。goto指令执行将程序计数器更改为标签循环处的返回指令的地址。return指令将程序计数器设置为堆栈上的返回地址。此时堆栈上必须有一个有效的返回地址。如果未设置堆栈,则产生的跳转是不可预测的 如果Z位被清除,则程序计数器“跳过”并前进到goto指令之后的下一条指令,程序将继续执行。是的,我

这段代码的行为如何?goto没有分支,所以堆栈上没有保存任何内容?代码中也没有调用。

goto
btfsc
指令都会影响程序计数器,而不是堆栈

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


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

是的,我了解基本知识。我本来应该换个说法,但我仓促回答,因为我明天要考试。通过对它的实验,我注意到在执行返回行之后,它会返回到程序的最开始。这会很有意义,因为堆栈是空的,所以没有返回到哪里的引用。所以很自然地,它会回到代码的开头。我不确定是否在100%的情况下都是这样。不,它不一定会出现在代码的开头。Return将当前堆栈内存位置的内容(无论它是什么)加载到程序计数器中。如果未设置堆栈,则产生的跳转是不可预测的。
.
.
btfsc STATUS,Z
goto loop
.
.
loop: return