单片机 怎么替换pc指针值

单片机 怎么替换pc指针值,第1张

用汇编可以实现,51进入中断压时,会把PC+1压入堆栈,遇到reti指令则d出存到PC里。所以只要更改堆栈里的数就行。进入中断后d出堆栈中原来的值,然后把想要转到的目的地址压入堆栈,中断返回时就会执行想要的程序了。PC是16位的,存的时候分两次存,至于是先存高位还是先存低位我不记得了,你试一下吧。

DPTR是一个数据指针,PC是程序计数器指令MOVC

A,@A+DPTR的意思是:将DPTR的值加上ACC的值,并将该结果所指的程序存储器地址的数据送入ACC。该指令和当前的PC(程序计数器)值无关,例:若执行前,DPTR=0300H(该值是自己赋予的),ACC=18H,[0318H]=0ABH,则执行后,ACC=0ABH,DPTR不变,MOVC

A,@A+PC的意思是:将PC(程序计数器)的值加上ACC的值,并将该结果所指的程序存储器地址的数据送入ACC,该指令和DPTR无关,PC(程序计数器)值则因为该条指令的位置不同而不同,故该条指令在程序的不同位置,其执行结果是不同的。其余的同上一条指令

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

以上就是关于单片机 怎么替换pc指针值全部的内容,包括:单片机 怎么替换pc指针值、单片机里的 DPTR 和 PC 分别代表什么、PC是程序指针啊,PC+1代表的就是读取下一条指令的地址,如果是单字节指令的话,运行完这个指令PC会自动加1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/10071640.html

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

发表评论

登录后才能评论

评论列表(0条)

保存