从我可以收集到的信息来看,Z80 NMI中断(0x66)是由NMI引脚的边缘检测触发的。当NMI处理程序代码(RETN尚未执行)仍在检测到另一个边缘时,会发生什么?
NMI是可重入的吗? Z80会直接将当前地址推送到堆栈上并在0x66开始吗?
发布于 2016-10-02 13:24:55
我的解读是,第二个NMI会中断第一个NMI的处理。NMI处理避免额外中断的唯一特殊之处是将IFF1备份到IFF2,然后设置IFF1 (RETN的特殊功能是从另一个方向恢复)。但这并不会禁止NMI。因此,没有任何机制可以忽略未来的NMI。
这在文献中被轻松备份-- 例如:“在程序控制下不能禁用这种负边缘触发的中断,并且将在当前指令完成时随时被接受,以满足当前指令(如果总线请求没有未决)”;强调补充,但也注意到总线请求已作为特例被提取,而没有提及现有的。
https://stackoverflow.com/questions/39815284
复制相似问题