COP 命令 (Coprocessor Empowerment) |
現在の処理を中断し、コプロセッサによる処理を実行します。
COPオーバーロード
オペコード |
構文 |
アドレッシングモード |
バイト数 |
命令サイクル |
注 |
02
|
COP #Imm.
|
Stack/ Interrupt
|
2
|
7
|
1
|
注
1. エミュレーションモード時は1サイクル追加
フラグ変化
----dI---
d: ソフトウェア割込開始時に強制的にクリアされる
I: ソフトウェア割込開始時に強制的にセットされる
解説
COP命令は、現在実行中の処理を中断し、コプロセッサによるソフトウェア割込を実行します。
ソフトウェア割込開始処理の内容はネイティブモードとエミュレーションモードで異なります。
COP命令のオペランドには、8ビットの定数を指定することでシグネチャとすることができます。これは実際の処理では使用されませんが、デバッガ上でのトレースに役立ちます。
・ネイティブモード
1. プログラムバンクレジスタをスタックにプッシュします。
2. プログラムカウンタを2インクリメントし、スタックにプッシュします。
3. ステータスレジスタをスタックにプッシュします。
4. 割込禁止フラグをセットします。
5. プログラムバンクレジスタをゼロクリアし、プログラムカウンタをCOPベクタ($FFF4)より取得し、割込処理を実行します。
6. COPの処理内容の完了後にデシマルフラグをクリアします
・エミュレーションモード
1. プログラムカウンタを2インクリメントし、スタックにプッシュします。
2. ステータスレジスタをスタックにプッシュします。
3. 割込禁止フラグをセットします
4. プログラムバンクレジスタをゼロクリアし、プログラムカウンタをCOPベクタ($FFF4)より取得し、割込処理を実行します。
5. デシマルフラグをクリアします
参照