当stack为空时转到$

时间:2015-03-17 19:16:31

标签: assembly microcontroller pic

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

任何人都可以告诉我一般情况下会出现什么样的行为,特别是如何在下面的代码中表现出来。考虑到我们正在开发 PIC16F877

谢谢。

Code

1 个答案:

答案 0 :(得分:2)

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

$用于指代当前地址。你可以写:

any_label: jmp any_label

或跳过标签并使用$

        jmp $

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

CPU不会停止并在同一地址循环并消耗功率。有些CPU需要省电模式,在这种情况下可能会更好。