在汇编语言写单片机的程序的时候,如何知道当前的PC指针是多少

在汇编语言写单片机的程序的时候,如何知道当前的PC指针是多少,第1张

当前PC指针的值,可以通过一定的方法来获得,比如如果使用LCALL指令,那么单片机执行过程是:保护现场,将当前PC压入堆栈,当程序返回时,再d出该保护的PC,由此,我们就可以获得当前的PC,具体程序如下:

LCALL GETPC ;调用一个子程序以获得当前PC值

GETPC:

POP ACC ;取得PC高八位

POP B ;取得PC低八位

PUSH B ;恢复SP

PUSH ACC ;恢复SP

RET

PC是程序计数器,PC寄存器中的内容是下一条要取的指令的16位存储单元地址,在程序执行的过程中,PC中的值会自动加1。IP寄存器是CPU在地址总线上输出这个地址信号,这个地址信号对于寄存器来说是输入,这就选中了存储器中相应的单元,然后在R/W上发出读信号,从存储器中的那个单元读出指令,从数据总线上传到CPU。IP就是单片机中断优先级控制,CPU从指令指针寄存器IP中获得指令的内存地址,然后取出指令,放到指令寄存器IR。接下来,IP自己加1,也就是指向下一条指令。

PC是程序指针,在常见的51里面本质就是一个16位的寄存器,最大就是寻址64K的空间,假如你的PC有可能会走完64K,那么就是会溢出了,可能会从0000H开始,也可能会从0001H或者0002H开始,这样看你最后运行的代码是几个字节的,当然这样的结果一般是会造成程序跑飞,也就是PC的值出错,程序不知道就死在什么地方了。

以上就是关于在汇编语言写单片机的程序的时候,如何知道当前的PC指针是多少全部的内容,包括:在汇编语言写单片机的程序的时候,如何知道当前的PC指针是多少、程序计数器(pc)与指令指针寄存器(ip)区别、PC是程序指针啊,PC+1代表的就是读取下一条指令的地址,如果是单字节指令的话,运行完这个指令PC会自动加1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10087869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存