这是我期末考试的一部分。我被提供了以下代码,并被问及其行为。在代码中我们可以清楚地看到没有分支输出(即。call
或中断),并且根据我的知识,这意味着程序堆栈是空的。然而在代码的末尾有一个goto $
,它将编译器(?)指向(空)堆栈顶部的任何内容。
任何人都可以告诉我一般情况下会出现什么样的行为,特别是如何在下面的代码中表现出来。考虑到我们正在开发 PIC16F877 。
谢谢。
答案 0 :(得分:2)
我不知道你如何建立从$
到堆栈的关系。
$
用于指代当前地址。你可以写:
any_label: jmp any_label
或跳过标签并使用$
jmp $
由于$
是当前地址,因此两个汇编程序语句都会创建相同的代码。它用于停止在无限循环中运行的程序的执行。
CPU不会停止并在同一地址循环并消耗功率。有些CPU需要省电模式,在这种情况下可能会更好。