栈为空时转到$

goto $ when stack is empty

这是我期末考试的一部分。向我提供了以下代码,并询问了它的行为。在代码中我们可以清楚地看到没有分支(即 call 或中断),据我所知,这意味着程序堆栈是空的。然而在代码的末尾有一个 goto $ 指示编译器(?)到 (空) 堆栈顶部的任何内容。

任何人都可以告诉我在这种情况下通常会发生什么行为,以及它在下面的代码中的具体表现如何。考虑到我们正在开发 PIC16F877.

谢谢。

我不知道你是如何建立从 $ 到堆栈的关系的。

$用于引用当前地址。你可以这样写:

any_label: jmp any_label

或跳过标签并使用 $

        jmp $

因为$是当前地址,所以两个汇编程序语句创建相同的代码。用于在无限循环中停止程序运行的执行。

CPU不停在同一个地址循环,耗电。一些 CPU 可能有省电模式,在这种情况下可能会更好。