系统受到干扰侵害,致使PC值改变,造成智育运行扮演,导致:
1:程序飞出。PC值指向操作数,将操作数作为指令执行;PC值超出应用程序区,将非程序区中的随机数作为指令码运行。不管何种情况。都造成程序的盲目运行,最后由偶然巧合进入死循环。
2:数据区及工作寄存器中数据破坏。程序的盲目运行,将随机数作为指令运行的结果不可避免地会盲目地执行一些储存器读写命令而造成其内部数据的破坏。例如MCS-51单片机,当PC值超过地址范围(当系统扩展小于64k),CPU获得虚假数据FFH时,对应地执行“MOV R7,A”指令,造成工作寄存器R7内容变化。
对于程序运行失常的软件对策主要是发现失常状态后及时引导系统恢复原始状态。
(1):设置监视跟踪定时器
使用定时器中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间表,而在主程序运行过程中执行一次定时器时间常数刷新操作,这样,只要程序正常运行,定时器不会出现定时中断,而当程序失常,不能刷新定时器时间常数而导致定时中断,利用定时中断服务程序将系统复位。
(2)设置软件陷阱
当PC失控,造成程序“乱飞”而不断进行非程序区,只要在非程序区设置拦截措施,使程序进入陷阱,多面手强使用程序进入初始状态。 |