在编写子程序时,有些应用者不利用返回指令RET,而习惯利用对应的跳转指令跳到对应的“目的地"。这种程序存在一一个隐含的“弊端”:即使在软件调试过程中汇编成功,甚至程序能够实现- -定的功能,但很有可能会"死机"或出现其他的故障。因为在调用子程序时,机器会自动将当前的PC值(当前执行指令的下一条指令存储的地址)压入堆栈,但是若在子程序中通过跳转指令返回,机器就不会弹出压入堆栈的PC值。这就意味着在间接地使SP增加,若多次调用该子程序,那么SP就-直在增加,这造成了内部RAM中的内容被逐渐修改(其修改的内容是不确定的值)。而内部RAM往往是中间存储变量,当SP增加到中间变量的位置时,就会修改中间变量的值,从而导致程序出错。因此在使用跳转指令跳出子程序时要利用两条POP指令将压入堆栈的PC值弹出,即执行完子程序以后要保证SP的值恢复到进入子程序SP所设置的初值。 + `: Y& U2 h; P* z4 G