fill 指定程序存储器填充值
fill 伪指令可以将已知的数据强制连续自动填充到未用的程序存储器空间,被填充的可以是一个立即数,配合( )也可以是一条汇编指令。例:
Fill 0x08,5 ;从当前地址开始连续5个空间填为0x08数据
Fill (goto main),.12 ;从当前地址开始连续12个空间填为goto main指令
源程序的长度一般不可能刚好与芯片的空间相等,所以都有一些程序空间没有被写上具体的指令代码(空白处),在单片机正常运行时这些地方是不会被执行到的。但在有干扰等的情况下程序跑飞正好落在这些非法指令处时,就有必要设置软件陷阱捕捉这些非法跳转,让程序恢复正常运行。例:
Fill (goto $),NEXT-$ ;从当前地址开始到标号NEXT前所有程序空间填上goto $
org 0x7f
NEXT ;标号以下可继续写源程序
Fill (goto $),1ff-$ ;从当前地址开始到1ff前所有程序空间填上goto $
指令goto $是跳转到当前行的意思。一旦单片机执行到该指令即将进入死循环,直到看门狗复位程序从头开始执行,这是软件陷阱的最基本处理方法。软件陷阱的更多应用可参考单片机的抗干扰技术等资料。
回复【7楼】youmcu
fill 指定程序存储器填充值
fill 伪指令可以将已知的数据强制连续自动填充到未用的程序存储器空间,被填充的可以是一个立即数,配合( )也可以是一条汇编指令。例:
fill 0x08,5 ;从当前地址开始连续5个空间填为0x08数据
fill (goto main),.12 ;从当前地址开始连续12个空间填为goto main指令
源程序的长度一般不可能刚好与芯片的空间相等,所以都有一些程序空间没有被写上具体的指令代码(空白处),在单片机正常运行时这些地方是不会被执行到的。但在有干扰等的情况下程序跑飞正好落在这些非法指令处时,就有必要设置软件陷阱捕捉这些非法跳转,让程序恢复正常运行。例:
fill (goto $),next-$ ;从当前地址开始到标号ne......
-----------------------------------------------------------------------
fill 伪指令可以将已知的数据强制连续自动填充到未用的程序存储器空间,被填充的可以是一个立即数,配合( )也可以是一条汇编指令。例:
Fill 0x08,5 ;从当前地址开始连续5个空间填为0x08数据
Fill (goto main),.12 ;从当前地址开始连续12个空间填为goto main指令
源程序的长度一般不可能刚好与芯片的空间相等,所以都有一些程序空间没有被写上具体的指令代码(空白处),在单片机正常运行时这些地方是不会被执行到的。但在有干扰等的情况下程序跑飞正好落在这些非法指令处时,就有必要设置软件陷阱捕捉这些非法跳转,让程序恢复正常运行。例:
Fill (goto $),NEXT-$ ;从当前地址开始到标号NEXT前所有程序空间填上goto $
org 0x7f
NEXT ;标号以下可继续写源程序
Fill (goto $),1ff-$ ;从当前地址开始到1ff前所有程序空间填上goto $
指令goto $是跳转到当前行的意思。一旦单片机执行到该指令即将进入死循环,直到看门狗复位程序从头开始执行,这是软件陷阱的最基本处理方法。软件陷阱的更多应用可参考单片机的抗干扰技术等资料。
指令要短,太长了飞到半中腰也执行不了。
fill 指定程序存储器填充值
fill 伪指令可以将已知的数据强制连续自动填充到未用的程序存储器空间,被填充的可以是一个立即数,配合( )也可以是一条汇编指令。例:
fill 0x08,5 ;从当前地址开始连续5个空间填为0x08数据
fill (goto main),.12 ;从当前地址开始连续12个空间填为goto main指令
源程序的长度一般不可能刚好与芯片的空间相等,所以都有一些程序空间没有被写上具体的指令代码(空白处),在单片机正常运行时这些地方是不会被执行到的。但在有干扰等的情况下程序跑飞正好落在这些非法指令处时,就有必要设置软件陷阱捕捉这些非法跳转,让程序恢复正常运行。例:
fill (goto $),next-$ ;从当前地址开始到标号ne......
-----------------------------------------------------------------------
回复【7楼】youmcu
-----------------------------------------------------------------------
非常感谢,学习了。
一周热门 更多>