8

私が収集したものから、Z80 NMI 割り込み (0x66) は、NMI ピンのエッジ検出からトリガーされます。まだ NMI ハンドラ コード内にあるときに別のエッジが検出された場合 (RETN がまだ実行されていない場合) はどうなりますか?

NMI は再入可能ですか? Z80 は現在のアドレスをスタックにプッシュし、再び 0x66 から開始しますか?

4

1 に答える 1

5

私の読みでは、2 番目の NMI は最初の NMI の処理を​​中断します。追加の中断を回避するために NMI 処理が行う唯一の特別なことは、IFF1 を IFF2 にバックアップしてから、IFF1 を設定することです (RETN特別な機能は逆方向の復元です)。しかし、それは NMI を禁止するものではありません。そのため、将来の NMI が無視されるメカニズムはありません。

これは、微妙ではありますが、文献で軽くバックアップされています —たとえば、 「この負のエッジでトリガーされた割り込みは、プログラム制御下で無効にすることはできず、現在の命令の完了時に受け入れられるように、いつでも CPU によって受け入れられます(バス要求がない場合) 。保留中)"; 強調が追加されましたが、既存の NMI について言及されていない特殊なケースとしてバス要求が取り出されたことにも注意してください。

于 2016-10-02T13:24:55.123 に答える