Microchip
直播中

邢待湘

7年用户 170经验值
私信 关注
[问答]

12F68的小MPASM程序使用的是MPLAB什么版本

我试图用一个12F68的小MPASM程序来创建一个栈操作的演示。简单的循环调用调用另一个子例程的子程序。当模拟时,程序流应该正常,堆栈上的值是正确的,但是模拟器从不显示堆栈指针的变化(总是00)。有没有人尝试过,看到SP变化?如果是,你使用的是哪种MPLAB版本?我正在运行最新版本(3.51)。我很高兴安装任何旧版本,如果堆栈模拟工作正常。任何见解将不胜感激。

回帖(17)

李维嘉

2020-4-22 07:23:21
谢谢你的回复。我不使用STKPTR上的表,而是查看硬件堆栈内存视图。即使在表窗口中改变STKPTR,它也不会在硬件堆栈内存视图中改变(总是0)。在模拟器中,堆栈在启动时被初始化为全零。在第一个调用指令之后,STKPTR为1,但是在内存视图中,返回地址存储在位置0中。我通常的假设是堆栈指针总是指向TOS。在解释堆栈操作的细节方面,我想从这里可以省略的是,STKPTR通常指向TOS+1(至少在模拟器中)。详情不在任何参考资料中…但至少现在我能说出一个始终如一的故事。谢谢。
举报

王焕树

2020-4-22 07:29:54
这有点儿学术性,因为它只是为堆栈指针制造值的模拟器。在标准的中档PIC中,用户绝对无法访问堆栈指针或堆栈内容。
举报

王玉华

2020-4-22 07:37:36
是的,但原来的帖子指定这是一个班级,因此“学术”。
举报

王焕树

2020-4-22 07:43:19
我知道有人要提起那件事。:)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分