第 5 章 プリフィックスコード
5.4 プリフィックスコードに関する制約
34 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第5章 プリフィックスコード 5.1 バンクセレクトプリフィックス
5.1 バンクセレクトプリフィックス
バンクセレクトプリフィックスを命令の前に置くことにより , その命令がアクセスす るメモリ空間を , アドレス指定方式と無関係に任意に選択できます。
■ バンクセレクトプリフィックス
データアクセスの際に使用されるメモリ空間は,アドレス指定方式ごとに定められてい ます。バンクセレクトプリフィックスを命令の前に置くことにより,その命令がアクセ スするメモリ空間を,アドレス指定方式と無関係に任意に選択できます。バンクセレク トプリフィックスとそれにより選択されるメモリ空間を表 5.1-1に示します。
以下に示す命令に対してはプレフィックスコードの効果が異なります。
• 転送命令(I/Oアクセス)
MOV A,io MOV io, A MOVX A,io MOVW A io
MOVW io,A MOV io,#imm8 MOVW io,#imm16
プリフィックスの有無にかかわらず, I/O空間がアクセスされます。
• 分岐命令
RETI
プリフィックスの有無にかかわらず,システムスタックバンク(SSB)が使用されま す。
• ビット操作命令(I/Oアクセス)
MOVB A,io:bp MOVB io:bp,A SETB io:bp CLRB io:bp BBC io:bp,rel BBS io:bp,rel
WBTC WBTS
プリフィックスの有無にかかわらず, I/O空間がアクセスされます。
• ストリング操作命令
MOVS MOVSW SCEQ SCWEQ FILS FILSW
プリフィックスの有無にかかわらず,オペランドで指定されたバンクレジスタが使 用されます。
表 5.1-1 バンクセレクトプリフィックス
バンクセレクトプリフィックス 選択される空間 PCB プログラムカウンタ空間
DTB データ空間
ADB アディショナル空間 SPB
そのときのスタックフラグの内容によりシステムス タック空間,ユーザスタック空間のどちらかが用いら れます。
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 35
F 2 MC-16LX ファミリ
第5章 プリフィックスコード5.1 バンクセレクトプリフィックス
• その他の制御系命令(スタック操作) PUSHW POPW POPW PS
プリフィックスの有無にかかわらず , S フラグに応じてシステムスタックバンク
(SSB)またはユーザスタックバンク(USB) が使用されます。
下記の場合は,さらにプリフィックスの効果が次の命令まで及びます。
• その他の制御系命令(フラグ変更) AND CCR,#imm8 OR CCR,#imm8
命令の動作自体は正常に行われます。プリフィックスの効果が次の命令まで及びま す。
• その他の制御系命令(割込み制御) MOV ILM,#imm8
命令の動作自体は正常に行われます。プリフィックスの効果が次の命令まで及びま す。
36 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第5章 プリフィックスコード
5.2 コモンレジスタバンクプリフィックス(CMR)
5.2 コモンレジスタバンクプリフィックス (CMR)
レジスタバンクをアクセスする命令の前に , コモンレジスタバンクプリフィックス
(CMR) を置くことで , 現在のレジスタバンクポインタ (RP) の値に関係なく , その命令
のレジスタアクセスをすべて 000180
H〜 00018F
Hにあるコモンバンク (RP=0 のとき に選択されるレジスタバンク ) に変更できます。
■ コモンレジスタバンクプリフィックス (CMR)
複数のタスク間でのデータ交換を容易にするためには,そのときのRPレジスタがどの ような値でも比較的簡単に,ある定められた同一のレジスタバンクをアクセスする手段 が必要です。そのために , F2MC-16LX では,各タスクで共通に使用できるレジスタバ ンクを用意しています。これをコモンバンクといいます。コモンバンクは, 000180H〜 00018FH番地にありRPレジスタの値が"0"のときに選択されます。
レジスタバンクをアクセスする命令の前に , コモンレジスタバンクプリフィックス
(CMR)を置くことで,現在のレジスタバンクポインタ(RP)の値に関係なく,その命令
のレジスタアクセスをすべて000180H〜00018FHにあるコモンバンク(RP=0のときに 選択されるレジスタバンク)に変更できます。
以下に示す命令に対してはプレフィックスコードの効果が異なります。
• ストリング命令
MOVS NOVSW SCEQ FILS FILSW
プリフィックスコードを付加したストリング操作命令の実行中に割込み要求が発 生すると,割込みからの復帰後のストリング操作命令に対してはプリフィックスが 無効となるため誤動作が発生することがあります。上記のストリング操作命令に対 してはCMRプリフィックスを付加しないでください。
• その他の制御系命令(フラグ変更)
AND CCR,#imm8 OR CCR,#imm8 POPW PS
命令の動作自体は正常に行われます。プリフィックスの効果が次の命令まで及びま す。
• その他の制御系命令( 割込み制御) MOV ILM,#imm8
命令の動作自体は正常に行われます。プリフィックスの効果が次の命令まで及びま す。
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 37
F 2 MC-16LX ファミリ
第5章 プリフィックスコード5.3 フラグ変化抑止プリフィックスコード(NCC)
5.3 フラグ変化抑止プリフィックスコード (NCC)
フラグ変化を抑止したい命令の前に , フラグ変化抑止プリフィックスコード (NCC) を置くことで , 命令の実行に伴うフラグ変化を抑止できます。
■ フラグ変化抑止プリフィックスコード (NCC)
不要なフラグ変化を抑止するためにフラグ変化抑止プリフィックスコード(NCC)を用 います。フラグ変化を抑止したい命令の前にNCCプリフィックスを置くことで,命令 の実行に伴うフラグ変化を抑止できます。
以下に示す命令に対してはプレフィックスコードの効果が異なります。
• 分岐命令
INT #vct8 INT9 INT addr16
INTP addr24 RETI
プリフィックスの有無にかかわらずコンディションコードレジスタ(CCR)のフラグ は変化します。
• ストリング命令
MOVE MOVSW SCEQ SCWEQ FILS FISW
プリフィックスコードを付加したストリング操作命令の実行中に割込み要求が発 生すると,割込みからの復帰後のストリング操作命令に対してはプリフィックスが 無効となるため誤動作が発生することがあります。上記のストリング操作命令に対 してはNCCプリフィックスを付加しないでください。
• その他の制御系命令(タスクの切換え) JCTX @A
プリフィックスの有無にかかわらずCCRレジスタのフラグは変化します。
• その他の制御系命令(フラグ変更)
AND CCR,#imm8 OR CCR,#imm8 POPW PS
プリフィックスの有無にかかわらずCCRレジスタのフラグは変化します。また,プ リフィックスの効果が次の命令まで及びます。
• その他の制御系命令(割込み制御) MOV ILM,#imm8
命令の動作自体は正常に行われます。プリフィックスの効果が次の命令まで及びま す。
38 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第5章 プリフィックスコード
5.4 プリフィックスコードに関する制約
5.4 プリフィックスコードに関する制約
割込み / ホールド抑止命令の前に , プリフィックスコードを置いた場合 , 図 5.4-2 の ようにプリフィックスコードの効果は , プリフィックスコード後の最初の命令 ( 割込 み / ホールド抑止命令を除く ) まで及びます。
競合するプリフィックスコードが連続していた場合 , 後方のものが有効になります。
■ 割込み要求を受け付けない命令とプリフィックスコードの関係
以下に示す10種類の命令とプリフィックスコードは,割込みやホールドの要求を受け 付けません。
• MOV ILM,#imm8 • AND CCR,#imm8
• OR CCR,#imm8 • POPW PS
• PCB • ADB
• NCC • DTB
• SPB • CMR
図 5.4-1に示すように上記の命令を実行中に割込み/ホールド要求が発生しても,割込 み/ホールド処理が行われるのはこの命令以降,初めてこれ以外の種類の命令が実行さ れた後になります。
図 5.4-1 割込み/ホールド抑止命令
割込み/ホールド抑止命令の前にプリフィックスコードを置いた場合,図 5.4-2のよう にプリフィックスコードの効果は,プリフィックスコード後の最初の命令(割込み/ホー ルド抑止命令を除く)まで及びます。
図 5.4-2 割込み/ホールド抑止命令とプリフィックスコード 割込み/ホールド抑止命令
・・・・・・・・ ・・・
(a):普通の命令
割込み要求発生 割込み受付け
(a)
割込み/ホールド抑止命令
MOV A,FFH NCC MOV ILM,#imm8 ・・・・ ADD A,01H CCR:XXX10XX
CCR:XXX10XX NCCによりCCR は変化しません。
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 39
F 2 MC-16LX ファミリ
第5章 プリフィックスコード5.4 プリフィックスコードに関する制約
■ プリフィックスコードが連続しているとき
競合するプリフィックスコードが連続していた場合,後方のものが有効になります(図 5.4-3を参照)。
図 5.4-3 プリフィックスコードの連続
競合するプリフィックスコードとは,ここでいうPCB, ADB, DTB, SPBのことを意味し ます。
プリフィックスコード
・・・・・ ADB DTB PCB ADD A,01H ・・・・
↑プリフィックスコードは PCBが有効になります。
40 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第5章 プリフィックスコード
5.4 プリフィックスコードに関する制約
CM44-00201- 4 FUJITSU MICROELECTRONICS LIMITED 41
第 6 章 割込み処理
割込みの機能と動作について説明します。
6.1 割込み処理
6.2 ハードウェア割込みの動作フロー
6.3 割込み処理のフローチャートとレジスタの退避 6.4 割込みベクタ
6.5 拡張インテリジェントI/Oサービス
6.6 割込み制御レジスタ(ICR)
6.7 割込み制御レジスタ(ICR)内の各ビットの意味
6.8 拡張インテリジェントI/Oサービスディスクリプタ(ISD)
6.9 拡張インテリジェントI/Oサービスディスクリプタの各
レジスタ 6.10 例外処理
6.11 割込み処理のプログラム例
42 FUJITSU MICROELECTRONICS LIMITED CM44-00201- 4
F 2 MC-16LX ファミリ
第6章 割込み処理 6.1 割込み処理
6.1 割込み処理
F
2MC-16LX シリーズでは , 各内蔵リソースからの割込み要求により , 割込み処理ま
たは拡張インテリジェント I/0 サービスが起動します。割込み処理では , 割込み処理 プログラムによって割込み要求に対応した処理を行います。拡張インテリジェント I/O サービスでは , 内蔵リソースとメモリ間のデータ転送を自動的に行います。さら に , 内蔵リソース ( 内蔵周辺回路 ) からの要求により , 拡張インテリジェント I/O サービスの実行を中断するなどの機能があります。
■ 割込み処理
CPU に対してハードウェア割込み要求を行うことができる内蔵リソースには, 割込み 要求フラグと割込み許可フラグが必要です。割込み要求フラグは,内蔵リソース固有の イベント(事象)の発生によりセットされます。割込み要求フラグが要求ありを示し, 割込み許可フラグが許可状態のときに,ハードウェア割込み要求が内蔵リソースより発 生します。
ここで,ハードウェア割込み要求の発生により拡張インテリジェントI/Oサービスを起 動する必要がある内蔵リソースに関しては,そのリソースに対応する割込みコントロー ラ中の割込み制御レジスタ(ICR)に拡張インテリジェントI/Oサービスイネーブルフラ
グ(ISE)が設けてあります。
このISEフラグが"1"であるときに割込み要求が発生することによって,拡張インテリ
ジェントI/Oサービスが起動します。また,ハードウェア割込み要求で通常の割込みを 起こしたいときは, ISEを"0"にします。
ソフトウェア割込みである INT命令の実行による割込み要求には,割込み要求フラグ および許可フラグはなく, INT命令の実行により常に割込み要求が発生します。
ハードウェア割込み要求に対しては,ある一定の要求のグループ単位で割込みレベルを 指定できます。割込みレベルの指定は ,割込みコントローラ中の ICRレジスタの中の 割込みレベル設定ビット(IL0, IL1, IL2)にて行います。割込みレベル値は0〜7までの 8通りの値に設定できます。割込みレベル値は, 0が一番強く6が一番弱いと定義され ています。
レベル値 7 に設定された割込み要求グループの割込みは発生しません。また , ハード ウェア割込み要求は,プロセッサステータス(PS)中のコンディションコードレジスタ
(CCR)中の割込み許可フラグ(I)および割込みレベルマスク(ILM)により割込みにマス
ク(許可/禁止)できます。
マスクされない割込み要求が発生すると, CPUは次の動作を行います。
1) システムスタックバンクレジスタ(SSB)とシステムスタックポインタ(SSP)の示 すメモリ中へ,以下に挙げるレジスタのデータ(12バイト)を退避します。
- プロセッサステータス(PS) - プログラムカウンタ(PC)
- プログラムカウンタバンクレジスタ(PCB) - データバンクレジスタ(DTB)