Z80 NMI是否可重入?

问题描述:

从我可以收集的Z80 NMI中断(0x66)是由NMI引脚的边沿检测触发的。当仍处于NMI处理程序代码中时检测到另一个边沿会发生什么情况(RETN尚未执行)?Z80 NMI是否可重入?

NMI是否可重入,并且Z80是否将堆栈上的当前地址再次从0x66开始?

+0

谢谢你的链接。很有用。 – obiwanjacobi

我的读书是第二个NMI会中断第一个处理。 NMI处理避免额外中断的唯一特殊事情是将IFF1备份到IFF2,然后设置IFF1(其中RETN的特殊功能是在另一个方向上恢复)。但是这不会禁止NMI。所以没有任何机制可以忽略未来的NMI。

这在文献中稍有备份,尽管很细微 - e.g.“在程序控制下,该负沿触发中断不能被禁用,并且在当前指令完成时CPU将随时接受(如果总线请求未挂起)“;强调增加,但也注意到巴士请求已作为特殊情况被撤出,而没有提到现有的NMI。

+0

而不是如此微妙地备份的名称。 NMI - 不可屏蔽中断。换句话说,通过使用DI禁用(屏蔽)中断,您无法阻止其发生。 –