本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 富士通半導体デバイス CONTROLLER MANUAL CM26-00301-2 F2MC®-8FX 8 ビット・マイクロコントローラ プログラミングマニュアル F2MC®-8FX 8 ビット・マイクロコントローラ プログラミングマニュアル 富士通株式会社 はじめに ■ 本書の目的と対象読者 F2MC-8FX は , ASIC (Application Specific IC) 対応が可能なオリジナル 8 ビット・ワン チップ・マイクロコントローラです。携帯機器をはじめ民生機器から産業機器まで幅 広く使用できます。 本書は , 実際にこの F2MC-8FX マイクロコントローラを使用して製品を開発される技 術者の方 , 特に F2MC-8FX 用アセンブラのアセンブリ言語を用いてプログラムを製作 されるプログラマの方を対象に , F2MC-8FX の各種命令について解説したものです。本 書をご一読ください。 ■ 商標 F2MC は , FUJITSU Flexible Microcontroller の略で , 富士通株式会社の登録商標です。 その他の記載されている社名および製品名などの固有名詞は , 各社の商標または登録 商標です。 i ■ 本書の全体構成 本書は , 以下に示す 6 つの章および付録から構成されます。 第 1 章 F2MC-8FX CPU の 概要と構成例 この章では , F2MC-8FX CPU の概要と構成例について説明します。 第 2 章 メモリ空間 この章では , F2MC-8FX CPU のメモリ空間について説明します。 第 3 章 レジスタ この章では , F2MC-8FX の専用レジスタと汎用レジスタについて説明します。 第 4 章 割込み処理 この章では , F2MC-8FX の割込み処理の機能と動作について説明します。 第 5 章 CPU ソフトウェア アーキテクチャ この章では , F2MC-8FX CPU の命令について説明します。 第 6 章 実行命令細則 この章では , アセンブラで使用される各実行命令について , リファレンス形式で説 明します。 付録 付録では , 命令一覧表 , バス動作一覧表および命令マップについて記載しています。 ii • • • • • • • 本資料の記載内容は, 予告なしに変更することがありますので, ご用命の際は営業部門にご確認ください。 本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので , 実際に使用する機器での動作を保証するものではありません。したがいまして , これらを使用するにあ たってはお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについて は , 当社はその責任を負いません。 本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的 財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用 について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。し たがって , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任 を負いません。 本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用さ れることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保さ れない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途(原子力施 設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生命維 持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう), ならびに極めて高い信頼性が要 求される用途(海底中継器 , 宇宙衛星をいう)に使用されるよう設計・製造されたものではありません。 したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に営業部門までご相談ください。ご相 談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 , 火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策 設計 , 誤動作防止設計などの安全設計をお願いします。 本資料に記載された製品を輸出または提供する場合は, 外国為替及び外国貿易法および米国輸出管理関連 法規等の規制をご確認の上 , 必要な手続きをおとりください。 本書に記載されている社名および製品名などの固有名詞は , 各社の商標または登録商標です。 Copyright© 2004-2008 FUJITSU LIMITED All rights reserved. iii iv 目次 第1章 1.1 1.2 第2章 F2MC-8FX CPU の概要と構成例 ............................................................... 1 F2MC-8FX CPU の概要 .......................................................................................................... 2 F2MC-8FX CPU を用いたデバイスの構成例.......................................................................... 3 メモリ空間 ................................................................................................. 5 2.1 CPU のメモリ空間.................................................................................................................. 6 2.2 メモリ空間とアドレッシング ................................................................................................. 7 2.2.1 データ領域......................................................................................................................... 9 2.2.2 プログラム領域 ............................................................................................................... 11 2.2.3 16 ビットデータにおけるメモリ空間配置....................................................................... 13 第3章 レジスタ................................................................................................... 15 3.1 F2MC-8FX のレジスタ.......................................................................................................... 16 3.2 プログラムカウンタ (PC)/ スタックポインタ (SP) .............................................................. 17 3.3 アキュムレータ (A)/ テンポラリアキュムレータ (T) ............................................................ 18 3.3.1 テンポラリアキュムレータ (T) の使い方......................................................................... 20 3.3.2 アキュムレータ (A) とテンポラリアキュムレータ (T) のバイトデータの転送・演算 ......................................................................................................................................... 21 3.4 3.5 3.6 3.7 第4章 4.1 4.2 4.3 4.4 4.5 第5章 5.1 5.2 第6章 6.1 6.2 6.3 6.4 6.5 6.6 6.7 プログラムステータス (PS).................................................................................................. 23 インデックスレジスタ (IX)/ エクストラポインタ (EP)......................................................... 26 レジスタバンク .................................................................................................................... 27 ダイレクトバンク ................................................................................................................. 28 割込み処理 ............................................................................................... 29 割込み動作概要 .................................................................................................................... 30 割込み許可 / 禁止 / 優先順位機構 ......................................................................................... 31 割込み処理プログラムの作成方法........................................................................................ 33 多重割込み............................................................................................................................ 35 リセット動作 ........................................................................................................................ 37 CPU ソフトウェアアーキテクチャ .......................................................... 39 アドレッシングの種類.......................................................................................................... 40 特殊な命令............................................................................................................................ 44 実行命令細則............................................................................................ 49 ADDC (ADD Byte Data of Accumulator and Temporary Accumulator with Carry to Accumulator)......................................................................................................................... 50 ADDC (ADD Byte Data of Accumulator and Memory with Carry to Accumulator)................ 52 ADDCW (ADD Word Data of Accumulator and Temporary Accumulator with Carry to Accumulator)......................................................................................................................... 54 AND (AND Byte Data of Accumulator and Temporary Accumulator to Accumulator) .......... 56 AND (AND Byte Data of Accumulator and Memory to Accumulator) ................................... 58 ANDW (AND Word Data of Accumulator and Temporary Accumulator to Accumulator) .............................................................................................................................................. 60 BBC (Branch if Bit is Clear) .................................................................................................. 62 v 6.8 6.9 BBS (Branch if Bit is Set)...................................................................................................... 64 BC (Branch relative if C=1)/BLO (Branch if LOwer) ............................................................. 66 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 6.23 6.24 6.25 6.26 6.27 6.28 6.29 6.30 6.31 6.32 6.33 6.34 6.35 6.36 6.37 6.38 6.39 6.40 6.41 BGE (Branch Great or Equal: relative if ≧ Zero).................................................................. 68 BLT (Branch Less Than zero: relative if < Zero)................................................................... 70 BN (Branch relative if N = 1)................................................................................................. 72 BNZ (Branch relative if Z = 0)/BNE (Branch if Not Equal) .................................................... 74 BNC (Branch relative if C = 0)/BHS (Branch if Higher or Same) .......................................... 76 BP (Branch relative if N = 0: PLUS)...................................................................................... 78 BZ (Branch relative if Z = 1)/BEQ (Branch if Equal) ............................................................. 80 CALL (CALL subroutine)....................................................................................................... 82 CALLV (CALL Vectored subroutine)..................................................................................... 84 CLRB (Clear direct Memory Bit) ........................................................................................... 86 CLRC (Clear Carry flag) ....................................................................................................... 88 CLRI (CLeaR Interrupt flag).................................................................................................. 90 CMP (CoMPare Byte Data of Accumulator and Temporary Accumulator) ........................... 92 CMP (CoMPare Byte Data of Accumulator and Memory) .................................................... 94 CMP (CoMPare Byte Data of Immediate Data and Memory) ............................................... 96 CMPW (CoMPare Word Data of Accumulator and Temporary Accumulator) ...................... 98 DAA (Decimal Adjust for Addition)...................................................................................... 100 DAS (Decimal Adjust for Subtraction)................................................................................. 102 DEC (DECrement Byte Data of General-purpose Register)............................................... 104 DECW (DECrement Word Data of Accumulator) ............................................................... 106 DECW (DECrement Word Data of Extra Pointer)............................................................... 108 DECW (DECrement Word Data of Index Pointer) .............................................................. 110 DECW (DECrement Word Data of Stack Pointer) .............................................................. 112 DIVU (DIVide Unsigned)..................................................................................................... 114 INC (INCrement Byte Data of General-purpose Register).................................................. 116 INCW (INCrement Word Data of Accumulator) .................................................................. 118 INCW (INCrement Word Data of Extra Pointer) ................................................................. 120 INCW (INCrement Word Data of Index Register) ............................................................... 122 INCW (INCrement Word Data of Stack Pointer)................................................................. 124 JMP (JuMP to address pointed by Accumulator)................................................................ 126 JMP (JuMP to effective Address) ....................................................................................... 128 MOV (MOVE Byte Data from Temporary Accumulator to Address Pointed by Accumulator) ............................................................................................................................................ 130 MOV (MOVE Byte Data from Memory to Accumulator)...................................................... 132 MOV (MOVE Immediate Byte Data to Memory) ................................................................. 134 MOV (MOVE Byte Data from Accumulator to Memory)...................................................... 136 MOVW (MOVE Word Data from Temporary Accumulator to Address Pointed by Accumulator) ............................................................................................................................................ 138 MOVW (MOVE Word Data from Memory to Accumulator)................................................. 140 MOVW (MOVE Word Data from Extra Pointer to Accumulator) ......................................... 142 MOVW (MOVE Word Data from Index Register to Accumulator)....................................... 144 MOVW (MOVE Word Data from Program Status Register to Accumulator) ...................... 146 MOVW (MOVE Word Data from Program Counter to Accumulator) .................................. 148 MOVW (MOVE Word Data from Stack Pointer to Accumulator) ........................................ 150 MOVW (MOVE Word Data from Accumulator to Memory)................................................. 152 MOVW (MOVE Word Data from Accumulator to Extra Pointer) ......................................... 154 MOVW (MOVE Immediate Word Data to Extra Pointer) .................................................... 156 MOVW (MOVE Word Data from Accumulator to Index Register)....................................... 158 6.42 6.43 6.44 6.45 6.46 6.47 6.48 6.49 6.50 6.51 6.52 6.53 6.54 6.55 vi 6.56 6.57 6.58 6.59 6.60 6.61 6.62 6.63 6.64 6.65 6.66 6.67 6.68 6.69 6.70 6.71 6.72 6.73 6.74 6.75 6.76 6.77 6.78 6.79 6.80 6.81 6.82 6.83 6.84 6.85 6.86 MOVW (MOVE Immediate Word Data to Index Register) .................................................. 160 MOVW (MOVE Word data from Accumulator to Program Status Register) ....................... 162 MOVW (MOVE Immediate Word Data to Stack Pointer).................................................... 164 MOVW (MOVE Word data from Accumulator to Stack Pointer) ......................................... 166 MULU (MULtiply Unsigned) ................................................................................................ 168 NOP (NoOPeration)............................................................................................................ 170 OR (OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) ............ 172 OR (OR Byte Data of Accumulator and Memory to Accumulator)...................................... 174 ORW (OR Word Data of Accumulator and Temporary Accumulator to Accumulator)........ 176 PUSHW (PUSH Word Data of Inherent Register to Stack Memory) .................................. 178 POPW (POP Word Data of Intherent Register from Stack Memory).................................. 180 RET (RETurn from subroutine)........................................................................................... 182 RETI (RETurn from Interrupt) ............................................................................................. 184 ROLC (Rotate Byte Data of Accumulator with Carry to Left).............................................. 186 RORC (Rotate Byte Data of Accumulator with Carry to Right)........................................... 188 SUBC (SUBtract Byte Data of Accumulator from Temporary Accumulator with Carry to Accumulator)....................................................................................................................... 190 SUBC (SUBtract Byte Data of Memory from Accumulator with Carry to Accumulator)...... 192 SUBCW (SUBtract Word Data of Accumulator from Temporary Accumulator with Carry to Accumulator)....................................................................................................................... 194 SETB (Set Direct Memory Bit) ............................................................................................ 196 SETC (SET Carry flag) ....................................................................................................... 198 SETI (SET Interrupt flag) .................................................................................................... 200 SWAP (SWAP Byte Data Accumulator "H" and Accumulator "L")...................................... 202 XCH (eXCHange Byte Data Accumulator "L" and Temporary Accumulator "L")................ 204 XCHW (eXCHange Word Data Accumulator and Extrapointer) ......................................... 206 XCHW (eXCHange Word Data Accumulator and Index Register) ..................................... 208 XCHW (eXCHange Word Data Accumulator and Program Counter) ................................. 210 XCHW (eXCHange Word Data Accumulator and Stack Pointer) ....................................... 212 XCHW (eXCHange Word Data Accumulator and Temporary Accumulator) ...................... 214 XOR (eXclusive OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) ............................................................................................................................................ 216 XOR (eXclusive OR Byte Data of Accumulator and Memory to Accumulator) ................... 218 XORW (eXclusive OR Word Data of Accumulator and Temporary Accumulator to Accmulator) ............................................................................................................................................ 220 付録 付録 A A.1 A.2 A.3 付録 B 付録 C 索引 ................................................................................................................223 命令一覧表..................................................................................................................... 224 F2MC-8FX CPU の命令概要 .......................................................................................... 225 動作一覧表..................................................................................................................... 228 フラグ変化表 ................................................................................................................. 235 バス動作一覧表 ............................................................................................................. 243 命令マップ..................................................................................................................... 254 .............................................................................................................. 255 vii viii 本版での主な変更内容 ページ 変更内容(詳細は本文を参照してください。 15 第 3 章 レジスタ ( "3.7 ダイレクトバンク " の追加 ) 31 4.2 割込み許可 / 禁止 / 優先順位機構 ■ 割込み許可 / 禁止 / 優先順位機構 ● 周辺の割込み許可フラグによる要求許可チェック ( " 割込みの発生元での " → " 割込み発生元からの " ) 35 4.4 多重割込み ■ 多重割込み ( " A/D " → "A/D コンバータ " ) 37 4.5 リセット動作 ( " 実行します " → " リセット処理を実行します " ) 178 6.65 PUSHW (PUSH Word Data of Inherent Register to Stack Memory) ( " PS で示されるメモリへ dr のワード値を転送します。その後 SP の値から 2 をワード 減算します。" → " SP の値から 2 ワード減算し , その後 SP で示されるメモリへ dr のワード値を転送 します。" ) 178 6.65 PUSHW (PUSH Word Data of Inherent Register to Stack Memory) ( " ((SP)) ← (dr) ( ワード転送 ) " → " (SP) ← (SP) - 2 ( ワード減算 ) " ) ( " (SP) ← (SP) - 2 ( ワード減算 ) " → "((SP)) ← (dr) ( ワード転送 ) " ) 234 付録 A.2 動作一覧表 表 A.2-4 動作一覧表 ( その他 ) ( " (SP) ← (SP)-2, ((SP)) ← (A) " 追加 ) ( " (A) ← ((SP)), (SP) ← (SP)+2 " 追加 ) ( " (SP) ← (SP)-2, ((SP)) ← (IX) " 追加 ) ( " (IX) ← ((SP)), (SP) ← (SP)+2 " 追加 ) 234 付録 A.2 動作一覧表 表 A.2-4 動作一覧表 ( その他 ) ( " No operation " 追加 ) ( " (C) ← 0 " 追加 ) ( " (C) ← 1 " 追加 ) ( " (I) ← 0 " 追加 ) ( " (I) ← 1 " 追加 ) 変更箇所は , 本文中のページ左側の│によって示しています。 ix x 第1章 F2MC-8FX CPU の 概要と構成例 この章では , F2MC-8FX CPU の概要と構成例につ いて説明します。 1.1 F2MC-8FX CPU の概要 1.2 F2MC-8FX CPU を用いたデバイスの構成例 1 第 1 章 F2MC-8FX CPU の 概要と構成例 1.1 F2MC-8FX CPU の概要 F2MC-8FX CPU は , 各種産業用 , OA 用機器などの組込み制御向けに設計された高性 能 8 ビット CPU です。 ■ F2MC-8FX CPU の概要 F2MC-8FX CPU は , 各種産業用 , OA 用機器などの組込み制御向けに設計された高性能 8 ビット CPU です。特に低電圧 , 低消費電力を必要とする分野を対象としています。8 ビット CPU でありながら 16 ビット転送・演算を行うことができ , 制御を行う上で 16 ビットデータを必要とする用途にも適しています。また , F2MC-8FX CPU は F2MC-8L CPU の上位互換 CPU であり , 命令サイクル数の短縮 , 除算命令の強化 , ダイレクト領 域の拡張を行っています。 ■ F2MC-8FX CPU の特長 以下に F2MC-8FX CPU の特長を示します。 • 最小命令実行時間 : 100ns • メモリ空間 : 64K バイト • コントローラ用途に適した命令体系 データタイプ : ビット , バイト , ワード アドレッシングモード : 9 種類 高いコード効率 16 ビットデータ演算 : A, T 間の演算 ビット命令の強化 : セット , リセット , チェック 乗除算命令 : 8 × 8=16 ビット , 16 ÷ 16=16 ビット • 割込みプライオリティレベル : 4 種 2 第 1 章 F2MC-8FX CPU の 概要と構成例 1.2 F2MC-8FX CPU を用いたデバイスの構成例 F2MC-8FX デバイスは , CPU, ROM, RAM および各種周辺をモジュール単位で設計 してありますので , メモリサイズの変更や , 周辺の入替えなどの操作により , アプリ ケーションに適合した品種の作成が行いやすくなっています。 ■ F2MC-8FX CPU を用いたデバイスの構成例 図 1.2-1 に F2MC-8FX CPU を用いたデバイスの構成例を示します。 図 1.2-1 F2MC-8FX CPU を用いたデバイスの構成例 T F 外 IX EP M 部 PC SP C バ 共通端子 2 A ス PR CCR F 御 F MC-8FX CPU X A/Dコンバータ PWM ス 固 有 品種固有端子 端 RAM ROM バ クロック発生部 品 種 8 ALU 部 シリアルポート | 制 2 タイマ/カウンタ 子 部 割込みコントローラ 2 F MC-8FXデバイス 3 第 1 章 F2MC-8FX CPU の 概要と構成例 4 第2章 メモリ空間 この章では , F2MC-8FX CPU のメモリ空間につい て説明します。 2.1 CPU のメモリ空間 2.2 メモリ空間とアドレッシング 5 第 2 章 メモリ空間 2.1 CPU のメモリ空間 F2MC-8FX CPU の管理するデータ , プログラム , I/O はすべて F2MC-8FX CPU の持 つ 64K バイトのメモリ空間に配置されます。CPU は , 16 ビットのアドレスバスで これらのアドレスを示すことにより各リソースをアクセスできます。 ■ CPU のメモリ空間 図 2.1-1 に F2MC-8FX のメモリ空間のアドレス構成を示します。 I/O はアドレスの最下位近くにあり , データ領域はそのすぐ上に配置します。データ領 域は , 用途別にレジスタバンク領域 , スタック領域 , ダイレクト領域などに分割するこ とができます。プログラム領域は正反対にアドレス空間の最上位付近にあり , その中で も最も上位に割込みリセットベクタやベクタコール命令のテーブルなどを配置しま す。 図 2.1-1 F2MC-8FX メモリ空間 FFFFH プログラム領域 データ領域 0000H 6 I/O 第 2 章 メモリ空間 2.2 メモリ空間とアドレッシング F2MC-8FX の持つアドレッシングにおいて , メモリのアクセスに関係するもののな かにはアドレスに依存して最適なものが変わるものもありますので , 適切な命令を 使用することで命令のコード効率を上げることができます。 ■ メモリ空間とアドレッシング F2MC-8FX CPU の持つメモリのアクセスに関係するもののアドレッシングを以下に示 します (〔 〕は 1 バイトを示す ) 。 • ダイレクトアドレッシング : アドレスの下位 8 ビットをオペランドで指定するアドレッシング。オペランドアド レス 00H ∼ 7FH のアクセスは常に 0000H ∼ 007FH となる。オペランドアドレス 80H ∼ FFH のアクセスはダイレクトバンクポインタ (DP) の設定により , 0080H ∼ 047FH へ マッピングされる。 〔構造〕 〔← OP コード→〕〔←下位 8 ビット→〕(〔←オペランドがあれば→〕) • エクステンドアドレッシング : 16 ビット全部をオペランドで指定するアドレッシング 〔構造〕 〔← OP コード→〕〔←上位 8 ビット→〕〔←下位 8 ビット→〕 • ビットダイレクトアドレッシング : アドレスの下位 8 ビットをオペランドで指定するアドレッシング。オペランドアド レス 00H ∼ 7FH のアクセスは常に 0000H ∼ 007FH となる。オペランドアドレス 80H ∼ FFH のアクセスはダイレクトバンクポインタ (DP) の設定により , 0080H ∼ 047FH へ マッピングされる。ビット位置は OP コード内に含まれる 〔構造〕 〔← OP コード : ビット→〕〔←下位 8 ビット→〕 • インデックスアドレッシング : オペランドの 8 ビットをインデックスレジスタ IX に符号付きで加算し , その結果を アドレスとするアドレッシング 〔構造〕 〔← OP コード→〕 〔←オフセット 8 ビット→〕(〔←オペランドがあれば→〕) • ポインタアドレッシング : ポインタ EP の内容をそのままアドレスとするアドレッシング 〔構造〕 〔← OP コード→〕 • 汎用レジスタアドレッシング : 汎用レジスタを指定するアドレッシング。レジスタ番号は OP コードに含まれる 〔構造〕 〔← OP コード : レジスタ→〕 • イミディエートアドレッシング : OP コードに続く 1 バイトをデータとするアドレッシング 〔構造〕 〔← OP コード→〕〔←イミディエートデータ→〕 • ベクタアドレッシング : テーブル番号に対応したテーブルからデータを引き出すアドレッシング。テーブル 番号は OP コードに含まれる 7 第 2 章 メモリ空間 〔構造〕 〔← OP コード : テーブル→〕 • 相対アドレッシング : 現在の PC の内容に対して相対的にアドレスを算出するアドレッシング。相対ジャ ンプ命令とビットチェック命令で使用 〔構造〕 〔← OP コード→〕〔←相対値 8 ビット→〕 図 2.2-1 に各アドレッシングとそれがアクセスするメモリ空間の対応を示します。 図 2.2-1 メモリ空間とアドレッシング FFFFH FFD0H FFC0H プ ロ グ ラ ム 領 域 割込みベクタ CALLVテーブル ⑦⑧ +127バイト ⑨ 外 部 領 域 047FH デ 0200H | タ 0100H 領 レジスタ ⑥ バンク 域 I/O領域 ①②③④⑤ 0000H ①:ダイレクトアドレッシング ②:エクステンドアドレッシング ③:ビットダイレクトアドレッシング ④:インデックスアドレッシング ⑤:ポインタアドレッシング ⑥:汎用レジスタアドレッシング ⑦:イミディエートアドレッシング ⑧:ベクタアドレッシング ⑨:相対アドレッシング 8 -128バイト 第 2 章 メモリ空間 データ領域 2.2.1 F2MC-8FX CPU のデータ領域は用途別に , 以下の 3 つの領域に分割できます。 • 汎用レジスタバンク領域 • スタック領域 • ダイレクト領域 ■ 汎用レジスタバンク領域 F2MC-8FX の汎用レジスタバンク領域は 0100H ∼ 01FFH に割り当ててあり , 汎用レジ スタのレジスタ番号から実際のアドレスへの変換はレジスタバンクポインタ(RP)とOP コードの下位 3 ビットを用いて , 図 2.2-2 に示す変換規則で行います。 図 2.2-2 汎用レジスタ領域の実アドレス変換規則 OPコード下位 RP "0" "0" "0" "0" "0" "0" "0" "1" 発生アドレス A15 A14 A13 A12 A11 A10 A9 A8 R4 R3 R2 R1 A7 A6 A5 R0 A4 A3 b2 b1 b0 A2 A1 A0 ■ スタック領域 F2MC-8FXのスタック領域はサブルーチンコール命令の実行時, 割込み発生時の帰り番 地や専用レジスタの退避用領域として使用します。スタック領域へデータを退避する 際には , 退避する前に 16 ビット長のスタックポインタ (SP) の内容を先に 2 つだけ減ら し , その後 SP が示すアドレスへ退避データを書き込みます。また , スタック領域から データを復帰する際には , まず SP が示すアドレスからデータを復帰し , その後 SP の内 容を後で 2 つだけ増やします。このような理由のため , SP が示しているアドレスには スタックに退避した最も新しいデータを格納してあることになります。これらの様子 を図 2.2-3, 図 2.2-4 に示します。 図 2.2-3 スタック領域への退避の例 実行前 メモリ 実行後 メモリ PUSHW A SP 1235H A ABCDH 67H 1235H 1234H 1233H 1232H SP 1233H A ABCDH 67H 1235H CDH 1234H ABH 1233H 1232H 9 第 2 章 メモリ空間 図 2.2-4 スタック領域からの復帰の例 実行前 メモリ 実行後 メモリ POPW IX SP 5678H IX XXXXH 567BH 567AH DCH 5679H FEH 5678H SP 567AH IX FEDCH 567BH 567AH DCH 5679H FEH 5678H ■ ダイレクト領域 F2MC-8FX のダイレクト領域は , メモリ空間の下位側 , すなわち 0000H ∼ 047FH の 1152 バイトにあり , ダイレクトアドレッシングおよびビットダイレクトアドレッシングで アクセスできます。ダイレクトアドレッシングおよびビットダイレクトアドレッシン グを用いたアクセスで , 一度に使用できるダイレクト領域は , 256 バイトです。0000H ∼ 007FH の 128 バイトは常にダイレクト領域として使用可能です。0080H ∼ 047FH は 128 バイト× 8 のダイレクトバンクであり , ダイレクトバンクポインタ (DP) を設定するこ とにより 1 つのダイレクトバンクをダイレクト領域として使用できます。ダイレクト アドレッシングおよびビットダイレクトアドレッシングのオペランドアドレスから実 アドレスへの変換は , DP を用いて表 2.2-1 に示す変換規則で行います。 ダイレクトアドレッシングおよびビットダイレクトアドレッシングでダイレクト領域 へアクセスすると , 使用するコードが 2 バイトで済みます。このため頻繁にアクセスす る I/O の制御レジスタや , RAM の一部をここに配置しています。 表 2.2-1 ダイレクトアドレッシングおよびビットダイレクトアドレッシングの実アド レス変換規則 オペランドアドレス ダイレクトバンクポインタ (DP) 00H ∼ 7FH 80H ∼ FFH 10 実アドレス 0000H ∼ 007FH 000 0080H ∼ 00FFH 001 0100H ∼ 017FH 010 0180H ∼ 01FFH 011 0200H ∼ 027FH 100 0280H ∼ 02FFH 101 0300H ∼ 037FH 110 0380H ∼ 03FFH 111 0400H ∼ 047FH 第 2 章 メモリ空間 2.2.2 プログラム領域 F2MC-8FX CPU のプログラム領域には , 以下の 2 つがあります。 • ベクタコール命令テーブル • リセット / 割込みベクタテーブル ■ ベクタコール命令テーブル メモリ空間の FFC0H ∼ FFCFH はベクタコール命令のテーブルとして使用されます。 F2MC-8FX のベクタコール命令は , OP コード内に含まれたベクタ番号に対応してこの 領域をアクセスし , そこに書かれた内容をジャンプ先アドレスとしたサブルーチン コールを行います。表 2.2-2 にベクタ番号とジャンプ先アドレステーブルの対応を示し ます。 表 2.2-2 CALLV ジャンプ先アドレステーブル CALLV ジャンプ先アドレステーブル #k アドレス上位側 アドレス下位側 #0 FFC0H FFC1H #1 FFC2H FFC3H #2 FFC4H FFC5H #3 FFC6H FFC7H #4 FFC8H FFC9H #5 FFCAH FFCBH #6 FFCCH FFCDH #7 FFCEH FFCFH ■ リセット / 割込みベクタテーブル メモリ空間の FFCCH ∼ FFFFH は割込みあるいはリセットの開始アドレスを示すテー ブルとして使用されます。各割込み番号あるいはリセットと参照されるテーブルの対 応を表 2.2-3 に示します。 11 第 2 章 メモリ空間 表 2.2-3 リセットと割込みのベクタテーブル テーブルのアドレス 割込み番号 テーブルのアドレス 割込み番号 上位データ 下位データ 上位データ 下位データ FFFEH FFFFH #11 FFE4H FFE5H FFFCH FFFDH #12 FFE2H FFE3H #0 FFFAH FFFBH #13 FFE0H FFE1H #1 FFF8H FFF9H #14 FFDEH FFDFH #2 FFF6H FFF7H #15 FFDCH FFDDH #3 FFF4H FFF5H #16 FFDAH FFDBH #4 FFF2H FFF3H #17 FFD8H FFD9H #5 FFF0H FFF1H #18 FFD6H FFD7H #6 FFEEH FFFFH #19 FFD4H FFD5H #7 FFECH FFFDH #20 FFD2H FFD3H #8 FFEAH FFFBH #21 FFD0H FFD1H #9 FFE8H FFF9H #22 FFCEH FFCFH #10 FFE6H FFE7H #23 FFCCH FFCDH リセット FFFCH : 予約 FFFDH : モード ( 注意事項 ) 実際の番号数は各品種に依存します。 割込み番号 #22 と #23 はベクタコール命令 CALLV #6, CALLV #7 と排他 的に使用してください。 12 第 2 章 メモリ空間 16 ビットデータにおけるメモリ空間配置 2.2.3 F2MC-8FX CPU は , 8 ビット CPU でありながら 16 ビット転送・演算を行うことが できます。以下に , その 16 ビットデータにおけるメモリ空間の配置を示します。 ■ 16 ビットデータにおけるメモリ空間配置 F2MC-8FX はメモリ上の 16 ビットデータを扱うときには , 図 2.2-5 に示すようにアドレ スの値の少ない方に書かれたデータを上位として , その次のアドレスに書かれたデー タを下位として扱います。 図 2.2-5 メモリ上の 16 ビットデータの配置 実行前 メモリ 実行後 MOVW ABCDH,A メモリ ABCFH ABCFH A ABCEH 1234H A ABCDH 1234H ABCCH 34H ABCEH 12H ABCDH ABCCH また , 命令中のオペランドで 16 ビット指定をする場合も同様で , OP コードに近い方か ら上位バイト , その次に下位バイトの順番になります。これはオペランドが図 2.2-6 に 示すようにメモリアドレスを示す場合でも , 16 ビットの即値データの場合でも同じで す。 図 2.2-6 命令中の 16 ビットデータの配置 〔例〕 ・ ・ ・ MOV A, 5678H ; エクステンドアドレス MOVWA, #1234H ; 16ビット既値データ ・ ・ ・ アセンブラにかけると XXXXH XXXXH XXXXH XXXXH ・ ・ ・ ・ ・ ・ XX XX 60 56 78 E4 12 34 XX ; エクステンドアドレス ; 16ビット既値データ さらに , 割込みなどでスタックに退避したデータも同様です。 13 第 2 章 メモリ空間 14 第3章 レジスタ この章では , F2MC-8FX の専用レジスタと汎用レジ スタについて説明します。 3.1 F2MC-8FX のレジスタ 3.2 プログラムカウンタ (PC)/ スタックポインタ (SP) 3.3 アキュムレータ (A)/ テンポラリアキュムレータ (T) 3.4 プログラムステータス (PS) 3.5 インデックスレジスタ (IX)/ エクストラポインタ (EP) 3.6 レジスタバンク 3.7 ダイレクトバンク 15 第 3 章 レジスタ 3.1 F2MC-8FX のレジスタ F2MC-8FX には CPU 内にある用途専用のレジスタとメモリ上にある汎用レジスタの 2 種類のレジスタがあります。 ■ F2MC-8FX の専用レジスタ 専用レジスタは , CPU の内部に専用ハードウェアとして存在し , 使用する用途が CPU のアーキテクチャ上に限定されているものです。 専用レジスタは 7 種類の 16 ビットレジスタによって構成されています。その中で , 一 部のレジスタについては下位 8 ビットのみの使用もできます。 図 3.1-1 に 7 種類の専用レジスタの構成を示します。 図 3.1-1 専用レジスタの構成 初期値 16ビット :プログラムカウンタ 現在の命令格納位置を示します。 FFFDH PC 0000H A :アキュムレータ 演算や転送などの一時記憶レジスタです。 0000H T :テンポラリアキュムレータ アキュムレータとの間で演算を行います。 0000H IX :インデックスレジスタ インデックスアドレスを示すレジスタです。 0000H EP :エクストラポインタ メモリアドレスを示すポインタです。 0000H SP :スタックポインタ 現在のスタック位置を示します。 RP CCR: IL1,0=11 その他フラグ=0 RP : 00000 DP : 000 DP CCR PS :プログラムステータス レジスタバンクポインタ,ダイレクトバンクポインタ, コンディションコードを格納するレジスタです。 ■ F2MC-8FX の汎用レジスタ 汎用レジスタは以下のものが該当します。 • 16 レジスタバンク : 8 ビット長 , データを格納するレジスタ 第 3 章 レジスタ プログラムカウンタ (PC)/ スタックポインタ (SP) 3.2 プログラムカウンタ (PC), スタックポインタ (SP) は用途専用レジスタで CPU 内に あります。 プログラムカウンタ (PC) は , 現在実行中の命令を格納しているアドレスを示してい ます。 スタックポインタ (SP) は , 割込みやスタック退避 / 復帰命令などで参照するデータ のアドレスを保持します。現在のスタックポインタ (SP) の値は , スタック内に退避 した最新のデータが格納されているアドレスになっています。 ■ プログラムカウンタ (PC) 図 3.2-1 にプログラムカウンタ (PC) の動作を示します。 図 3.2-1 プログラムカウンタの動作 実行前 PC メモリ 実行後 1234H PC 1234H 00H メモリ 1235H 命令「NOP」 を実行 1235H XXH 1234H 00H ■ スタックポインタ (SP) 図 3.2-2 にスタックポインタ (SP) の動作を示します。 図 3.2-2 スタックポインタの動作 実行前 A 1234H SP 5678H メモリ 5679H XXH 5678H XXH 実行後 5677H 5676H PUSHW A A 1234H SP 5676H メモリ 5679H XXH 5678H XXH 5677H 34H 5676H 12H 17 第 3 章 レジスタ 3.3 アキュムレータ (A)/ テンポラリアキュムレータ (T) アキュムレータ (A), テンポラリアキュムレータ (T) は用途専用レジスタで CPU 内に あります。 アキュムレータ (A) は , 演算などを行ったときの結果の一時記憶領域として使用しま す。 テンポラリアキュムレータ (T) は , アキュムレータ (A) へのデータ転送の際の旧デー タの一時退避領域として , また , 演算などのオペランドとして使用します。 ■ アキュムレータ (A) 図 3.3-1 に示すように , 16 ビット長の演算では 16 ビットすべてを使用します。8 ビッ ト長の演算では図 3.3-2 に示すように , 下位 8 ビットのみを使用します。 図 3.3-1 アキュムレータ (A) の動作 (16 ビット演算の場合 ) 実行前 A 1234H T 5678H 実行後 A 68ADH T 5678H ADDCW A CF 0 CF 1 図 3.3-2 アキュムレータ (A) の動作 (8 ビット演算の場合 ) 実行前 A 1234H T 5678H CF 1 実行後 ADDC A A 12ADH T 5678H CF 0 ■ テンポラリアキュムレータ (T) 図 3.3-3 に示すように , アキュムレータ (A) へ 16 ビット長のデータ転送を行ったときは , A 内の旧 16 ビットデータすべてをテンポラリアキュムレータ (T) へ転送します。そし て , 図 3.3-4 に示すように , 8 ビット長のデータ転送を行ったときは , A の下位 8 ビット に格納してあった旧 8 ビットデータを T の下位 8 ビットへ転送します。16 ビット長の 演算では , 図 3.3-5 に示すように , 16 ビットすべてをオペランドとして使用します。そ して , 図 3.3-6 に示すように , 8 ビット長の演算では下位 8 ビットのみを使用します。 18 第 3 章 レジスタ 図 3.3-3 アキュムレータ (A) とテンポラリアキュムレータ (T) 間の転送の動作 (16 ビット転送の場合 ) 実行前 A 5678H T XXXXH 実行後 A 1234H T 5678H MOVW A,#1234H 図 3.3-4 アキュムレータ (A) とテンポラリアキュムレータ (T) 間の転送の動作 (8 ビット転送の場合 ) 実行前 A 5678H T XXXXH 実行後 A 5612H T XX78H MOV A,#12H 図 3.3-5 アキュムレータ (A) とテンポラリアキュムレータ (T) 間の演算の動作 (16 ビット演算の場合 ) 実行前 A 1234H T 5678H 1234H+5678H+1 + 実行後 A 68ADH T 5678H ADDCW A CF 0 CF 1 図 3.3-6 アキュムレータ (A) とテンポラリアキュムレータ (T) 間の演算の動作 (8 ビット演算の場合 ) 実行前 A 1234H T 5678H CF 1 34H+78H+1 + ADDC A 実行後 A 12ADH T 5678H CF 0 19 第 3 章 レジスタ テンポラリアキュムレータ (T) の使い方 3.3.1 F2MC-8FX はテンポラリアキュムレータと呼ばれる特殊用途のレジスタがあります。 ここではこのレジスタの動作について解説します。 ■ テンポラリアキュムレータ (T) の使い方 F2MC-8FX は各種の 2 項演算命令 , 一部の転送命令 , 16 ビットデータ演算用にテンポラ リアキュムレータ (T) を備えています。T へ直接データを転送する命令はありませんが , アキュムレータ (A) へのデータ転送命令の実行に先立ち元の A の値を T へ転送します ので , A-T 間の演算を行う場合には 2 回 A への転送命令を行ったあとに実行すればよ いことになります。すべての命令で T へ自動的に転送が行われるわけではないので , 実 際に転送を行う命令の詳細は命令一覧表の TL, TH 欄を参考にしてください。 以下の例は 1280H 番地に格納した 16 ビットデータと 0042H 番地に格納した 16 ビット データのキャリー付きの加算を行うものです。 MOVW A, 0042H MOVW A, 1280H ADDCW A - 上の例を実行したときの A と T の動作を図 3.3-7 に示します。 図 3.3-7 ワードデータ処理におけるアキュムレータ (A) とテンポラリアキュムレータ (T) の動作例 実行前 最終結果 A XXXXH A 1234H A 5678H + A 68ACH T XXXXH T XXXXH T 1234H CF 0 T 1234H RAM 1281H 78H 1280H 56H ① 1281H 78H 1280H 56H RAM ② 1281H 78H 1280H 56H RAM ③ 1281H 78H 1280H 56H ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 20 RAM 0043H 34H 0043H 34H 0043H 34H 0043H 34H 0042H 12H 0042H 12H 0042H 12H 0042H 12H 第 3 章 レジスタ アキュムレータ (A) とテンポラリアキュムレータ (T) のバイトデータの転送・演算 3.3.2 アキュムレータ (A) への転送がバイト単位であるときは転送データを AL に格納しま すが , テンポラリデータ (T) への自動転送もバイト単位で行われ , 元の AL の内容の みを TL へ格納します。A も T も上位 8 ビットは転送の影響を受けません。また , A-T 間のバイト演算は下位 8 ビットのみを使用し , A も T も上位 8 ビットは演算の 影響を受けません。 ■ バイトデータ処理におけるアキュムレータ (A) とテンポラリアキュムレータ (T) の 動作例 以下の例は 1280H 番地に格納した 8 ビットデータと 0042H 番地に格納した 8 ビットデー タのキャリー付きの加算を行うものです。 MOV A, 0042H MOV A, 1280H ADDC A - 上の例を実行したときの A と T の動作を図 3.3-8 に示します。 図 3.3-8 バイトデータ処理におけるアキュムレータ (A) とテンポラリアキュムレータ (T) の動作例 実行前 最終結果 A ABXXH A ABEFH A AB56H T CDXXH T CDXXH T CDEFH RAM RAM T CDEFH 0042H ・・・ EFH 56H ・・・ 0042H 1280H ・・・ EFH 56H ・・・ 0042H ・・・ EFH CF 1 ③ 1280H 56H ・・・ ・・・ ・・・ 0042H AB 46H RAM ② 1280H 56H A RAM ① 1280H *1 *2 + EFH *1:Tへの自動転送時にTHが変化していないことに注意してください。 *2:AL,TL,CFの加算の結果でAHが変化していないことに注意してください。 21 第 3 章 レジスタ ■ テンポラリアキュムレータ (T) から直接転送する場合 基本的に , テンポラリアキュムレータ (T) はアキュムレータ (A) の一時記憶用ですので , ここから直接メモリへ転送することはできませんが , 例外として A をポインタとして 使用することで T の内容をメモリへ退避することができます。図 3.3-9 にその例を示し ます。 図 3.3-9 テンポラリアキュムレータ (T) から直接転送する場合の例 【例】 MOVM @A , T 実行前 実行後 A 1234H A 1234H T CDEFH T CDEFH RAM 22 RAM 1235H XXH 1235H EFH 1234H XXH 1234H CDH 第 3 章 レジスタ 3.4 プログラムステータス (PS) プログラムステータス (PS) は 16 ビット長の用途専用レジスタで , CPU 内にありま す。上位バイトのうち , 上位 5 ビットはレジスタバンクポインタ , 下位 3 ビットはダ イレクトバンクポインタです。下位バイトはコンディションコードレジスタとなっ ています。プログラムステータス (PS) 上位バイト (RP, DP) は , アドレス 0078H へ のアクセスによりリード・ライトが可能です。 ■ プログラムステータス (PS) の構造 図 3.4-1 に , プログラムステータスの構造を示します。 RP は現在使用しているレジスタバンクのアドレスを示すもので , RP の内容と実アドレ スの関係は図 3.4-2 に示す変換規則になっています。 DP はダイレクトアドレッシングおよびビットダイレクトアドレッシングに使用する メモリ領域 ( ダイレクトバンク ) を示します。ダイレクトアドレッシングおよびビット ダイレクトアドレッシングのオペランドアドレスから実アドレスへの変換は , DP を用 いて表 3.4-1 に示す変換規則で行います。 CCR は演算の結果や転送データの内容を示すビットと , 割込み時の CPU の動作を制御 するビットがあります。 図 3.4-1 プログラムステータス (PS) の構造 15 PS 14 13 12 11 10 9 RP DP RP DP 8 7 6 5 4 3 2 1 0 H I IL1,0 N Z V C CCR 図 3.4-2 汎用レジスタ領域の実アドレス変換規則 OPコード下位 RP "0" "0" "0" "0" "0" "0" "0" "1" 発生アドレス A15 A14 A13 A12 A11 A10 A9 A8 R4 R3 R2 R1 A7 A6 A5 R0 A4 A3 b2 b1 b0 A2 A1 A0 23 第 3 章 レジスタ 表 3.4-1 ダイレクトアドレッシングおよびビットダイレクトアドレッシングの 実アドレス変換規則 オペランドアドレス ダイレクトバンクポインタ (DP) 00H ∼ 7FH 実アドレス 0000H ∼ 007FH 80H ∼ FFH 000 0080H ∼ 00FFH 001 0100H ∼ 017FH 010 0180H ∼ 01FFH 011 0200H ∼ 027FH 100 0280H ∼ 02FFH 101 0300H ∼ 037FH 110 0380H ∼ 03FFH 111 0400H ∼ 047FH ■ プログラムステータス (PS) のフラグ 以下に , プログラムステータスのフラグについて説明します。 ● H フラグ 演算の結果 , ビット 3 からビット 4 へのキャリーやボローが発生した場合に 1 になり , それ以外は 0 になります。このフラグは十進補正命令用ですので , 加減算以外の用途に 使用した場合の動作は保証できません。 ● I フラグ このフラグが 1 のとき割込みを許可し , 0 のとき割込みを禁止します。リセット時は 0 となり , 割込み禁止状態になります。 ● IL1, IL0 現在許可している割込みのレベルを示します。このビットが示す値より少ない値の割 込み要求があった場合のみ , 割込み処理を行います。 IL1 IL0 割込みレベル 強弱 0 0 0 最強 0 1 1 1 0 2 1 1 3 最弱 ● N フラグ 演算の結果 , 最上位ビットが 1 のときに 1 になり , 0 のとき 0 になります。 ● Z フラグ 演算の結果 , 0 であれば 1 になり , それ以外のとき 0 になります。 24 第 3 章 レジスタ ● V フラグ 演算の結果 , 2 の補数のオーバフローが発生したときに 1 になり , 発生しなかったとき 0 になります。 ● C フラグ 演算の結果 , バイト時にはビット 7 から , ワード時にはビット 15 からキャリーやボロー が発生した場合に 1 になり , それ以外は 0 になります。また , シフト命令ではシフトア ウトした値になります。 ■ レジスタバンクポインタ・ダイレクトバンクポインタへのアクセス アドレス 0078H は , プログラムステータス (PS) の上位バイト (PR, DP) のミラーアドレ スです。レジスタバンクポインタおよびダイレクトバンクポインタは , PS を操作する 命令 (MOVW A,PS または MOVW PS,A) 以外に 0078H 番地へのアクセスによりリード・ ライトが可能です。 25 第 3 章 レジスタ インデックスレジスタ (IX)/ エクストラポインタ (EP) 3.5 インデックスレジスタ (IX), エクストラポインタ (EP) は 16 ビット長の用途専用レジ スタで CPU 内にあります。 インデックスレジスタ (IX) は , 8 ビット長のオフセット値を符号付き加算すること で , オペランドの格納しているアドレスを生成します。 エクストラポインタ (EP) は , オペランドの格納しているアドレスを示します。 ■ インデックスレジスタ (IX) 図 3.5-1 にインデックスレジスタの動作について示します。 図 3.5-1 インデックスレジスタ (IX) の動作 実行前 メモリ A XXXXH IX 5678H 実行後 56CFH 56CEH 34H 56CDH 12H 56CCH A 1234H IX 5678H MOVW A,@IX+ 55H 5678H+0055H =56CDH メモリ 56CFH 56CEH 34H 56CDH 12H 56CCH + ■ エクストラポインタ (EP) 図 3.5-2 にエクストラポインタの動作について示します。 図 3.5-2 エクストラポインタ (EP) の動作 実行前 A XXXXH EP 5678H メモリ 5679H 34H 5678H 12H 5677H 5676H 26 実行後 MOVW A,@EP A 1234H EP 5678H メモリ 5679H 34H 5678H 12H 5677H 5676H 第 3 章 レジスタ 3.6 レジスタバンク レジスタバンクは 8 ビット長の汎用レジスタで , メモリ上のレジスタバンク内にあ ります。1 バンクあたり 8 個のレジスタがあり , 全部で 32 バンクまで拡張すること ができます。現在使用しているバンクはレジスタバンクポインタ (RP) で示します。 ■ レジスタバンクレジスタ 図 3.6-1 にレジスタバンクの構成を示します。 図 3.6-1 レジスタバンクの構成 ここのアドレス=0100H+8*(RP) R0 R1 R2 R3 R4 R5 R6 R7 最大32バンク メモリ領域 27 第 3 章 レジスタ 3.7 ダイレクトバンク ダイレクトバンクはダイレクト領域のうち 0080H ∼ 047FH にあり , 128 バイト× 8 のバンクで構成されます。オペランドアドレス 80H ∼ FFH のダイレクトアドレッシ ングおよびビットダイレクトアドレッシングを用いたアクセスは , ダイレクトバン クポインタ (DP) の値により 8 つのダイレクトバンクへ拡張することができます。現 在使用しているダイレクトバンクはダイレクトバンクポインタ (DP) で示します。 ■ ダイレクトバンク 図 3.7-1 にダイレクトバンクの構成を示します。 オペランドアドレス 80H ∼ FFH のダイレクトアドレッシングおよびビットダイレクト アドレッシングを用いたアクセスは , ダイレクトバンクポインタ (DP) の値により 8 つ のダイレクトバンクへ拡張することができます。オペランドアドレス 00H ∼ 7FH のダ イレクトアドレッシングおよびビットダイレクトアドレッシングを用いたアクセスは ダイレクトバンクポインタ (DP) の影響を受けず , 0000H ∼ 007FH の固定ダイレクト領 域へアクセスします。 図 3.7-1 ダイレクトバンクの構成 メモリ ダイレクトバンク7 (DP=111) 047FH 0400H ダイレクトバンク1 (DP=001) 017FH 0100H FFH 80H ダイレクトバンク0 (DP=000) 00FFH 0080H 7FH 00H 固定ダイレクト領域 007FH 0000H ダイレクトアドレッシング および ビットダイレクトアドレッシング におけるオペランドアドレス 28 ダイレクト領域 第4章 割込み処理 この章では , F2MC-8FX の割込み処理の機能と動作 について説明します。 4.1 割込み動作概要 4.2 割込み許可 / 禁止 / 優先順位機構 4.3 割込み処理プログラムの作成方法 4.4 多重割込み 4.5 リセット動作 29 第 4 章 割込み処理 4.1 割込み動作概要 F2MC-8FX の割込みは以下のような特長があります。 • 割込みレベルは 4 種 • すべてマスク可能な割込み • 割込みベクタに記載したアドレスにジャンプするベクタジャンプ形式 ■ 割込み動作概要 F2MC-8FX では割込みは以下の順に伝達され , 処理されます。 1. 周辺の内部で割込み要因が発生します。 2. 周辺内の割込み許可ビットを参照し割込み許可になっていれば , 周辺から割込みコ ントローラへ割込み要求を発生します。 3. 割込み要求を受け取った割込みコントローラは , 同時に要求のあった割込みの優先 順位を判定した上で該当する割込みに対応する割込みレベルを CPU へ転送します。 4. CPUは割込みコントローラから要求のあった割込みレベルをプログラムステータス レジスタ内の IL ビットと比較します。 5. 比較の結果が現在の割込み処理レベルより優先順位が高い場合のみ , 同じプログラ ムステータスレジスタ内の I フラグの内容をチェックします。 6. 5. のチェックの結果 I フラグが割込み許可状態である場合のみ , IL ビットの内容を 要求されたレベルに設定し , 現在実行中の命令の実行が終了し次第割込み処理を行 い , 制御を割込み処理ルーチンへ移します。 7. ユーザの割込み処理ルーチン内のソフトウェアで1.で発生した割込み要因をクリア することで割込み処理が終了します。 図 4.1-1 に F2MC-8FX の割込み動作の流れを示します。 図 4.1-1 F2MC-8FX の割込み動作概要図 内 部 バ ス 2 F MC-8FX CPU I IL ⑥ ④ チェック 比較器 ⑤ ③ 周辺 ⑦ 30 割込み要求 許可ビット 割込み要求 フラグ AND ① 周辺 ② レ ベ ル 比 較 器 割込み コントローラ 第 4 章 割込み処理 4.2 割込み許可 / 禁止 / 優先順位機構 F2MC-8FX では割込み要求を以下の 3 種類の許可 / 禁止機構を経由して CPU へ伝達 します。 • 周辺の割込み許可フラグによる要求許可チェック • 割込みレベル判定部によるレベルチェック • CPU の I フラグによる割込み起動のチェック 周辺で発生した割込みは , 割込み優先順位機構により優先するレベルを決定し CPU へ伝達します。 ■ 割込み許可 / 禁止 / 優先順位機構 ● 周辺の割込み許可フラグによる要求許可チェック 割込み発生元からの要求の許可 / 禁止を行う機構です。周辺の割込み許可フラグが許 可になっていれば周辺から割込みコントローラへ割込み要求信号を伝達します。 この機能は周辺単位で割込みのありなしを制御するためのもので , 周辺の動作の単位 でソフトウェアを記述した場合に , ほかの周辺割込みの許可 / 禁止に注意する必要がな いため特に有効です。 ● 割込みレベル判定部によるレベルチェック この部分は割込みのレベル判定を行う部分です。周辺が発生した割込みに対応した割 込みレベルを CPU 内の IL ビットと比較し , 値が IL ビットより少なければ割込み要求 を起こす資格があると判定します。複数ある割込みの間に優先順位を付けたい場合に 有効です。 ● CPU の I フラグによる割込み起動のチェック I フラグは割込み全体に関する許可 / 禁止を行う機構です。割込み要求があって , かつ CPU の I フラグが割込み許可に設定してあれば , CPU は命令実行の流れを一時中断し て割込み処理を行います。割込み全体を一時禁止する際に有効です。 31 第 4 章 割込み処理 ■ 周辺の割込み要求 周辺で発生した割込みは , 図 4.2-1 で示すように割込みコントローラの内部でその割込 みに対応する割込みレベルレジスタにソフトウェアで設定した値に変換されて CPU へ 伝達します。 割込みのレベルは数値の低い方が高いレベル , 数値の高い方が低いレベルと定義され ています。 図 4.2-1 周辺の割込み要求と割込みレベルの関係 CPUへ 周辺#1 割込み要求 F/F 1H 2H 周辺#2 0H ・・・ ・・・ 32 ・・・ ・・・ 周辺#n 3H 割込み コントローラ 割込みレベルレジスタ 第 4 章 割込み処理 4.3 割込み処理プログラムの作成方法 F2MC-8FX で用いる周辺の割込み要求は , 要求の発生はハードウェアで , 要求のクリ アはソフトウェアで行うことが基本となっています。 ■ 割込み処理プログラムの作成方法 割込み処理のための制御の流れは以下のようになります。 1. 周辺の初期化を行って周辺を動作させます。 2. 割込みが発生するのを待ちます。 3. 割込みが発生すると , 割込みを受け付ける状態になっていれば割込み処理を行い , 割込み処理ルーチンへ分岐します。 4. 割込み処理ルーチンの先頭で割込み要因をクリアするようにソフトウェアを組み ます。これは割込みを起こした周辺が割込み処理プログラム中で再割込みを発生す るような用途のためです。 5. 割込み処理を行って必要なデータ転送を行います。 6. 割込み復帰命令を使用して割込み処理から復帰します。 7. 再び割込みが発生するまでメインプログラムを実行し続けます。 標準的な割込み処理の流れは図 4.3-1 のようになります。番号は上で示したものに対応 します。 図 4.3-1 割込み処理の流れ メインプログラム ①周辺初期化 ハードウェアで 周辺の割込み要求② ③ FFをセット, 割込み要求発生 ⑦ 割込みレベルを ILビットへ 割込み処理プログラム ④割込み要因のクリア:同一周辺からの →同一レベルの 多重割込みを認 多重割込みの防止 めるため ⑤割込み処理プログラム:実際の処理 データの転 送など ⑥割込み処理からの復帰 割込み発生の受付けから処理プログラムへ制御が渡るまでの時間 ( 図 4.3-1 の例ですと ③の部分 ) は 9 命令サイクルです。さらに , 割込みを受け付ける点は各命令の最終サイ クルだけですので , 割込みが発生してからその割込み処理ルーチンに制御が渡るまで は図 4.3-2 に示す時間がかかります。 最も長いものは DIVU 命令実行開始直後の割込み要求発生の場合で , このときは 17+9=26 命令サイクルかかることになります。 33 第 4 章 割込み処理 図 4.3-2 割込み応答時間 CPUの動作→ 割込み待ち時間→ 通常命令実行 サンプル待ち(a) ↑割込み要求発生 割込みハンドリング 9命令サイクル(b) 割込み処理プログラム は命令最終サイクル, ここで割込みをサンプル (注意事項) 割込み発生から処理ルーチンに制御が渡るまでは,(a)+(b)命令サイクルの時間がかかります。 34 第 4 章 割込み処理 4.4 多重割込み F2MC-8FX はマスク可能な割込みに最大 4 種のレベルをもつことができます。これ を利用することで周辺などの割込みに優先順位を付けることができます。 ■ 多重割込み 多重割込みの具体例を以下に示します。 • A/D コンバータよりタイマの割込みを優先させたいとき START MOV ADIL, #2 A/D コンバータの割込みレベルを 2 にします MOV TMIL, #1 タイマの割込みレベルを 1 にします ADIL も TMIL も割込みコントローラ内の IL ビットです CALL STAD A/D コンバータを起動させます CALL STTM タイマを起動させます . . . というプログラムを起動すると , 時間が経つと A/D コンバータとタイマから割込みが 発生します。このとき , A/D コンバータの割込み処理中にタイマ割込みが発生すると , 図 4.4-1 のようなシーケンスで処理を行います。 図 4.4-1 多重割込み例 メインプログラム A/D割込み処理 ・・・ IL=2 タイマ割込み処理 IL=1 周辺初期化① ③タイマ割込み発生 A/D割込み発生② ④タイマ割込み処理 中断 再開 ⑤タイマ割込み復帰 ⑥A/D割込み処理 メイン再開⑧ ⑦タイマ割込み復帰 ・・・ A/D 割込み処理開始時に CPU の PS レジスタ内の IL ビットが自動的に要求と同じ値 ( ここでは 2) になりますので , A/D の割込み要求を落とさなくとも A/D 割込み処理中 はレベル 1 あるいはレベル 0 の割込み要求が発生すると , この割込み処理を優先して行 います。また , A/D 割込みの一部で自分以上の優先順位の割込みさえも一時的に禁止し たいときは , CPU の PS レジスタ内の I フラグを割込み禁止に設定するか , IL ビットを 0 にすることもできます。 各割込み処理が終了し , 復帰命令で割り込まれた処理へ制御を返すと , PS レジスタは スタック内に退避しておいた値になりますので , IL ビットの値は中断前の値となりま す。 35 第 4 章 割込み処理 実際のコーディングの際には各品種のハードウェアマニュアルを参照し , 割込みコン トローラや各種周辺のアドレスやサポートする割込みの種類などを確認してくださ い。 36 第 4 章 割込み処理 4.5 リセット動作 F2MC-8FX はリセットが発生するとプログラムステータスのフラグを 0, IL ビットを 11 にし , 解除するとリセットベクタ : FFFEH , FFFFH に書かれた開始アドレスから リセット処理を実行します。 ■ リセット動作 リセットによる影響は以下のとおりです。 • アキュムレータ , テンポラリアキュムレータ : 0000H に初期化 • スタックポインタ : 0000H に初期化 • エクストラポインタ , インデックスレジスタ : 0000H に初期化 • プログラムステータス : フラグは 0, IL ビットは 11, RP ビットは 00000, DP ビット は 000 に初期化 • プログラムカウンタ : リセットベクタの値 • RAM ( 汎用レジスタを含む ) : リセット前の値を保存 • 周辺 : 基本的に停止 • そのほか : 各端子の状況は各品種のマニュアルを参照してください。 そのほか , 特殊なリセット発生条件に対する各レジスタの値 , 動作の継続などの詳細は 各品種のマニュアルを参照してください。 37 第 4 章 割込み処理 38 第5章 CPU ソフトウェア アーキテクチャ この章では , F2MC-8FX CPU の命令について説明 します。 5.1 アドレッシングの種類 5.2 特殊な命令 39 第 5 章 CPU ソフトウェア アーキテクチャ 5.1 アドレッシングの種類 F2MC-8FX には以下に述べる 10 種のアドレッシングがあります。 • ダイレクトアドレッシング (dir) • エクステンドアドレッシング (ext) • ビットダイレクトアドレッシング (dir:b) • インデックスアドレッシング (@IX+off) • ポインタアドレッシング (@EP) • 汎用レジスタアドレッシング (Ri) • イミディエートアドレッシング (#imm) • ベクタアドレッシング (#k) • 相対アドレッシング (rel) • インヘレントアドレッシング ■ ダイレクトアドレッシング (dir) 命令表中で "dir" と示したアドレッシングで , ダイレクト領域 0000H ∼ 047FH をアクセ スする際に使用します。このアドレッシングでは , オペランドアドレスが 00H ∼ 7FH の場合 , 0000H ∼ 007FH にアクセスします。また , オペランドアドレスが 80H ∼ FFH の 場合 , ダイレクトバンクポインタ DP の設定により 0080H ∼ 047FH にアクセスがマッピ ングできます。 【例】 DP MOV 92H,A 001B 0112H 45H A 45H ■ エクステンドアドレッシング (ext) 命令表中で "ext" と示したアドレッシングで , 64K バイト全体の領域をアクセスする際 に使用します。このアドレッシングでは第 1 オペランドでアドレスの上位 1 バイトを , 第 2 オペランドでアドレスの下位 1 バイトを指定します。 ■ ビットダイレクトアドレッシング (dir:b) 命令表中で "dir:b" と示したアドレッシングで , ダイレクト領域 0000H ∼ 047FH をビッ ト単位でアクセスする際に使用します。このアドレッシングでは , オペランドアドレス が 00H ∼ 7FH の場合 , 0000H ∼ 007FH にアクセスします。また , オペランドアドレスが 80H ∼ FFH の場合 , ダイレクトバンクポインタ DP の設定により 0080H ∼ 047FH にアク セスがマッピングできます。指定したアドレス内のビットの位置は命令コードの下位 3 ビットの値で指定します。 40 第 5 章 CPU ソフトウェア アーキテクチャ 7 6 5 4 3 2 1 0 SETB 34H:2 【例】 0034H XXXB DP ××××× 1 ××B ■ インデックスアドレッシング (@IX+off) 命令表中で "@IX+off" と示したアドレッシングで , 64K バイト全体の領域をアクセスす る際に使用します。このアドレッシングでは第 1 オペランドの内容を符号拡張した上 でインデックスレジスタ IX に加算してその結果をアドレスとします。 【例】 IX MOVW A,@IX+5AH 27A5H + 2800H 34H 27FFH 12H A 1234H ■ ポインタアドレッシング (@EP) 命令表中で "@EP" と示したアドレッシングで , 64K バイト全体の領域をアクセスする 際に使用します。このアドレッシングではエクストラポインタ EP の内容をアドレスと します。 【例】 MOVW A,@EP EP 27A5H 27A6H 34H 27A5H 12H A 1234H ■ 汎用レジスタアドレッシング (Ri) 命令表中で "Ri" と示したアドレッシングで , レジスタバンク領域をアクセスする際に 使用します。このアドレッシングではアドレスの上位 1 バイトは "01" に固定し , 下位 1 バイトをレジスタバンクポインタ RP の内容と命令の下位 3 ビットから作成し , この アドレスに対してアクセスを行います。 【例】 RP MOV A,R2 01010B 0152H ABH A ABH 41 第 5 章 CPU ソフトウェア アーキテクチャ ■ イミディエートアドレッシング (#imm) 命令表中で "#imm" と示したアドレッシングで , 即値データを必要とする際に使用しま す。このアドレッシングではオペランドがそのまま即値データになります。バイト / ワードの指定は命令コードにより決まります。 【例】 MOV A,#56H A 56H ■ ベクタアドレッシング (#k) 命令表中で "#k" と示したアドレッシングで , テーブル内に登録したサブルーチンアド レスに分岐するときに使用します。このアドレッシングでは命令コード内に "#k" の情 報を含み , 表 5.1-1 に示す対応でテーブルのアドレスを作成します。 表 5.1-1 ジャンプ先アドレステーブル #k アドレステーブル ( ジャンプ先上位アドレス : 下位アドレス ) 0 FFC0H: FFC1H 1 FFC2H: FFC3H 2 FFC4H: FFC5H 3 FFC6H: FFC7H 4 FFC8H: FFC9H 5 FFCAH: FFCBH 6 FFCCH: FFCDH 7 FFCEH: FFCFH 【例】 CALLV #5 (変換) 42 FFCAH FEH FFCBH DCH PC FEDCH 第 5 章 CPU ソフトウェア アーキテクチャ ■ 相対アドレッシング (rel) 命令表の中で "rel" と示したアドレッシングで , プログラムカウンタ PC の前後 128 バ イトの領域に分岐する際に使用します。このアドレッシングではオペランドの内容を PC に符号付きで加算し , その結果を PC に格納します。 【例】 旧PC BNE *+FEH 9ABCH + 9ABCH+FFFEH 新PC 9ABAH この例では結局 BNE の命令コードが格納されているアドレスへジャンプするので , 結 果として無限ループになる。 ■ インヘレントアドレッシング 命令表の中でオペランドを持たないアドレッシングで , 命令コードで決まる動作を行 う際に使用します。このアドレッシングでは動作が命令ごとに異なります。 【例】 NOP 旧PC 9ABCH 新PC 9ABDH 43 第 5 章 CPU ソフトウェア アーキテクチャ 5.2 特殊な命令 F2MC-8FX には , 以下の 6 つの特殊な命令があります。 • JMP @A • MOVW A, PC • MULU A • DIVU A • XCHW A, PC • CALLV #k ■ JMP @A この命令はアキュムレータAの内容をアドレスとしてそこへ分岐するというものです。 N 個のジャンプ先をテーブル状に並べておき , その内容のいずれか 1 つを選択して A に転送し , この命令を実行することで N 分岐処理が行えます。 【例】 JMP @A 実行前 A 旧PC 実行後 1234H A 1234H ××××H 新PC 1234H ■ MOVW A, PC この命令は「JMP @A」と反対の動作を行うものです。すなわち , PC の内容をアキュ ムレータ A に格納するものです。メインルーチン内でこの命令を実行しておき , 特定 のサブルーチンを呼び出すような設定において , そのサブルーチン内で A の内容が決 められた値になっていることを確認することで , 予想以外の部分からの分岐でないこ とが識別でき , 暴走判断に使用することができます。 【例】 MOVW A, PC 実行前 A 旧PC 実行後 ××××H A 1234H 1234H 新PC 1234H この命令を実行したときの A の内容はこの命令のオペコードが格納されているアドレ スではなく , 次の命令が格納されているアドレスと同じ値になります。したがって , 上 の例では A に格納した値「1234H」は「MOVW A, PC」の次のオペコードが格納されて いるアドレスに一致します。 44 第 5 章 CPU ソフトウェア アーキテクチャ ■ MULU A この命令は AL の 8 ビットと TL の 8 ビットを符号なしで掛け合わせ , 16 ビット長の結 果を A に格納します。T の内容は変化しません。演算に関して , 元の AH, TH の内容は 使用していません。フラグは変化しませんので , 乗算の結果によって分岐するなどのと きには注意が必要です。 【例】 MULU A,T 実行前 実行後 A 5678H A 1860H T 1234H T 1234H ■ DIVU A この命令は T の 16 ビットを A の 16 ビットで符号なしデータとして割り , 結果を 16 ビットとして A に , 余りも 16 ビットとして T に格納するものです。 A が 0000H の場合 , 0 除算として Z フラグが 1 になります。このときの演算結果は , 保証されません。 【例】 DIVU A 実行前 実行後 A 1234H A 0004H T 5678H T 0DA8H ■ XCHW A, PC この命令はアキュムレータ A とプログラムカウンタ PC の内容を交換するもので , 結果 として元の A の内容が示す番地へ分岐し , 現 A は「XCHW A, PC」の命令コードが格 納されているアドレスの次のアドレスの値になります。この命令は特にメインルーチ ンでテーブルを指定し , サブルーチンでそれを使用する場合に有効です。 【例】 XCHW A, PC 実行前 実行後 A 5678H A 1235H PC 1234H PC 5678H 45 第 5 章 CPU ソフトウェア アーキテクチャ この命令を実行したときの A の内容はこの命令の命令コードが格納されているアドレ スではなく , 次の命令が格納されているアドレスと同じ値になります。したがって , 上 の例では A の値「1235H」は「XCHW A, PC」の次の命令のコードが格納されているア ドレスに一致します。そのため , 「1234H」でなく , 「1235H」となっています。 アセンブラ表記上ではこの命令は図 5.2-1 のような使い方をします。 図 5.2-1 XCHW A, PC 使用例 〔メインルーチン〕 〔サブルーチン〕 … MOVW A,#PUTSUB PUTSUB XCHW A,EP XCHW A,PC PUSHW A DB 'PUT OUT DATA',EOL PTS1 MOV A,@EP MOVW A,#1234H INCW EP … MOV IO,A … ここでテーブルデータを出力 CMP A,#EOL BNE PTS1 POPW A XCHW A,EP JMP @A ■ CALLV #k テーブル内に登録したサブルーチンアドレスに分岐するときに使用します。このアド レッシングでは命令コード内に "#k" の情報を含み , 表 5.2-1 に示す対応でテーブルのア ドレスを作成します。現在のプログラムカウンタの内容をスタックへ退避したのち , テーブルに記載したアドレスへ分岐します。1 バイトの命令ですので , 頻繁に使用する サブルーチンに対してこの命令を使用することで , プログラム全体のサイズを縮小す ることができます。 表 5.2-1 ジャンプ先アドレステーブル 46 #k アドレステーブル ( ジャンプ先上位アドレス : 下位アドレス ) 0 FFC0H: FFC1H 1 FFC2H: FFC3H 2 FFC4H: FFC5H 3 FFC6H: FFC7H 4 FFC8H: FFC9H 5 FFCAH: FFCBH 6 FFCCH: FFCDH 7 FFCEH: FFCFH 第 5 章 CPU ソフトウェア アーキテクチャ 【例】 CALLV #3 実行前 PC 5678H SP 1234H 実行後 (-2) PC FEDCH SP 1232H FFC7H DCH FFC7H DCH FFC6H FEH FFC6H FEH … … … … 1233H ××H 1233H 79H 1232H ××H 1232H 56H 47 第 5 章 CPU ソフトウェア アーキテクチャ 48 第6章 実行命令細則 この章では , アセンブラで使用される各実行命令に ついて , リファレンス形式で説明します。 なお , 各実行命令は , アルファベット順に掲載しま す。 実行命令ごとに説明されている各項目の概要や記号 ( 略称 ) の意味などについては , 「第 5 章 CPU ソフトウェア アーキ テクチャ」を参照してください。 49 第 6 章 実行命令細則 6.1 ADDC (ADD Byte Data of Accumulator and Temporary Accumulator with Carry to Accumulator) AL と TL のバイトデータを加算して , さらに最下位ビットにキャリーを加算し , そ の結果を AL に戻します。また , AH は変化しません。 ■ ADDC (ADD Byte Data of Accumulator and Temporary Accumulator with Carry to Accumulator) オペレーション (AL) ← (AL) + (TL) + (C) ( バイト加算 , キャリー付き ) アセンブラ形式 ADDC A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の AL が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 00H ならば 1 になり , それ以外は 0 になります V : 演算の結果オーバフローが発生したときに 1 になり , それ以外は 0 になります C : 演算の結果キャリーが発生したときに 1 になり , それ以外は 0 になります 実行サイクル数 : 1 バイト数 : 1 オペコード : 22 50 第 6 章 実行命令細則 実行例 : ADDC A メモリ FFFFH 12 34 T 56 78 A 12 AC T 56 78 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 1 0 1 0 (実行後) 51 第 6 章 実行命令細則 6.2 ADDC (ADD Byte Data of Accumulator and Memory with Carry to Accumulator) AL と EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイトデータを加算 して , さらに最下位ビットにキャリーを加算し , その結果を AL に戻します。また , AH は変化しません。 ■ ADDC (ADD Byte Data of Accumulator and Memory with Carry to Accumulator) オペレーション (AL) ← (AL) + (EA) + (C) ( バイト加算 , キャリー付き ) アセンブラ形式 ADDC A, EA コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の AL が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 00H ならば 1 になり , それ以外は 0 になります V : 演算の結果オーバフローが発生したときに 1 になり , それ以外は 0 になります C : 演算の結果キャリーが発生したときに 1 になり , それ以外は 0 になります 実行サイクル数 / バイト数 / オペコード EA 52 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 24 25 26 27 28 ∼ 2F 第 6 章 実行命令細則 実行例 : ADDC A, #25H メモリ FFFFH メモリ FFFFH 34 A T T IX IX 12 5A → 12 → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 1 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 53 第 6 章 実行命令細則 6.3 ADDCW (ADD Word Data of Accumulator and Temporary Accumulator with Carry to Accumulator) A と T のワードデータを加算して , さらに最下位ビットにキャリーを加算し , その結 果を A に戻します。 ■ ADDCW (ADD Word Data of Accumulator and Temporary Accumulator with Carry to Accumulator) オペレーション (A) ← (A) + (T) + (C) ( ワード加算 , キャリー付き ) アセンブラ形式 ADDCW A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の A が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 0000H ならば 1 になり , それ以外は 0 になります V : 演算の結果オーバフローが発生したときに 1 になり , それ以外は 0 になります C : 演算の結果キャリーが発生したときに 1 になり , それ以外は 0 になります 実行サイクル数 : 1 バイト数 : 1 オペコード : 23 54 第 6 章 実行命令細則 実行例 : ADDCW A メモリ FFFFH 12 34 T 56 78 A 68 AD T 56 78 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 1 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 55 第 6 章 実行命令細則 6.4 AND (AND Byte Data of Accumulator and Temporary Accumulator to Accumulator) AL のバイトデータと TL のバイトデータをビットごとに論理積をとり , 結果を AL に戻します。 AH は , 変化しません。 ■ AND (AND Byte Data of Accumulator and Temporary Accumulator to Accumulator) オペレーション (AL) ← (AL) ∧ (TL) ( バイト論理積 ) アセンブラ形式 AND A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 になります N : 演算結果の AL が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 00H ならば 1 になり , それ以外は 0 になります V : 常に 0 になります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 62 56 第 6 章 実行命令細則 実行例 : AND A メモリ FFFFH 12 34 T XX 2C A 12 24 T XX 2C → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 57 第 6 章 実行命令細則 6.5 AND (AND Byte Data of Accumulator and Memory to Accumulator) AL のバイトデータと EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイ トデータをビットごとに論理積をとり , 結果を AL に戻します。 AH は , 変化しません。 ■ AND (AND Byte Data of Accumulator and Memory to Accumulator) オペレーション (AL) ← (AL) ∧ (EA) ( バイト論理積 ) アセンブラ形式 AND A, EA コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 になります N : 演算結果の AL が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 00H ならば 1 になり , それ以外は 0 になります V : 常に 0 になります C : 変化しません 実行サイクル数 / バイト数 / オペコード EA 58 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 64 65 66 67 68 ∼ 6F 第 6 章 実行命令細則 実行例 : AND, @EP メモリ FFFFH メモリ FFFFH 53 A T T IX IX 02 11 → 02 → A → 31 SP 0123H Byte 0000H 01 PS → Byte EP 23 Byte N Z V C 0 0 1 0 (実行前) → EP 0123H PC → PC 31 SP Byte 0000H 01 23 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 59 第 6 章 実行命令細則 6.6 ANDW (AND Word Data of Accumulator and Temporary Accumulator to Accumulator) A のワードデータと T のワードデータをビットごとに論理積をとり , 結果を A に戻 します。 ■ ANDW (AND Word Data of Accumulator and Temporary Accumulator to Accumulator) オペレーション (A) ← (A) ∧ (T) ( ワード論理積 ) アセンブラ形式 ANDW A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 になります N : 演算結果の A が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 0000H ならば 1 になり , それ以外は 0 になります V : 常に 0 になります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 63 60 第 6 章 実行命令細則 実行例 : ANDW A メモリ FFFFH 56 63 T 34 32 A 14 22 T 34 32 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 61 第 6 章 実行命令細則 6.7 BBC (Branch if Bit is Clear) dir メモリ上のビット b の値が 0 のとき分岐します。分岐先アドレスは , 次の命令の PC 値 ( ワード値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算となります。 ■ BBC (Branch if Bit is Clear) オペレーション (bit)b = 0 : (PC) ← (PC) + 3 + rel ( ワード加算 ) (bit)b = 1 : (PC) ← (PC) + 3 ( ワード加算 ) アセンブラ形式 BBC dir:b, rel コンディションコード (CCR) N Z V C - + - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : dir:b の値が 0 のとき 1 になり , 1 のとき 0 になります V : 変化しません C : 変化しません 実行サイクル数 : 5 バイト数 : 3 オペコード : B0 ∼ B7 62 第 6 章 実行命令細則 実行例 : BBC 84H:0, 0FBH メモリ FFFFH メモリ FFFFH B0 → A → A B0 E800H E800H T T E7FEH IX IX → SP SP bit0 bit0 XXXX XXX0 00 PC Byte 0000H EP PS 0084H → 00 Byte Byte N Z V C 0 0 0 0 E7 XXXX XXX0 FE Byte 0000H EP (実行前) PS 0084H → E8 → PC → 00 Byte Byte N Z V C 0 1 0 0 (実行後) 63 第 6 章 実行命令細則 6.8 BBS (Branch if Bit is Set) dir メモリ上のビット b の値が 1 のとき分岐します。分岐先アドレスは , 次の命令の PC 値 ( ワード値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算となります。 ■ BBS (Branch if Bit is Set) オペレーション (bit)b = 0 : (PC) ← (PC) + 3 ( ワード加算 ) (bit)b = 1 : (PC) ← (PC) + 3 + rel ( ワード加算 ) アセンブラ形式 BBS dir:b, rel コンディションコード (CCR) N Z V C - + - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : dir:b の値が 0 のとき 1 になり , 1 のとき 0 となります V : 変化しません C : 変化しません 実行サイクル数 : 5 バイト数 : 3 オペコード : B8 ∼ BF 64 第 6 章 実行命令細則 実行例 : BBS 84H:0, 0FBH メモリ FFFFH メモリ FFFFH B0 → A → A B0 E800H E800H T T E7FEH IX IX → SP SP bit0 bit0 XXXX XXX1 00 PC Byte 0000H EP PS 0084H 00 Byte → Byte N Z V C 0 0 0 0 E7 XXXX XXX1 FE Byte 0000H EP (実行前) PS 0084H → E8 → PC 00 Byte → Byte N Z V C 0 0 0 0 (実行後) 65 第 6 章 実行命令細則 6.9 BC (Branch relative if C=1)/BLO (Branch if LOwer) C フラグ =0 ならば次の命令を実行します。 C フラグ =1 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BC (Branch relative if C=1)/BLO (Branch if LOwer) オペレーション (C) = 0 : (PC) ← (PC) + 2 ( ワード加算 ) (C) = 1 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BC rel/BLO rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : F9 66 第 6 章 実行命令細則 実行例 : BC 0FEH メモリ FFFFH メモリ FFFFH T T IX IX → A → A E804H → PC Byte 0000H EP PS → Byte Byte N Z V C 1 1 1 0 E8 E802H 04 → 02 → E8 F9 F802H F9 PC FE SP FE SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 1 1 1 0 (実行後) 67 第 6 章 実行命令細則 6.10 BGE (Branch Great or Equal: relative if ≧ Zero) V フラグと N フラグの排他的論理和が 1 ならば次の命令を実行します。 V フラグと N フラグの排他的論理和が 0 ならば分岐を実行します。分岐先アドレス は , 次の命令の PC 値 ( ワード値 ) と rel を符号拡張した値 ( ワード値 ) のワード加 算値となります。 ■ BGE (Branch Great or Equal: relative if ≧ Zero) オペレーション (V) ∀ (N) = 1 : (PC) ← (PC) + 2 ( ワード加算 ) (V) ∀ (N) = 0 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BGE rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FE 68 第 6 章 実行命令細則 実行例 : BGE 02H メモリ FFFFH メモリ FFFFH T T IX IX → A → A F458H → PC Byte 0000H EP PS → Byte Byte N Z V C 0 1 1 1 F4 58 Byte 0000H EP (実行前) F456H → 56 → F4 FE F456H FE PC 02 SP 02 SP PS → Byte Byte N Z V C 0 1 1 1 (実行後) 69 第 6 章 実行命令細則 6.11 BLT (Branch Less Than zero: relative if < Zero) V フラグと N フラグの排他的論理和が 0 ならば次の命令を実行します。 V フラグと N フラグの排他的論理和が 1 ならば分岐を実行します。分岐先アドレス は , 次の命令の PC 値 ( ワード値 ) と rel を符号拡張した値 ( ワード値 ) のワード加 算値となります。 ■ BLT (Branch Less Than zero: relative if < Zero) オペレーション (V) ∀ (N) = 0 : (PC) ← (PC) + 2 ( ワード加算 ) (V) ∀ (N) = 1 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BLT rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FF 70 第 6 章 実行命令細則 実行例 : BLT 02H メモリ FFFFH メモリ FFFFH → A → A T T F45AH IX IX → F458H PC Byte 0000H EP PS → Byte Byte N Z V C 0 1 1 1 F4 5A Byte 0000H EP (実行前) F456H → 56 → F4 FF F456H FF PC 02 SP 02 SP F458H PS → Byte Byte N Z V C 0 1 1 1 (実行後) 71 第 6 章 実行命令細則 6.12 BN (Branch relative if N = 1) N フラグ =0 ならば次の命令を実行します。 N フラグ =1 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BN (Branch relative if N = 1) オペレーション N = 0 : (PC) ← (PC) + 2 ( ワード加算 ) N = 1 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BN rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FB 72 第 6 章 実行命令細則 実行例 : BN 02H メモリ FFFFH メモリ FFFFH T T IX IX → A → A FC63H → SP SP 02 02 FB 5F FC5FH Byte 0000H EP PS → Byte Byte N Z V C 1 1 1 0 (実行前) PC FC FB 63 FC5FH → FC → PC Byte 0000H EP PS → Byte Byte N Z V C 1 1 1 0 (実行後) 73 第 6 章 実行命令細則 6.13 BNZ (Branch relative if Z = 0)/BNE (Branch if Not Equal) Z フラグ =1 ならば次の命令を実行します。 Z フラグ =0 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BNZ (Branch relative if Z = 0)/BNE (Branch if Not Equal) オペレーション (Z) = 1 : (PC) ← (PC) + 2 ( ワード加算 ) (Z) = 0 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BNZ rel/BNE rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FC 74 第 6 章 実行命令細則 実行例 : BNZ 0FAH メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC Byte 0000H EP PS → Byte Byte N Z V C 0 1 0 0 FE 20 Byte 0000H EP (実行前) FE1EH → 1E → FE FC FE1EH FC PC FA SP FA SP FE20H PS → Byte Byte N Z V C 0 1 0 0 (実行後) 75 第 6 章 実行命令細則 6.14 BNC (Branch relative if C = 0)/BHS (Branch if Higher or Same) C フラグ =1 ならば次の命令を実行します。 C フラグ =0 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BNC (Branch relative if C = 0)/BHS (Branch if Higher or Same) オペレーション (C) = 1 : (PC) ← (PC) + 2 ( ワード加算 ) (C) = 0 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BNC rel/BHS rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : F8 76 第 6 章 実行命令細則 実行例 : BNC 01H メモリ FFFFH メモリ FFFFH T T IX IX F8 PC Byte 0000H PS → Byte Byte N Z V C 1 1 1 0 E8 05 Byte 0000H EP (実行前) E802H → 02 EP 01 E802H → E8 E804H SP 01 F8 PC E805H → E804H SP → A → A PS → Byte Byte N Z V C 1 1 1 0 (実行後) 77 第 6 章 実行命令細則 6.15 BP (Branch relative if N = 0: PLUS) N フラグ =1 ならば次の命令を実行します。 N フラグ =0 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BP (Branch relative if N = 0: PLUS) オペレーション (N) = 1 : (PC) ← (PC) + 2 ( ワード加算 ) (N) = 1 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BP rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FA 78 第 6 章 実行命令細則 実行例 : BP 04H メモリ FFFFH メモリ FFFFH T T IX IX → A → A → Byte 0000H EP PS → Byte Byte N Z V C 1 0 1 1 (実行前) PC FC FC5FH 61 → 5F → FC FA FC5FH FA PC 04 SP 04 SP FC61H Byte 0000H EP PS → Byte Byte N Z V C 1 0 1 1 (実行後) 79 第 6 章 実行命令細則 6.16 BZ (Branch relative if Z = 1)/BEQ (Branch if Equal) Z フラグ =0 ならば次の命令を実行します。 Z フラグ =1 ならば分岐を実行します。分岐先アドレスは , 次の命令の PC 値 ( ワー ド値 ) と rel を符号拡張した値 ( ワード値 ) のワード加算値となります。 ■ BZ (Branch relative if Z = 1)/BEQ (Branch if Equal) オペレーション (Z) = 0 : (PC) ← (PC) + 2 ( ワード加算 ) (Z) = 1 : (PC) ← (PC) + 2 + rel ( ワード加算 ) アセンブラ形式 BZ rel/BEQ rel コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 ( 分岐時 ) / 2 ( 非分岐時 ) バイト数 : 2 オペコード : FD 80 第 6 章 実行命令細則 実行例 : BZ 0FAH メモリ FFFFH メモリ FFFFH → A → A FE20H T T FA FA FE1EH FD FE1EH FD IX IX → SP SP FE1AH 1E Byte 0000H EP PS → Byte Byte N Z V C 0 1 0 0 (実行前) PC FE 1A → FE → PC Byte 0000H EP PS → Byte Byte N Z V C 0 1 0 0 (実行後) 81 第 6 章 実行命令細則 6.17 CALL (CALL subroutine) ext のアドレスへ分岐します。 分岐サブルーチンの RET 命令により , この命令の次の命令に戻ります。 ■ CALL (CALL subroutine) オペレーション (SP) ← (SP) - 2 ( ワード減算 ) , ((SP)) ← (PC) ( ワード転送 ) (PC) ← ext アセンブラ形式 CALL ext コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 6 バイト数 : 3 オペコード : 31 82 第 6 章 実行命令細則 実行例 : CALL 0FC00H メモリ FFFFH メモリ FFFFH T T IX IX 020AH SP 02 → 020AH SP OA → A → A 02 26 08 0208H F6 23 Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) PC FC 00 → F6 → PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 83 第 6 章 実行命令細則 6.18 CALLV (CALL Vectored subroutine) vct のベクタアドレス (VA) が示すアドレスへ分岐します。 分岐サブルーチンの RET 命令により , この命令の次の命令に戻ります。 vct により示されるベクタアドレス (VA) を次のページに示します。 ■ CALLV (CALL Vectored subroutine) オペレーション (SP) ← (SP) - 2 ( ワード減算 ) , ((SP)) ← (PC) ( ワード転送 ) (PC) ← (VA) アセンブラ形式 CALLV #vct コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 7 バイト数 : 1 オペコード : E8 ∼ EF 84 第 6 章 実行命令細則 実行例 : CALLV #02H メモリ FFFFH メモリ FFFFH vct 00 FFC5H 02 EC FFC4H T T EC00H IX IX → 0208H SP → A → A 02 0208H SP 08 02 01 06 0206H E8 00 PC Byte 0000H EP PS → Byte N Z V C 0 0 0 0 00 Byte 0000H EP PS (実行前) Byte EC → E8 → PC → Byte N Z V C 0 0 0 0 (実行後) Byte 表 6.18-1 ベクタコール命令のコール先アドレス格納番地 ベクタ (VA) 命令 下位アドレス 上位アドレス FFCEH FFCFH CALL#7 FFCCH FFCDH CALL#6 FFCAH FFCBH CALL#5 FFC8H FFC9H CALL#4 FFC6H FFC7H CALL#3 FFC4H FFC5H CALL#2 FFC2H FFC3H CALL#1 FFC0H FFC1H CALL#0 85 第 6 章 実行命令細則 6.19 CLRB (Clear direct Memory Bit) ダイレクト領域の 1 ビット ( ニーモニックの下位 3 ビット (b) で示される ) の内容を 0 にします。 ■ CLRB (Clear direct Memory Bit) オペレーション (dir:b) ← 0 アセンブラ形式 CLRB dir:b コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 バイト数 : 2 オペコード : A0 ∼ A7 86 第 6 章 実行命令細則 実行例 : CLRB 84H:0 メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP SP 0000 000X Byte 0000H EP PS 00 Byte → Byte N Z V C 0 0 0 0 (実行前) 0000 0000 PC Byte 0000H EP PS 0084H → → PC 0084H → 00 Byte Byte N Z V C 0 0 0 0 (実行後) 87 第 6 章 実行命令細則 6.20 CLRC (Clear Carry flag) C フラグを 0 にします。 ■ CLRC (Clear Carry flag) オペレーション (C) ← 0 アセンブラ形式 CLRC コンディションコード (CCR) N Z V C - - - R + : 命令実行により変化します - : 変化しません R : 命令実行により 0 になります N : 変化しません Z : 変化しません V : 変化しません C : 0 になります 実行サイクル数 : 1 バイト数 : 1 オペコード : 81 88 第 6 章 実行命令細則 実行例 : CLRC メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 1 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 89 第 6 章 実行命令細則 6.21 CLRI (CLeaR Interrupt flag) I フラグを 0 にします。 ■ CLRI (CLeaR Interrupt flag) オペレーション (I) ← 0 アセンブラ形式 CLRI コンディションコード (CCR) I N Z V C R - - - - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 になります I : 0 になります N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 80 90 第 6 章 実行命令細則 実行例 : CLRI メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC Byte 0000H EP PS Byte I IL1 IL0 N Z V C 0 1 0 0 1 1 0 Byte 0000H EP H 1 → SP → SP PS Byte Byte (実行前) H I IL1 IL0 N Z V C 0 0 0 0 1 1 1 0 Byte (実行後) 91 第 6 章 実行命令細則 6.22 CMP (CoMPare Byte Data of Accumulator and Temporary Accumulator) AL のバイトデータと TL のバイトデータとを比較し , 結果を CCR にセットします。 AL と TL は , 変わりません。 ■ CMP (CoMPare Byte Data of Accumulator and Temporary Accumulator) オペレーション (TL) - (AL) アセンブラ形式 CMP A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 になり , それ以外は 0 になります Z : 演算結果が 00H ならば 1 になり , それ以外は 0 になります V : 演算の結果オーバフローが発生したときに 1 になり , それ以外は 0 になります C : 演算の結果キャリーが発生したときに 1 になり , それ以外は 0 になります 実行サイクル数 : 1 バイト数 : 1 オペコード : 12 92 第 6 章 実行命令細則 実行例 : CMP A メモリ FFFFH XX 75 T XX 48 A XX 75 T XX 48 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 1 (実行後) 93 第 6 章 実行命令細則 6.23 CMP (CoMPare Byte Data of Accumulator and Memory) AL のバイトデータと EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイ トデータを比較し , 結果を CCR にセットします。 AL と EA メモリは , 変わりません。 ■ CMP (CoMPare Byte Data of Accumulator and Memory) オペレーション (AL) - (EA) アセンブラ形式 CMP A, EA コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 / バイト数 / オペコード EA 94 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 14 15 16 17 18 ∼ 1F 第 6 章 実行命令細則 実行例 : CMP A, 80H メモリ FFFFH メモリ FFFFH 23 A T T IX IX XX 23 → XX → A → 56 SP 0180H Byte 0000H EP PS 02 Byte → Byte N Z V C 0 0 0 1 (実行前) 0180H PC → → PC 56 SP Byte 0000H EP PS → 02 Byte Byte N Z V C 1 0 0 1 (実行後) 95 第 6 章 実行命令細則 6.24 CMP (CoMPare Byte Data of Immediate Data and Memory) EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイトデータと即値データ とを比較し , 結果を CCR にセットします。 EA メモリは , 変わりません。 ■ CMP (CoMPare Byte Data of Immediate Data and Memory) オペレーション (EA) - d8 アセンブラ形式 CMP EA, #d8 コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 / バイト数 / オペコード EA 96 dir @IX+off @EP Ri 実行サイクル数 4 4 3 3 バイト数 3 3 2 2 オペコード 95 96 97 98 ∼ 9F 第 6 章 実行命令細則 実行例 : CMP @EP, #33H メモリ FFFFH メモリ FFFFH T T IX IX → A → A → 54 SP 0120H Byte 0000H 01 20 PS → Byte Byte N Z V C 0 0 0 1 (実行前) 0120H PC EP → EP → PC 54 SP Byte 0000H 01 20 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 97 第 6 章 実行命令細則 6.25 CMPW (CoMPare Word Data of Accumulator and Temporary Accumulator) A のワードデータと T のワードデータとを比較し , 結果を CCR にセットします。 A と T は , 変わりません。 ■ CMPW (CoMPare Word Data of Accumulator and Temporary Accumulator) オペレーション (T) - (A) アセンブラ形式 CMPW A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 : 2 バイト数 : 1 オペコード : 13 98 第 6 章 実行命令細則 実行例 : CMPW A メモリ FFFFH 86 75 T 24 48 A 86 75 T 24 48 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 1 0 1 1 (実行後) 99 第 6 章 実行命令細則 6.26 DAA (Decimal Adjust for Addition) 命令実行前のキャリーおよびハーフキャリーの状態によって AL に補正値を加算し て 10 進演算の補正をします。 ■ DAA (Decimal Adjust for Addition) オペレーション (AL) ← (AL) + 6 or 60H or 66H (AL の値と , C, H フラグにより次ページに示す補正値を AL に加算する ) アセンブラ形式 DAA コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 次ページに示すとおりに変化します 実行サイクル数 : 1 バイト数 : 1 オペコード : 84 100 第 6 章 実行命令細則 実行例 : DAA メモリ FFFFH メモリ FFFFH 4A A T T IX IX XX 50 → XX → A → PC PC Byte 0000H EP PS I IL1 IL0 N Z V C 0 0 0 0 0 Byte 1 0 Byte 0000H EP H 1 → SP → SP PS H I IL1 IL0 N Z V C 0 0 0 0 0 1 Byte Byte 1 0 Byte (実行後) (実行前) 表 6.26-1 10 進補正表 (DAA) C フラグ AL ( ビット 7 ∼ 4) H フラグ AL ( ビット 3 ∼ 0) 補正値 実行後の C フラグ 0 0 0 0 0 0 1 1 1 0-9 0-8 0-9 A-F 9-F A-F 0-2 0-2 0-3 0 0 1 0 0 1 0 0 1 0-9 A-F 0-3 0-9 A-F 0-3 0-9 A-F 0-3 00 06 06 60 66 66 60 66 66 0 0 0 1 1 1 1 1 1 表 6.26-2 実行例 AL C H MOV A, #75H 75 0 × ADDC A, #25H 9A 0 0 DAA 00 1 0 ニーモニック 101 第 6 章 実行命令細則 6.27 DAS (Decimal Adjust for Subtraction) 命令実行前のキャリーおよびハーフキャリーの状態によって AL から補正値を減算 して 10 進演算の補正をします。 ■ DAS (Decimal Adjust for Subtraction) オペレーション (AL) ← (AL) - 6 or 60H or 66H AL の値と , C, H フラグにより次ページに示す補正値を AL から減算する。 アセンブラ形式 DAS コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 次ページに示すとおりに変化します 実行サイクル数 : 1 バイト数 : 1 オペコード : 94 102 第 6 章 実行命令細則 実行例 : DAS メモリ FFFFH メモリ FFFFH 2F A T T IX IX XX 29 → XX → A → PC PC Byte 0000H EP PS I IL1 IL0 N Z V C 1 0 0 0 0 Byte 1 0 Byte Byte 0000H EP H 1 → SP → SP PS H I IL1 IL0 N Z V C 1 0 0 0 0 1 1 Byte 0 Byte (実行後) (実行前) 表 6.27-1 10 進補正表 (DAS) C フラグ H フラグ 補正値 実行後の C フラグ 0 1 0 1 0 1 1 0 00 66 06 60 0 1 0 1 表 6.27-2 実行例 AL C H MOV A, #70H 70 × × SUBC A, #25H 4B 0 1 DAS 45 0 1 ニーモニック 103 第 6 章 実行命令細則 6.28 DEC (DECrement Byte Data of General-purpose Register) Ri のバイトデータを 1 減算します。 ■ DEC (DECrement Byte Data of General-purpose Register) オペレーション (Ri) ← (Ri) - 1 ( バイト減算 ) アセンブラ形式 DEC Ri コンディションコード (CCR) N Z V C + + + - + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 変化しません 実行サイクル数 : 3 バイト数 : 1 オペコード : D8 ∼ DF 104 第 6 章 実行命令細則 実行例 : DEC R2 メモリ FFFFH メモリ FFFFH T T IX IX → A → A → R2 SP 0112H FE 0110H R0 10 Byte → Byte N Z V C 0 0 0 0 (実行前) R0 0110H PC → → Byte 0000H EP 0112H FD R1 R1 PC PS R2 SP Byte 0000H EP PS → 10 Byte Byte N Z V C 1 0 0 0 (実行後) 105 第 6 章 実行命令細則 6.29 DECW (DECrement Word Data of Accumulator) A のワードデータを 1 減算します。 ■ DECW (DECrement Word Data of Accumulator) オペレーション (A) ← (A) - 1 ( ワード減算 ) アセンブラ形式 DECW A コンディションコード (CCR) N Z V C + + - - + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : D0 106 第 6 章 実行命令細則 実行例 : DECW A メモリ FFFFH メモリ FFFFH 22 A T T IX IX 78 21 → 78 → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 107 第 6 章 実行命令細則 6.30 DECW (DECrement Word Data of Extra Pointer) EP のワードデータを 1 減算します。 ■ DECW (DECrement Word Data of Extra Pointer) オペレーション (EP) ← (EP) - 1 ( ワード減算 ) アセンブラ形式 DECW EP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : D3 108 第 6 章 実行命令細則 実行例 : DECW EP メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC EP Byte 0000H 12 PS → Byte EP 34 Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H 12 33 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 109 第 6 章 実行命令細則 6.31 DECW (DECrement Word Data of Index Pointer) IX のワードデータを 1 減算します。 ■ DECW (DECrement Word Data of Index Pointer) オペレーション (IX) ← (IX) - 1 ( ワード減算 ) アセンブラ形式 DECW IX コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : D2 110 第 6 章 実行命令細則 実行例 : DECW IX メモリ FFFFH メモリ FFFFH T T IX → A → A 16 IX 27 16 26 → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 111 第 6 章 実行命令細則 6.32 DECW (DECrement Word Data of Stack Pointer) SP のワードデータを 1 減算します。 ■ DECW (DECrement Word Data of Stack Pointer) オペレーション (SP) ← (SP) - 1 ( ワード減算 ) アセンブラ形式 DECW SP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : D1 112 第 6 章 実行命令細則 実行例 : DECW SP メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP 32 SP 85 PS → Byte Byte N Z V C 0 0 0 0 → Byte 0000H EP 84 PC → PC 32 Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 113 第 6 章 実行命令細則 6.33 DIVU (DIVide Unsigned) T のワードデータを A のワードデータで , 符号なし 2 進数として除算します。 結果の商を A に余りを T に戻します。 また , A が 0 のときは , 結果は不定で , 0 除算を示すために Z フラグが 1 になりま す。 ■ DIVU (DIVide Unsigned) オペレーション 商 (A) ← (T) / (A) 余 (T) ← (T) MOD (A) アセンブラ形式 DIVU A コンディションコード (CCR) N Z V C - + - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 命令実行前の A が 0000H ならば 1 になり , それ以外では 0 になります。 V : 変化しません C : 変化しません 実行サイクル数 : 17 バイト数 : 1 オペコード : 11 114 第 6 章 実行命令細則 実行例 : DIVU A メモリ FFFFH 00 OA T 01 41 A 00 20 T 00 01 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 115 第 6 章 実行命令細則 6.34 INC (INCrement Byte Data of General-purpose Register) Ri のバイトデータに 1 を加算します。 ■ INC (INCrement Byte Data of General-purpose Register) オペレーション (Ri) ← (Ri) + 1 ( ワード加算 ) アセンブラ形式 INC Ri コンディションコード (CCR) N Z V C + + + - + : 命令実行により変化します - : 変化しません N : 演算結果が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 変化しません 実行サイクル数 : 3 バイト数 : 1 オペコード : C8 ∼ CF 116 第 6 章 実行命令細則 実行例 : INC R1 メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP SP R1 56 R0 0108H PS → 08 Byte Byte N Z V C 0 0 0 0 0108H Byte 0000H EP (実行前) PS 0109H → Byte 0000H EP 57 R0 PC → PC R1 0109H → 08 Byte Byte N Z V C 0 0 0 0 (実行後) 117 第 6 章 実行命令細則 6.35 INCW (INCrement Word Data of Accumulator) A のワードデータに 1 を加算します。 ■ INCW (INCrement Word Data of Accumulator) オペレーション (A) ← (A) +1 ( ワード加算 ) アセンブラ形式 INCW A コンディションコード (CCR) N Z V C + + - - + : 命令実行により変化します - : 変化しません N : 演算結果の A が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : C0 118 第 6 章 実行命令細則 実行例 : INCW A メモリ FFFFH メモリ FFFFH 33 A T T IX IX 12 34 → 12 → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 119 第 6 章 実行命令細則 6.36 INCW (INCrement Word Data of Extra Pointer) EP のワードデータに 1 を加算します。 ■ INCW (INCrement Word Data of Extra Pointer) オペレーション (EP) ← (EP) + 1 ( ワード加算 ) アセンブラ形式 INCW EP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : C3 120 第 6 章 実行命令細則 実行例 : INCW EP メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC EP Byte 0000H 25 PS → Byte EP 42 Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H 25 43 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 121 第 6 章 実行命令細則 6.37 INCW (INCrement Word Data of Index Register) IX のワードデータに 1 を加算します。 ■ INCW (INCrement Word Data of Index Register) オペレーション (IX) ← (IX) + 1 ( ワード加算 ) アセンブラ形式 INCW IX コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : C2 122 第 6 章 実行命令細則 実行例 : INCW IX メモリ FFFFH メモリ FFFFH T T IX → A → A 25 IX 72 25 73 → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 123 第 6 章 実行命令細則 6.38 INCW (INCrement Word Data of Stack Pointer) SP のワードデータに 1 を加算します。 ■ INCW (INCrement Word Data of Stack Pointer) オペレーション (SP) ← (SP) + 1 ( ワード加算 ) アセンブラ形式 INCW SP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : C1 124 第 6 章 実行命令細則 実行例 : INCW SP メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP FF SP FF PS → Byte Byte N Z V C 0 0 0 0 → Byte 0000H EP 00 PC → PC 00 Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 125 第 6 章 実行命令細則 6.39 JMP (JuMP to address pointed by Accumulator) A のワードデータを PC へ転送します。 ■ JMP (JuMP to address pointed by Accumulator) オペレーション (PC) ← (A) ( ワード転送 ) アセンブラ形式 JMP @A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 1 オペコード : E0 126 第 6 章 実行命令細則 実行例 : JMP @A メモリ FFFFH F0 89 A → A T T IX IX F0 89 F0 89 → メモリ FFFFH → SP SP XX PC Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 0 → XX → PC Byte 0000H EP (実行前) PS → Byte Byte N Z V C 1 0 0 0 (実行後) 127 第 6 章 実行命令細則 6.40 JMP (JuMP to effective Address) ext で示される PC 値へ分岐します。 ■ JMP (JuMP to effective Address) オペレーション (PC) ← ext ( ワード転送 ) アセンブラ形式 JMP ext コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 バイト数 : 3 オペコード : 21 128 第 6 章 実行命令細則 実行例 : JMP 0E654H メモリ FFFFH メモリ FFFFH → A → A E654H T T IX IX → 54 SP E6 SP PC Byte 0000H EP PS → Byte Byte N Z V C 0 1 1 1 E6 54 Byte 0000H EP (実行前) D800H → 00 21 → D8 E6 D800H 21 PC 54 PS → Byte Byte N Z V C 0 1 1 1 (実行後) 129 第 6 章 実行命令細則 6.41 MOV (MOVE Byte Data from Temporary Accumulator to Address Pointed by Accumulator) T のバイトデータを A によって間接アドレスされるメモリへ転送します。 ■ MOV (MOVE Byte Data from Temporary Accumulator to Address Pointed by Accumulator) オペレーション ((A)) ← T ( ワード転送 ) アセンブラ形式 MOV @A, T コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 2 バイト数 : 1 オペコード : 82 130 第 6 章 実行命令細則 実行例 : MOV @A, T メモリ FFFFH 01 20 T XX 3F A 01 20 T XX 3F → A → メモリ FFFFH IX IX → XX SP 0120H PS → Byte Byte N Z V C 0 0 0 0 → Byte 0000H EP 0120H PC → PC 3F SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 131 第 6 章 実行命令細則 6.42 MOV (MOVE Byte Data from Memory to Accumulator) EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイトデータを A へ転送し ます。 AL にあったバイトデータは , TL に転送されます。 AH は変化しません。 ■ MOV (MOVE Byte Data from Memory to Accumulator) オペレーション (AL) ← (EA) ( バイト転送 ) アセンブラ形式 MOV A, EA コンディションコード (CCR) N Z V C + + - - + : 命令実行により変化します - : 変化しません N : 転送したデータが MSB=1 ならば 1 となり , それ以外は 0 となります Z : 転送したデータが 00H ならば 1 となり , それ以外は 0 となります V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード 132 EA #d8 dir @IX+off ext @A @EP Ri 実行サイクル数 2 3 3 4 2 2 2 バイト数 2 2 2 3 1 1 1 オペコード 04 05 06 60 92 07 08 ∼ 0F 第 6 章 実行命令細則 実行例 : MOV A, 83H メモリ FFFFH 11 22 T XX XX A 11 51 T XX 22 IX IX 51 0383H 51 → PC PC Byte 0000H EP → 06 Byte Byte N Z V C 0 0 0 0 Byte 0000H EP (実行前) PS 0383H → SP → SP PS → A → メモリ FFFFH → 06 Byte Byte N Z V C 0 0 0 0 (実行後) 133 第 6 章 実行命令細則 6.43 MOV (MOVE Immediate Byte Data to Memory) バイトの即値データを EA メモリ ( 各種アドレッシングで表現されるメモリ ) へ転送 します。 ■ MOV (MOVE Immediate Byte Data to Memory) オペレーション (EA) ← d8 ( バイト転送 ) アセンブラ形式 MOV EA, #d8 コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード EA 134 dir @IX+off @EP Ri 実行サイクル数 4 4 3 3 バイト数 3 3 2 2 オペコード 85 86 87 88 ∼ 8F 第 6 章 実行命令細則 実行例 : MOV @IX+02, #35H メモリ FFFFH メモリ FFFFH T T IX → A → A 02 00 IX 0202H XX (IX+2) 02 00 0202H 35 → (IX+2) SP SP 0200H 0200H Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → PC → PC Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 135 第 6 章 実行命令細則 6.44 MOV (MOVE Byte Data from Accumulator to Memory) AL のバイトデータを EA メモリ ( 各種アドレッシングで表現されるメモリ ) へ転送 します。 ■ MOV (MOVE Byte Data from Accumulator to Memory) オペレーション (EA) ← (AL) ( バイト転送 ) アセンブラ形式 MOV EA, A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード EA 136 dir @IX+off ext @EP Ri 実行サイクル数 3 3 4 2 2 バイト数 2 2 3 1 1 オペコード 45 46 61 47 48 ∼ 4F 第 6 章 実行命令細則 実行例 : MOV 82H, A メモリ FFFFH メモリ FFFFH 06 A T T IX IX XX 06 → XX → A → SP SP 0202H XX 03 Byte → Byte N Z V C 0 0 0 0 → Byte 0000H EP PS PC → PC 0202H 06 Byte 0000H EP (実行前) PS → 03 Byte Byte N Z V C 0 0 0 0 (実行後) 137 第 6 章 実行命令細則 6.45 MOVW (MOVE Word Data from Temporary Accumulator to Address Pointed by Accumulator) T のワードデータを A によって間接アドレスされるメモリへ転送します。 ■ MOVW (MOVE Word Data from Temporary Accumulator to Address Pointed by Accumulator) オペレーション ((A)) ← (T) ( ワード転送 ) アセンブラ形式 MOVW @A, T コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 1 オペコード : 83 138 第 6 章 実行命令細則 実行例 : MOVW @A, T メモリ FFFFH 01 78 T FB AA A 01 78 T FB AA → A → メモリ FFFFH IX IX XX SP → 0179H SP 0178H XX PS → Byte Byte N Z V C 0 0 0 0 FB 0178H → Byte 0000H EP 0179H PC → PC AA Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 139 第 6 章 実行命令細則 6.46 MOVW (MOVE Word Data from Memory to Accumulator) EA,EA+1 (EA は各種アドレッシングで表現されるアドレス ) のメモリ内容のワード データを A へ転送します。 また , A にあったワードデータは , T に転送されます。 ■ MOVW (MOVE Word Data from Memory to Accumulator) オペレーション (A) ← (EA) ( ワード転送 ) アセンブラ形式 MOVW A, EA コンディションコード (CCR) N Z V C + + - - + : 命令実行により変化します - : 変化しません N : 転送したデータが MSB=1 ならば 1 となり , それ以外は 0 となります Z : 転送したデータが 0000H ならば 1 となり , それ以外は 0 となります V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード EA #d16 dir @IX+off ext @A @EP 実行サイクル数 3 4 4 5 3 3 バイト数 3 2 2 3 1 1 E4 C5 C6 C4 93 C7 オペコード 140 第 6 章 実行命令細則 実行例 : MOVW A, @IX+01H メモリ FFFFH 01 02 T XX XX IX 01 50 23 EF 23 T 01 02 IX 01 50 23 → EF SP A → A → メモリ FFFFH 0151H EF SP (IX+1) 0150H Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → PC → PC 0150H Byte 0000H EP (実行前) PS → Byte Byte N Z V C 1 0 0 0 (実行後) 141 第 6 章 実行命令細則 6.47 MOVW (MOVE Word Data from Extra Pointer to Accumulator) EP のワードデータを A へ転送します。 ■ MOVW (MOVE Word Data from Extra Pointer to Accumulator) オペレーション (A) ← (EP) ( ワード転送 ) アセンブラ形式 MOVW A, EP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : F3 142 第 6 章 実行命令細則 実行例 : MOVW A, EP メモリ FFFFH XX XX A → A T T IX IX 96 32 96 32 → メモリ FFFFH → PC PC EP Byte 0000H 96 PS → Byte EP 32 Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H PS → Byte Byte N Z V C 0 0 0 0 (実行後) 143 第 6 章 実行命令細則 6.48 MOVW (MOVE Word Data from Index Register to Accumulator) IX のワードデータを A へ転送します。 ■ MOVW (MOVE Word Data from Index Register to Accumulator) オペレーション (A) ← (IX) ( ワード転送 ) アセンブラ形式 MOVW A, IX コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : F2 144 第 6 章 実行命令細則 実行例 : MOVW A, IX メモリ FFFFH XX XX A → A 23 87 23 T T IX 87 → メモリ FFFFH 87 IX 23 → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 145 第 6 章 実行命令細則 6.49 MOVW (MOVE Word Data from Program Status Register to Accumulator) PS のワードデータを A へ転送します。 ■ MOVW (MOVE Word Data from Program Status Register to Accumulator) オペレーション (A) ← (PS) ( ワード転送 ) アセンブラ形式 MOVW A, PS コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 70 146 第 6 章 実行命令細則 実行例 : MOVW A, PS メモリ FFFFH メモリ FFFFH XX A T T IX IX 78 18 → XX → A → PC PC Byte 0000H EP PS 78 18 Byte Byte → N Z V C 1 0 0 0 → SP → SP Byte 0000H EP (実行前) PS 78 18 Byte Byte → N Z V C 1 0 0 0 (実行後) 147 第 6 章 実行命令細則 6.50 MOVW (MOVE Word Data from Program Counter to Accumulator) PC のワードデータを A へ転送します。 ■ MOVW (MOVE Word Data from Program Counter to Accumulator) オペレーション (A) ← (PC) ( ワード転送 ) アセンブラ形式 MOVW A, PC コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 2 バイト数 : 1 オペコード : F0 148 第 6 章 実行命令細則 実行例 : MOVW A, PC メモリ FFFFH XX XX A → A T T IX IX F0 62 F0 62 → メモリ FFFFH → SP SP 62 PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → F0 → PC Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 149 第 6 章 実行命令細則 6.51 MOVW (MOVE Word Data from Stack Pointer to Accumulator) SP のワードデータを A へ転送します。 ■ MOVW (MOVE Word Data from Stack Pointer to Accumulator) オペレーション (A) ← (SP) ( ワード転送 ) アセンブラ形式 MOVW A, SP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : F1 150 第 6 章 実行命令細則 実行例 : MOVW A, SP メモリ FFFFH XX XX A → A T T IX IX 69 05 69 05 → メモリ FFFFH → SP 69 SP 05 Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → PC → PC Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 151 第 6 章 実行命令細則 6.52 MOVW (MOVE Word Data from Accumulator to Memory) A のワードデータを EA,EA+1 (EA は各種アドレッシングで表現されるアドレス ) の メモリへ転送します。 ■ MOVW (MOVE Word Data from Accumulator to Memory) オペレーション (EA) ← (A) ( ワード転送 ) アセンブラ形式 MOVW EA, A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード EA dir @IX+off ext @EP 実行サイクル数 4 4 5 3 バイト数 2 2 3 1 D5 D6 D4 D7 オペコード 152 第 6 章 実行命令細則 実行例 : MOVW 93H, A メモリ FFFFH メモリ FFFFH 56 A T T IX IX 10 56 → 10 → A → SP XX 0094H XX 0093H PS 00 Byte → Byte N Z V C 0 0 0 0 0094H 10 0093H → Byte 0000H EP 56 PC → PC SP Byte 0000H EP (実行前) PS → 00 Byte Byte N Z V C 0 0 0 0 (実行後) 153 第 6 章 実行命令細則 6.53 MOVW (MOVE Word Data from Accumulator to Extra Pointer) A のワードデータを EP へ転送します。 ■ MOVW (MOVE Word Data from Accumulator to Extra Pointer) オペレーション (EP) ← (A) ( ワード転送 ) アセンブラ形式 MOVW EP, A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : E3 154 第 6 章 実行命令細則 実行例 : MOVW EP, A メモリ FFFFH 87 65 A → A T T IX IX 87 65 87 65 → メモリ FFFFH → PC PC EP Byte 0000H XX PS → Byte EP XX Byte N Z V C 1 0 0 0 (実行前) → SP → SP Byte 0000H PS → Byte Byte N Z V C 1 0 0 0 (実行後) 155 第 6 章 実行命令細則 6.54 MOVW (MOVE Immediate Word Data to Extra Pointer) ワードの即値データを EP へ転送します。 ■ MOVW (MOVE Immediate Word Data to Extra Pointer) オペレーション (EP) ← d16 ( ワード転送 ) アセンブラ形式 MOVW EP, #d16 コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 3 オペコード : E7 156 第 6 章 実行命令細則 実行例 : MOVW EP, #2345H メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC EP Byte 0000H XX XX PS → Byte Byte N Z V C 0 0 0 0 (実行前) EP → SP → SP Byte 0000H 23 45 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 157 第 6 章 実行命令細則 6.55 MOVW (MOVE Word Data from Accumulator to Index Register) A のワードデータを IX へ転送します。 ■ MOVW (MOVE Word Data from Accumulator to Index Register) オペレーション (IX) ← (A) ( ワード転送 ) アセンブラ形式 MOVW IX, A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : E2 158 第 6 章 実行命令細則 実行例 : MOVW IX, A メモリ FFFFH 56 43 A → A 43 56 43 T T IX 56 → メモリ FFFFH XX IX XX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 159 第 6 章 実行命令細則 6.56 MOVW (MOVE Immediate Word Data to Index Register) ワードの即値データを IX へ転送します。 ■ MOVW (MOVE Immediate Word Data to Index Register) オペレーション (IX) ← d16 ( ワード転送 ) アセンブラ形式 MOVW IX, #d16 コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 3 オペコード : E6 160 第 6 章 実行命令細則 実行例 : MOVW IX, #4567H メモリ FFFFH メモリ FFFFH T T IX → A → A XX IX XX 45 67 → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 161 第 6 章 実行命令細則 6.57 MOVW (MOVE Word data from Accumulator to Program Status Register) A のワードデータを PS へ転送します。 ■ MOVW (MOVE Word data from Accumulator to Program Status Register) オペレーション (PS) ← (A) ( ワード転送 ) アセンブラ形式 MOVW PS, A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : A の下位のビット 3 の値になります。 Z : A の下位のビット 2 の値になります。 V : A の下位のビット 1 の値になります。 C : A の下位のビット 0 の値になります。 実行サイクル数 : 1 バイト数 : 1 オペコード : 71 162 第 6 章 実行命令細則 実行例 : MOVW PS, A メモリ FFFFH メモリ FFFFH 32 A T T IX IX 50 32 → 50 → A → PC PC Byte 0000H EP PS XX XX Byte Byte → N Z V C X X X X (実行前) → SP → SP Byte 0000H EP PS 50 32 Byte Byte → N Z V C 0 0 1 0 (実行後) 163 第 6 章 実行命令細則 6.58 MOVW (MOVE Immediate Word Data to Stack Pointer) ワードの即値データを SP へ転送します。 ■ MOVW (MOVE Immediate Word Data to Stack Pointer) オペレーション (SP) ← d16 ( ワード転送 ) アセンブラ形式 MOVW SP, #d16 コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 3 オペコード : E5 164 第 6 章 実行命令細則 実行例 : MOVW SP, #6789H メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP XX SP XX Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) 89 PC → → PC 67 Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 165 第 6 章 実行命令細則 6.59 MOVW (MOVE Word data from Accumulator to Stack Pointer) A のワードデータを SP へ転送します。 ■ MOVW (MOVE Word data from Accumulator to Stack Pointer) オペレーション (SP) ← (A) ( ワード転送 ) アセンブラ形式 MOVW SP, A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : E1 166 第 6 章 実行命令細則 実行例 : MOVW SP, A メモリ FFFFH 43 21 A → A T T IX IX 43 21 43 21 → メモリ FFFFH → SP XX SP XX Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) PC → → PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 167 第 6 章 実行命令細則 6.60 MULU (MULtiply Unsigned) AL と TL のバイトデータを符号なし 2 進数として乗算します。 結果を A のワードデータに戻します。 ■ MULU (MULtiply Unsigned) オペレーション (A) ← (AL) * (TL) アセンブラ形式 MULU A コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 8 バイト数 : 1 オペコード : 01 168 第 6 章 実行命令細則 実行例 : MULU A メモリ FFFFH XX 20 T XX 40 A 08 00 T XX 40 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 169 第 6 章 実行命令細則 6.61 NOP (NoOPeration) 無操作を示します。 ■ NOP (NoOPeration) オペレーション ———— アセンブラ形式 NOP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 00 170 第 6 章 実行命令細則 実行例 : NOP メモリ FFFFH メモリ FFFFH → A → A T T IX IX PC+1 PC SP Byte 0000H EP N PS Z V Byte PC Byte 0000H EP N C PS → Byte PC SP → → PC PC+1 → (実行前) Z V C → Byte Byte (実行後) 171 第 6 章 実行命令細則 6.62 OR (OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) AL と TL とのバイトデータをビットごとに論理和をとり , 結果を AL に戻します。 AH の内容は変化しません。 ■ OR (OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) オペレーション (AL) ← (AL) ∨ (TL) ( バイト論理和 ) アセンブラ形式 OR A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 72 172 第 6 章 実行命令細則 実行例 : OR A メモリ FFFFH 15 23 T XX 41 A 15 63 T XX 41 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 173 第 6 章 実行命令細則 6.63 OR (OR Byte Data of Accumulator and Memory to Accumulator) AL と EA メモリ ( 各種アドレスで表現されるメモリ ) とのビットごとに論理和をと り , 結果を AL に戻します。 AH の内容は変化しません。 ■ OR (OR Byte Data of Accumulator and Memory to Accumulator) オペレーション (AL) ← (AL) ∨ (EA) ( バイト論理和 ) アセンブラ形式 OR A, EA コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 / バイト数 / オペコード EA 174 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 74 75 76 77 78 ∼ 7F 第 6 章 実行命令細則 実行例 : OR A, @EP メモリ FFFFH メモリ FFFFH 32 A T T IX IX 56 0122H 56 → PC PC Byte 0000H 01 PS → Byte EP 22 Byte N Z V C 0 0 0 0 (実行前) 0122H → SP → SP EP 76 → 15 → A 15 Byte 0000H 01 22 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 175 第 6 章 実行命令細則 6.64 ORW (OR Word Data of Accumulator and Temporary Accumulator to Accumulator) A と T とのワードデータをビットごとに論理和をとり , 結果を A に戻します。 ■ ORW (OR Word Data of Accumulator and Temporary Accumulator to Accumulator) オペレーション (A) ← (A) ∨ (T) ( ワード論理和 ) アセンブラ形式 ORW A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の A が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 73 176 第 6 章 実行命令細則 実行例 : ORW A メモリ FFFFH 57 23 T 33 41 A 77 63 T 33 41 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 177 第 6 章 実行命令細則 6.65 PUSHW (PUSH Word Data of Inherent Register to Stack Memory) SP の値から 2 ワード減算し , その後 SP で示されるメモリへ dr のワード値を転送し ます。 ■ PUSHW (PUSH Word Data of Inherent Register to Stack Memory) オペレーション (SP) ← (SP) - 2 ( ワード減算 ) ((SP)) ← (dr) ( ワード転送 ) アセンブラ形式 PUSHW dr コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード DR 178 A IX 実行サイクル数 4 4 バイト数 1 1 オペコード 40 41 第 6 章 実行命令細則 実行例 : PUSHW IX メモリ FFFFH メモリ FFFFH T T IX 12 IX 34 0222H SP → A → A 02 22 34 → 0222H SP X 12 02 20 34 X 12 Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → PC → PC 0220H Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 179 第 6 章 実行命令細則 6.66 POPW (POP Word Data of Intherent Register from Stack Memory) SP で示されるメモリからワード値を dr へ転送します。 その後 SP の値に 2 をワード加算します。 ■ POPW (POP Word Data of Intherent Register from Stack Memory) オペレーション (dr) ← ((SP)) ( ワード転送 ) (SP) ← (SP) + 2 ( ワード加算 ) アセンブラ形式 POPW dr コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 / バイト数 / オペコード DR 180 A IX 実行サイクル数 3 3 バイト数 1 1 オペコード 50 51 第 6 章 実行命令細則 実行例 : POPW A メモリ FFFFH メモリ FFFFH XX A T T IX IX 31 26 → XX → A → SP 02 33 SP 26 Byte Byte 26 N Z V C 0 0 0 0 0233H 31 → Byte 0000H → 35 PC → PC PS 02 0233H 31 EP 0235H Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 0 (実行後) 181 第 6 章 実行命令細則 6.67 RET (RETurn from subroutine) スタックに退避してあった PC の内容を復帰します。 CALLV , CALL 命令と対で使うと , それぞれの命令の次の命令に戻ります。 ■ RET (RETurn from subroutine) オペレーション (PC) ← ((SP)) ( ワード転送 ) (SP) ← (SP) + 2 ( ワード加算 ) アセンブラ形式 RET コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 6 バイト数 : 1 オペコード : 20 182 第 6 章 実行命令細則 実行例 : RET メモリ FFFFH メモリ FFFFH T T IX IX → A → A → SP 02 SP 06 02 0208H 08 10 FC 09 0206H Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 PC FC FC 10 Byte 0000H EP (実行前) 0206H → F8 → PC 10 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 183 第 6 章 実行命令細則 6.68 RETI (RETurn from Interrupt) スタックに退避してあった PS, PC の内容を復帰します。 インタラプト以前の状態に PS, PC を戻します。 ■ RETI (RETurn from Interrupt) オペレーション (PS) ← ((SP)), (PC) ← ((SP + 2)) ( ワード転送 ) (SP) ← (SP) + 4 ( ワード加算 ) アセンブラ形式 RETI コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 退避されていた N の値になります。 Z : 退避されていた Z の値になります。 V : 退避されていた V の値になります。 C : 退避されていた C の値になります。 実行サイクル数 : 8 バイト数 : 1 オペコード : 30 184 第 6 章 実行命令細則 実行例 : RETI メモリ FFFFH メモリ FFFFH T T IX IX → A → A 020AH 10 SP 02 FC 06 10 → SP 02 84 Byte 0000H EP PS 0206H 08 XX XX XB Byte Byte → N Z V C 1 0 1 1 (実行前) PC FC 08 10 Byte 0000H EP PS 0206H → XX 84 → PC 0208H FC OA 08 84 Byte Byte → N Z V C 0 1 0 0 (実行後) 185 第 6 章 実行命令細則 6.69 ROLC (Rotate Byte Data of Accumulator with Carry to Left) キャリーを含めて AL のバイトデータを左へ 1 ビットシフトします。 AH の内容は変化しません。 ■ ROLC (Rotate Byte Data of Accumulator with Carry to Left) オペレーション C AL アセンブラ形式 ROLC A コンディションコード (CCR) N Z V C + + - + + : 命令実行により変化します - : 変化しません N : シフトの結果 , MSB=1 ならば 1 となり , それ以外は 0 となります Z : シフト結果が 00H ならば 1 となり , それ以外は 0 となります V : 変化しません C : シフト前の A のビット 7 が入ります 実行サイクル数 : 1 バイト数 : 1 オペコード : 02 186 第 6 章 実行命令細則 実行例 : ROLC A メモリ FFFFH メモリ FFFFH 55 A T T IX IX XX AB → XX → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 1 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 0 (実行後) 187 第 6 章 実行命令細則 6.70 RORC (Rotate Byte Data of Accumulator with Carry to Right) キャリーを含めて AL のバイトデータを右へ 1 ビットシフトします。 AH の内容は変化しません。 ■ RORC (Rotate Byte Data of Accumulator with Carry to Right) オペレーション AL C アセンブラ形式 RORC A コンディションコード (CCR) N Z V C + + - + + : 命令実行により変化します - : 変化しません N : シフトの結果 , MSB=1 ならば 1 となり , それ以外は 0 となります Z : シフト結果が 00H ならば 1 となり , それ以外は 0 となります V : 変化しません C : シフト前の A の LSB が入ります 実行サイクル数 : 1 バイト数 : 1 オペコード : 03 188 第 6 章 実行命令細則 実行例 : RORC A メモリ FFFFH メモリ FFFFH 55 A T T IX IX XX AA → XX → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 1 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 1 (実行後) 189 第 6 章 実行命令細則 6.71 SUBC (SUBtract Byte Data of Accumulator from Temporary Accumulator with Carry to Accumulator) TL のバイトデータから AL のバイトデータを減算して , さらにキャリーを減算し , その結果を AL に戻します。 AH は変化しません。 ■ SUBC (SUBtract Byte Data of Accumulator from Temporary Accumulator with Carry to Accumulator) オペレーション (AL) ← (TL) - (AL) - C ( バイト減算 , キャリー付き ) アセンブラ形式 SUBC A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 : 1 バイト数 : 1 オペコード : 32 190 第 6 章 実行命令細則 実行例 : SUBC A メモリ FFFFH 12 23 T 76 34 A 12 11 T 76 34 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 191 第 6 章 実行命令細則 6.72 SUBC (SUBtract Byte Data of Memory from Accumulator with Carry to Accumulator) AL のバイトデータから EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバ イトデータを減算して , さらにキャリーを減算し , その結果を AL に戻します。 AH は変化しません。 ■ SUBC (SUBtract Byte Data of Memory from Accumulator with Carry to Accumulator) オペレーション (AL) ← (AL) - (EA) - C ( バイト減算 , キャリー付き ) アセンブラ形式 SUBC A, EA コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 / バイト数 / オペコード EA 192 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 34 35 36 37 38 ∼ 3F 第 6 章 実行命令細則 実行例 : SUBC A, #37H メモリ FFFFH メモリ FFFFH 34 A T T IX IX 12 FD → 12 → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 1 (実行後) 193 第 6 章 実行命令細則 6.73 SUBCW (SUBtract Word Data of Accumulator from Temporary Accumulator with Carry to Accumulator) T のワードデータから A のワードデータを減算して , さらにキャリーを減算し , その 結果を A に戻します。 ■ SUBCW (SUBtract Word Data of Accumulator from Temporary Accumulator with Carry to Accumulator) オペレーション (A) ← (T) - (A) - C ( ワード減算 , キャリー付き ) アセンブラ形式 SUBCW A コンディションコード (CCR) N Z V C + + + + + : 命令実行により変化します - : 変化しません N : 演算結果の A が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 演算の結果オーバフローが発生したときに 1 となり , それ以外は 0 となります C : 演算の結果キャリーが発生したときに 1 となり , それ以外は 0 となります 実行サイクル数 : 1 バイト数 : 1 オペコード : 33 194 第 6 章 実行命令細則 実行例 : SUBCW A メモリ FFFFH 32 14 T 56 34 A 24 20 T 56 34 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 195 第 6 章 実行命令細則 6.74 SETB (Set Direct Memory Bit) ダイレクト領域の 1 ビット ( ニーモニックの下位 3 ビット (b) で示される ) の内容を 1 にします。 ■ SETB (Set Direct Memory Bit) オペレーション (dir:b) ← 1 アセンブラ形式 SETB dir:b コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 4 バイト数 : 2 オペコード : A8 ∼ AF 196 第 6 章 実行命令細則 実行例 : SETB 32H:5 メモリ FFFFH メモリ FFFFH T T IX IX → A → A → 00X0 SP 0000 PS 05 Byte → Byte N Z V C 0 0 0 0 0000 Byte 0000H EP (実行前) PS 0032H → Byte 0000H EP 0010 SP PC → PC 0032H → 05 Byte Byte N Z V C 0 0 0 0 (実行後) 197 第 6 章 実行命令細則 6.75 SETC (SET Carry flag) C フラグを 1 にします。 ■ SETC (SET Carry flag) オペレーション (C) ← 1 アセンブラ形式 SETC コンディションコード (CCR) N Z V C - - - S + : 命令実行により変化します - : 変化しません S : 命令実行により 1 になります N : 変化しません Z : 変化しません V : 変化しません C : 1 になります 実行サイクル数 : 1 バイト数 : 1 オペコード : 91 198 第 6 章 実行命令細則 実行例 : SETC メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 → SP → SP Byte 0000H EP (実行前) PS → Byte Byte N Z V C 0 0 0 1 (実行後) 199 第 6 章 実行命令細則 6.76 SETI (SET Interrupt flag) I フラグを 1 にします ( 割込みを許可します ) 。 ■ SETI (SET Interrupt flag) オペレーション (I) ← 1 アセンブラ形式 SETI コンディションコード (CCR) I N Z V C S - - - - + : 命令実行により変化します - : 変化しません S : 命令実行により 1 になります I : 1 になります N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 90 200 第 6 章 実行命令細則 実行例 : SETI メモリ FFFFH メモリ FFFFH T T IX IX → A → A → PC PC Byte 0000H EP PS Byte I IL1 IL0 N Z V C 0 0 0 0 1 1 0 Byte 0000H EP H 1 → SP → SP Byte PS Byte (実行前) H I IL1 IL0 N Z V C 0 1 0 0 1 1 1 0 Byte (実行後) 201 第 6 章 実行命令細則 6.77 SWAP (SWAP Byte Data Accumulator "H" and Accumulator "L") AH のバイトデータと AL のバイトデータを交換します。 ■ SWAP (SWAP Byte Data Accumulator"H"and Accumulator"L") オペレーション (AH) ↔ (AL) ( バイトデータの交換 ) アセンブラ形式 SWAP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 10 202 第 6 章 実行命令細則 実行例 : SWAP メモリ FFFFH メモリ FFFFH AA A T T IX IX AA 32 → 32 → A → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 203 第 6 章 実行命令細則 6.78 XCH (eXCHange Byte Data Accumulator "L" and Temporary Accumulator "L") AL のバイトデータと TL のバイトデータを交換します。 ■ XCH (eXCHange Byte Data Accumulator"L"and Temporary Accumulator"L") オペレーション (AL) ↔ (TL) ( バイトデータの交換 ) アセンブラ形式 XCH A, T コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 42 204 第 6 章 実行命令細則 実行例 : XCH A, T メモリ FFFFH 32 AA T 55 79 A 32 79 T 55 AA → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 205 第 6 章 実行命令細則 6.79 XCHW (eXCHange Word Data Accumulator and Extrapointer) A のワードデータと EP のワードデータを交換します。 ■ XCHW (eXCHange Word Data Accumulator and Extrapointer) オペレーション (A) ↔ (EP) ( ワードデータの交換 ) アセンブラ形式 XCHW A, EP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : F7 206 第 6 章 実行命令細則 実行例 : XCHW A, EP メモリ FFFFH 32 AA A → A T T IX IX 55 79 32 AA → メモリ FFFFH → PC PC EP Byte 0000H 55 79 PS → Byte Byte N Z V C 0 0 0 0 (実行前) EP → SP → SP Byte 0000H PS → Byte Byte N Z V C 0 0 0 0 (実行後) 207 第 6 章 実行命令細則 6.80 XCHW (eXCHange Word Data Accumulator and Index Register) A のワードデータと IX のワードデータを交換します。 ■ XCHW (eXCHange Word Data Accumulator and Index Register) オペレーション (A) ↔ (IX) ( ワードデータの交換 ) アセンブラ形式 XCHW A, IX コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : F6 208 第 6 章 実行命令細則 実行例 : XCHW A, IX メモリ FFFFH 32 AA A → A 79 32 AA T T IX 55 → メモリ FFFFH 55 IX 79 → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 209 第 6 章 実行命令細則 6.81 XCHW (eXCHange Word Data Accumulator and Program Counter) A のワードデータと PC のワードデータを交換します。 ■ XCHW (eXCHange Word Data Accumulator and Program Counter) オペレーション (PC) ← (A) ( ワード転送 ) (A) ← (PC) + 1 ( ワード加算 , ワード転送 ) アセンブラ形式 XCHW A, PC コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 3 バイト数 : 1 オペコード : F4 210 第 6 章 実行命令細則 実行例 : XCHW A, PC メモリ FFFFH F0 C7 A → A T T IX IX F1 7A F0 C7 → メモリ FFFFH → SP SP 79 Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 0 (実行前) PC → F1 → PC Byte 0000H EP PS → Byte Byte N Z V C 1 0 0 0 (実行後) 211 第 6 章 実行命令細則 6.82 XCHW (eXCHange Word Data Accumulator and Stack Pointer) A のワードデータと SP のワードデータを交換します。 ■ XCHW (eXCHange Word Data Accumulator and Stack Pointer) オペレーション (A) ↔ (SP) ( ワードデータの交換 ) アセンブラ形式 XCHW A, SP コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 2 バイト数 : 1 オペコード : F5 212 第 6 章 実行命令細則 実行例 : XCHW A, SP メモリ FFFFH 32 AA A → A T T IX IX 55 79 32 AA → メモリ FFFFH → SP 55 SP 79 Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) PC → → PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 213 第 6 章 実行命令細則 6.83 XCHW (eXCHange Word Data Accumulator and Temporary Accumulator) A のワードデータと T のワードデータを交換します。 ■ XCHW (eXCHange Word Data Accumulator and Temporary Accumulator) オペレーション (A) ↔ (T) ( ワードデータの交換 ) アセンブラ形式 XCHW A, T コンディションコード (CCR) N Z V C - - - - + : 命令実行により変化します - : 変化しません N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 43 214 第 6 章 実行命令細則 実行例 : XCHW A, T メモリ FFFFH 32 AA T 55 79 A 55 79 T 32 AA → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 215 第 6 章 実行命令細則 6.84 XOR (eXclusive OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) AL のバイトデータと TL とのバイトデータをビットごとに排他的論理和をとり , 結 果を AL に戻します。 AH の内容は変化しません。 ■ XOR (eXclusive OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) オペレーション (AL) ← (AL) ∀ (TL) ( バイト排他的論理和 ) アセンブラ形式 XOR A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 52 216 第 6 章 実行命令細則 実行例 : XOR A メモリ FFFFH 76 23 T XX 41 A 76 62 T XX 41 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 217 第 6 章 実行命令細則 6.85 XOR (eXclusive OR Byte Data of Accumulator and Memory to Accumulator) AL のバイトデータと EA メモリ ( 各種アドレッシングで表現されるメモリ ) のバイ トデータをビットごとに排他的論理和をとり , 結果を AL に戻します。 AH の内容は変化しません。 ■ XOR (eXclusive OR Byte Data of Accumulator and Memory to Accumulator) オペレーション (AL) ← (AL) ∀ (EA) ( バイト排他的論理和 ) アセンブラ形式 XOR A, EA コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の AL が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 00H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 / バイト数 / オペコード EA 218 #d8 dir @IX+off @EP Ri 実行サイクル数 2 3 3 2 2 バイト数 2 2 2 1 1 オペコード 54 55 56 57 58 ∼ 5F 第 6 章 実行命令細則 実行例 : XOR A, @EP メモリ FFFFH メモリ FFFFH 32 A 20 T T IX IX 12 0122H 12 → PC PC Byte 0000H 01 22 PS → Byte Byte N Z V C 0 0 0 0 (実行前) EP 0122H → SP → SP EP 54 → 54 → A Byte 0000H 01 22 PS → Byte Byte N Z V C 0 0 0 0 (実行後) 219 第 6 章 実行命令細則 6.86 XORW (eXclusive OR Word Data of Accumulator and Temporary Accumulator to Accmulator) A のワードデータと T のワードデータをビットごとに排他的論理和をとり , 結果を A に戻します。 ■ XORW (eXclusive OR Word Data of Accumulator and Temporary Accumulator to Accmulator) オペレーション (A) ← (A) ∀ (T) ( ワード排他的論理和 ) アセンブラ形式 XORW A コンディションコード (CCR) N Z V C + + R - + : 命令実行により変化します - : 変化しません R : 命令実行により 0 となります N : 演算結果の A が MSB=1 ならば 1 となり , それ以外は 0 となります Z : 演算結果が 0000H ならば 1 となり , それ以外は 0 となります V : 常に 0 となります C : 変化しません 実行サイクル数 : 1 バイト数 : 1 オペコード : 53 220 第 6 章 実行命令細則 実行例 : XORW A メモリ FFFFH 57 23 T 33 41 A 64 62 T 33 41 → A → メモリ FFFFH IX IX → PC PC Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行前) → SP → SP Byte 0000H EP PS → Byte Byte N Z V C 0 0 0 0 (実行後) 221 第 6 章 実行命令細則 222 付録 付録では , 命令一覧表 , バス動作一覧表および命令 マップについて記載しています。 付録 A 命令一覧表 付録 B バス動作一覧表 付録 C 命令マップ 223 付録 付録 A 命令一覧表 ここでは , アセンブラで使用される命令の一覧を記載します。 A.1 F2MC-8FX CPU の命令概要 A.2 動作一覧表 A.3 フラグ変化表 224 付録 A 命令一覧表 A.1 F2MC-8FX CPU の命令概要 F2MC-8FX CPU の命令について説明します。 ■ F2MC-8FX CPU の命令概要 F2MC-8FX CPU には , 140 種類の 1 バイト機械命令 ( マップとしては 256 バイト ) があ り , 命令とそれに続くオペランドによって命令コードを構成します。 図 A.1-1 に命令コードと命令マップの対応を示します。 図 A.1-1 命令コードと命令マップの対応 命令によって0~2バイトを与える 1バイト 命令コード 機械命令 上位4ビット オペランド オペランド [命令マップ] 下 位 4 ビ ッ ト F2MC-8FX CPU の命令の特徴として , 以下のものが挙げられます。 • 命令は転送系 , 演算系 , 分岐系 , その他の 4 つに分類されます。 • アドレス指定は各種の方法があり , 命令の選択とオペランド指定により 10 種類のア ドレッシングを選択できます。 • ビット操作命令を備えており , リードモディファイライト動作が可能です。 • 特殊な動作を指示する命令があります。 225 付録 ■ 命令一覧表の記号 表 A.1-1 に命令コードの記述で使用している記号の説明を示します。 表 A.1-1 命令一覧表の記号の説明 (1 / 2) 表記 意味 dir ダイレクトアドレス (8 ビット長 ) off オフセット (8 ビット長 ) ext エクステンドアドレス (16 ビット長 ) #vct ベクタテーブル番号 (3 ビット長 ) #d8 イミディエートデータ (8 ビット長 ) #d16 イミディエートデータ (16 ビット長 ) dir:b ビットダイレクトアドレス (8 ビット長 : 3 ビット長 ) rel 分岐相対アドレス (8 ビット長 ) @ レジスタ間接 ( 例 : @A, @IX, @EP) A アキュムレータ ( 使用する命令によって 8 ビット長か 16 ビット長かが決まる ) AH アキュムレータの上位 8 ビット (8 ビット長 ) AL アキュムレータの下位 8 ビット (8 ビット長 ) T テンポラリアキュムレータ ( 使用する命令によって 8 ビット長か 16 ビット長かが決まる ) TH テンポラリアキュムレータの上位 8 ビット (8 ビット長 ) TL テンポラリアキュムレータの下位 8 ビット (8 ビット長 ) IX インデックスレジスタ (16 ビット長 ) EP エクストラポインタ (16 ビット長 ) PC プログラムカウンタ (16 ビット長 ) SP スタックポインタ (16 ビット長 ) PS プログラムステータス (16 ビット長 ) dr アキュムレータまたはインデックスレジスタのいずれか (16 ビット長 ) CCR コンディションコードレジスタ (8 ビット長 ) RP レジスタバンクポインタ (5 ビット長 ) DP ダイレクトバンクポインタ (3 ビット長 ) Ri 汎用レジスタ (8 ビット長 , i = 0 ∼ 7) × ×が即値データそのものであることを示す ( 使用する命令によって 8 ビット長か 16 ビット長かが決まる ) 226 付録 A 命令一覧表 表 A.1-1 命令一覧表の記号の説明 (2 / 2) 表記 意味 (×) ×の中身がアクセスの対象であることを示す ( 使用する命令によって 8 ビット長か 16 ビット長かが決まる ) (( × )) ×の中身が示すアドレスがアクセスの対象であることを示す ( 使用する命令によって 8 ビット長か 16 ビット長かが決まる ) ■ 命令一覧表の項目 表 A.1-2 に命令一覧表の項目について説明を示します。 表 A.1-2 命令一覧表の項目 項目 説明 MNEMONIC 命令のアセンブル記述を表します。 RD 内部バスのリード状態を表します。 WR 内部バスのライト状態を表します。 RMW 内部バスのリードモディファイライト信号を表します。 ~ 命令のサイクル数を表します。1 命令サイクルは 1 マシンサイクルです。 ( 注意事項) 命令サイクル数は , 直前の命令によって 1 サイクル延期される場合があります。 また , IO 領域へのアクセスでは , 命令のサイクル数が延長される場合があります。 # 命令のバイト数を表します。 動作 命令の動作を表します。 TL, TH, AH TL, TH および AH の , 各命令実行時の内容の変化を示します。欄内の記号は以下の ものを , それぞれ表します。 • - : 変化しないこと • dH : 動作に記述したデータの上位 8 ビット • AL, AH : 命令直前の AL または AH の内容になること • 00 : 00 になること N, Z, V, C 各命令実行時に変化するフラグを表します。欄内の記号は以下のものを , それぞれ 表します。 • - : 変化しないこと • + : 変化すること • R : 0 になること • S : 1 になること OPCODE 命令のコードを表します。該当命令が複数コードを占める場合は , 次のような記載 規約に則っています。 48 ∼ 4F : 48, 49, …, 4F を示します。 227 付録 A.2 動作一覧表 表 A.2-1 に転送系の , 表 A.2-2 に演算系の , 表 A.2-3 に分岐点の , 表 A.2-4 にその他 の動作一覧表を示します。 ■ 動作一覧表 表 A.2-1 動作一覧表 ( 転送系 ) (1 / 3) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 1 MOV dir, A 3 2 (dir) ← (A) – – – –––– 45 2 MOV @IX+off, A 3 2 ((IX)+off) ← (A) – – – –––– 46 3 MOV ext, A 4 3 (ext) ← (A) – – – –––– 61 4 MOV @EP, A 2 1 ((EP)) ← (A) – – – –––– 47 5 MOV Ri, A 2 1 (Ri) ← (A) – – – –––– 48 ∼ 4F 6 MOV A, #d8 2 2 (A) ← d8 AL – – ++–– 04 7 MOV A, dir 3 2 (A) ← (dir) AL – – ++–– 05 8 MOV A, @IX+off 3 2 (A) ← ((IX)+off) AL – – ++–– 06 9 MOV A, ext 4 3 (A) ← (ext) AL – – ++–– 60 10 MOV A, @A 2 1 (A) ← ((A)) AL – – ++–– 92 11 MOV A, @EP 2 1 (A) ← ((EP)) AL – – ++–– 07 12 MOV A, Ri 2 1 (A) ← (Ri) AL – – ++–– 08 ∼ 0F 13 MOV dir, #d8 4 3 (dir) ← d8 – – – –––– 85 14 MOV @IX+off, #d8 4 3 ((IX)+off) ← d8 – – – –––– 86 15 MOV @EP, #d8 3 2 ((EP)) ← d8 – – – –––– 87 16 MOV Ri, #d8 3 2 (Ri) ← d8 – – – –––– 88 ∼ 8F 17 MOVW dir, A 4 2 (dir) ← (AH), (dir+1) ← (AL) – – – –––– D5 18 MOVW @IX+off, A 4 2 ((IX)+off) ← (AH), ((IX)+off+1) ← (AL) – – – –––– D6 228 付録 A 命令一覧表 表 A.2-1 動作一覧表 ( 転送系 ) (2 / 3) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 19 MOVW ext, A 5 3 (ext) ← (AH), (ext+1) ← (AL) – – – –––– D4 20 MOVW @EP, A 3 1 ((EP)) ← (AH), ((EP)+1) ← (AL) – – – –––– D7 21 MOVW EP, A 1 1 (EP) ← (A) – – – –––– E3 22 MOVW A, #d16 3 3 (A) ← d16 AL AH dH ++–– E4 23 MOVW A, dir 4 2 (AH) ← (dir), (AL) ← (dir+1) AL AH dH ++–– C5 24 MOVW A, @IX+off 4 2 (AH) ← ((IX)+off), (AL) ← ((IX)+off+1) AL AH dH ++–– C6 25 MOVW A, ext 5 3 (AH) ← (ext), (AL) ← (ext+1) AL AH dH ++–– C4 26 MOVW A, @A 3 1 (AH) ← ((A)), (AL) ← ((A)+1) AL AH dH ++–– 93 27 MOVW A, @EP 3 1 (AH) ← ((EP)), (AL) ← ((EP)+1) AL AH dH ++–– C7 28 MOVW A, EP 1 1 (A) ← (EP) – – dH –––– F3 29 MOVW EP, #d16 3 3 (EP) ← d16 – – – –––– E7 30 MOVW IX, A 1 1 (IX) ← (A) – – – –– –– E2 31 MOVW A, IX 1 1 (A) ← (IX) – – dH –––– F2 32 MOVW SP, A 1 1 (SP) ← (A) – – – –––– E1 33 MOVW A, SP 1 1 (A) ← (SP) – – dH –––– F1 34 MOV @A, T 2 1 ((A)) ← (T) – – – –––– 82 35 MOVW @A, T 3 1 ((A)) ← (TH), ((A)+1) ← (TL) – – – –––– 83 36 MOVW IX, #d16 3 3 (IX) ← d16 – – – –––– E6 37 MOVW A, PS 1 1 (A) ← (PS) – – dH –––– 70 38 MOVW PS, A 1 1 (PS) ← (A) – – – ++++ 71 39 MOVW SP, #d16 3 3 (SP) ← d16 – – – –––– E5 229 付録 表 A.2-1 動作一覧表 ( 転送系 ) (3 / 3) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 40 SWAP 1 1 (AH) ↔ (AL) – – AL –––– 10 41 SETB dir:b 4 2 (dir):b ← 1 – – – –––– A8 ∼ AF 42 CLRB dir:b 4 2 (dir):b ← 0 – – – –––– A0 ∼ A7 43 XCH A, T 1 1 (AL) ↔ (TL) AL – – –––– 42 44 XCHW A, T 1 1 (A) ↔ (T) AL AH dH –––– 43 45 XCHW A, EP 1 1 (A) ↔ (EP) – – dH –––– F7 46 XCHW A, IX 1 1 (A) ↔ (IX) – – dH –––– F6 47 XCHW A, SP 1 1 (A) ↔ (SP) – – dH –––– F5 48 MOVW A, PC 2 1 (A) ← (PC) – – dH –––– F0 ( 注意事項 ) 1. A へのバイト転送動作時には , T ← A は low byte のみです。 2. 複数オペランド命令でのオペランドは , MNEMONIC で表示された順に格納される ものとします。 表 A.2-2 動作一覧表 ( 演算系 ) (1 / 4) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 1 ADDC A, Ri 2 1 (A) ← (A)+(Ri)+C – – – ++++ 28 ∼ 2F 2 ADDC A, #d8 2 2 (A) ← (A)+d8+C – – – ++++ 24 3 ADDC A, dir 3 2 (A) ← (A)+(dir)+C – – – ++++ 25 4 ADDC A, @IX+off 3 2 (A) ← (A)+((IX)+off)+C – – – ++++ 26 5 ADDC A, @EP 2 1 (A) ← (A)+((EP))+C – – – ++++ 27 6 ADDCW A 1 1 (A) ← (A)+(T)+C – – dH ++++ 23 7 ADDC A 1 1 (AL) ← (AL)+(TL)+C – – – ++++ 22 8 SUBC A, Ri 2 1 (A) ← (A)-(Ri)-C – – – ++++ 38 ∼ 3F 9 SUBC A, #d8 2 2 (A) ← (A)-d8-C – – – ++++ 34 10 SUBC A, dir 3 2 (A) ← (A)-(dir)-C – – – ++++ 35 230 付録 A 命令一覧表 表 A.2-2 動作一覧表 ( 演算系 ) (2 / 4) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 11 SUBC A, @IX+off 3 2 (A) ← (A)-((IX)+off)-C – – – ++++ 36 12 SUBC A, @EP 2 1 (A) ← (A)-((EP))-C – – – ++++ 37 13 SUBCW A 1 1 (A) ← (T)-(A)-C – – dH ++++ 33 14 SUBC 1 1 (AL) ← (TL)-(AL)-C – – – ++++ 32 15 IINC Ri 3 1 (Ri) ← (Ri)+1 – – – +++– C8 ∼ CF 16 INCW EP 1 1 (EP) ← (EP)+1 – – – –––– C3 17 INCW IX 1 1 (IX) ← (IX)+1 – – – –––– C2 18 INCW A 1 1 (A) ← (A)+1 – – dH ++–– C0 19 DEC Ri 3 1 (Ri) ← (Ri)-1 – – – +++– D8 ∼ DF 20 DECW EP 1 1 (EP) ← (EP)-1 – – – –––– D3 21 DECW IX 1 1 (IX) ← (IX)-1 – – – –––– D2 22 DECW A 1 1 (A) ← (A)-1 – – dH ++–– D0 23 MULU A 8 1 (A) ← (AL)*(TL) – – dH –––– 01 24 DIVU A 17 1 (A) ← (T)/(A), MOD → (T) dL dH dH –+–– 11 25 ANDW A 1 1 (A) ← (A) ∧ (T) – – dH ++R– 63 26 ORW A 1 1 (A) ← (A) ∨ (T) – – dH ++R– 73 27 XORW A 1 1 (A) ← (A) ∀ (Τ) – – dH ++R– 53 28 CMP A 1 1 (TL) - (AL) – – – ++++ 12 29 CMPW A 1 1 (T) - (A) – – – ++++ 13 30 RORC A 1 1 C→A – – – ++–+ 03 31 ROLC A 1 1 C←A – – – ++–+ 02 32 CMP A, #d8 2 2 (A) - d8 – – – ++++ 14 33 CMP A, dir 3 2 (A) - (dir) – – – ++++ 15 34 CMP A, @EP 2 1 (A) - ((EP)) – – – ++++ 17 A 231 付録 表 A.2-2 動作一覧表 ( 演算系 ) (3 / 4) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 35 CMP A, @IX+off 3 2 (A) - ((IX)+off) – – – ++++ 16 36 CMP A, Ri 2 1 (A) - (Ri) – – – ++++ 18 ∼ 1F 37 DAA 1 1 decimal adjust for addition – – – ++++ 84 38 DAS 1 1 decimal adjust for subtraction – – – ++++ 94 39 XOR A 1 1 (A) ← (AL) ∀ (TL) – – – ++R– 52 40 XOR A, #d8 2 2 (A) ← (AL) ∀ d8 – – – ++R– 54 41 XOR A, dir 3 2 (A) ← (AL) ∀ (dir) – – – ++R– 55 42 XOR A, @EP 3 1 (A) ← (AL) ∀ ((EP)) – – – ++R– 57 43 XOR A, @IX+off 4 2 (A) ← (AL) ∀ ((IX)+off) – – – ++R– 56 44 XOR A, Ri 2 1 (A) ← (AL) ∀ (Ri) – – – ++R– 58 ∼ 5F 45 AND A 1 1 (A) ← (AL) ∧ (TL) – – – ++R– 62 46 AND A, #d8 2 2 (A) ← (AL) ∧ d8 – – – ++R– 64 47 AND A, dir 3 2 (A) ← (AL) ∧ (dir) – – – ++R– 65 48 AND A, @EP 2 1 (A) ← (AL) ∧ ((EP)) – – – ++R– 67 49 AND A, @IX+off 3 2 (A) ← (AL) ∧ ((IX)+off) – – – ++R– 66 50 AND A, Ri 2 1 (A) ← (AL) ∧ (Ri) – – – ++R– 68 ∼ 6F 51 OR A 1 1 (A) ← (AL) ∨ (TL) – – – ++R– 72 52 OR A, #d8 2 2 (A) ← (AL) ∨ d8 – – – ++R– 74 53 OR A, dir 3 2 (A) ← (AL) ∨ (dir) – – – ++R– 75 54 OR A,@EP 2 1 (A) ← (AL) ∨ ((EP)) – – – ++R– 77 55 OR A, @IX,off 3 2 (A) ← (AL) ∨ ((IX)+off) – – – ++R– 76 56 OR A, Ri 2 1 (A) ← (AL) ∨ (Ri) – – – ++R– 78 ∼ 7F 57 CMP dir, #d8 4 3 (dir) - d8 – – – ++++ 95 232 付録 A 命令一覧表 表 A.2-2 動作一覧表 ( 演算系 ) (4 / 4) TL TH AH NZVC OP CODE ((EP)) - d8 – – – ++++ 97 3 ((IX)+off) - d8 – – – ++++ 96 3 2 (Ri) - d8 – – – –––– 98 ∼ 9F INCW SP 1 1 (SP) ← (SP) + 1 – – – –––– C1 DECW SP 1 1 (SP) ← (SP) - 1 – – – –––– D1 No MNEMONIC ∼ # 58 CMP @EP, #d8 3 2 59 CMP @IX+off, #d8 4 60 CMP Ri, #d8 61 62 動作 表 A.2-3 動作一覧表 ( 分岐系 ) (1 / 2) No TL TH AH NZVC OP CODE if Z=1 then PC ← PC+rel – – – –––– FD 2 if Z=0 then PC ← PC+rel – – – –––– FC 4 2 2 if C=1 then PC ← PC+rel – – – –––– F9 4 2 2 if C=0 then PC ← PC+rel – – – –––– F8 ( 非分岐時 ) MNEMONIC ∼ # 4 2 2 ( 非分岐時 ) 4 2 ( 分岐時 ) ( 非分岐時 ) 1 BZ/BEQ rel 2 BNZ/BNE rel ( 分岐時 ) ( 分岐時 ) ( 非分岐時 ) 3 BC/BLO rel 4 BNC/BHS rel ( 分岐時 ) 動作 5 BN rel ( 分岐時 ) ( 非分岐時 ) 4 2 2 if N=1 then PC ← PC+rel – – – –––– FB 6 BP rel ( 分岐時 ) ( 非分岐時 ) 4 2 2 if N=0 then PC ← PC+rel – – – –––– FA 7 BLT rel ( 分岐時 ) ( 非分岐時 ) 4 2 2 if V ∀ N=1 then PC ← PC+rel – – – –––– FF 8 BGE rel ( 分岐時 ) ( 非分岐時 ) 4 2 2 if V ∀ N=0 then PC ← PC+rel – – – –––– FE 9 BBC dir:b, rel 5 3 if (dir:b)=0 then PC ← PC+rel – – – –+–– B0 ∼ B7 10 BBS dir:b, rel 5 3 if (dir:b)=1 then PC ← PC+rel – – – –+–– B8 ∼ BF 11 JMP @A 3 1 (PC) ← (A) – – – –––– E0 12 JMP ext 4 3 (PC) ← ext – – – –––– 21 13 CALLV #vct 7 1 vector call – – – –––– E8 ∼ EF 233 付録 表 A.2-3 動作一覧表 ( 分岐系 ) (2 / 2) No MNEMONIC ∼ # 動作 TL TH AH NZVC OP CODE 14 CALL ext 6 3 subroutine call – – – –––– 31 15 XCHW A, PC 3 1 (PC) ← (A), (A) ← (PC)+1 – – dH –––– F4 16 RET 6 1 return from subroutine – – – –––– 20 17 RETI 8 1 return from interrupt – – – restore 30 TL TH AH NZVC OP CODE 表 A.2-4 動作一覧表 ( その他 ) No MNEMONIC ∼ # 動作 1 PUSHW A 4 1 (SP) ← (SP)-2, ((SP)) ← (A) – – – –––– 40 2 POPW A 3 1 (A) ← ((SP)), (SP) ← (SP)+2 – – dH –––– 50 3 PUSHW IX 4 1 (SP) ← (SP)-2, ((SP)) ← (IX) – – – –––– 41 4 POPW IX 3 1 (IX) ← ((SP)), (SP) ← (SP)+2 – – – –––– 51 5 NOP 1 1 No operation – – – –––– 00 6 CLRC 1 1 (C) ← 0 – – – –––R 81 7 SETC 1 1 (C) ← 1 – – – –––S 91 8 CLRI 1 1 (I) ← 0 – – – –––– 80 9 SETI 1 1 (I) ← 1 – – – –––– 90 234 付録 A 命令一覧表 A.3 フラグ変化表 表 A.3-1 に転送系命令の , 表 A.3-2 に演算系命令の , 表 A.3-3 に分岐系命令の , 表 A.3-4 にその他の命令フラグ変化表を示します。 ■ フラグ変化表 表 A.3-1 フラグ変化表 ( 転送系命令 ) (1 / 3) 命令 フラグ変化 MOV dir, A N : 変化しません MOV @IX+off, A Z : 変化しません MOV ext, A V : 変化しません MOV @EP, A C : 変化しません MOV Ri, A MOV , #d8 N : 転送したデータが負なら 1, それ以外なら 0 MOV A, dir Z : 転送したデータが "0" なら 1, それ以外なら 0 MOV A, @IX+off V : 変化しません MOV A, ext C : 変化しません MOV A, @A MOV A, @EP MOV A, Ri MOV dir, #d8 N : 変化しません MOV @IX+off, #d8 Z : 変化しません MOV @EP, #d8 V : 変化しません MOV Ri, #d8 C : 変化しません MOVW dir, A N : 変化しません MOVW @IX+off, A Z : 変化しません MOVW ext, A V : 変化しません MOVW @EP, A C : 変化しません 235 付録 表 A.3-1 フラグ変化表 ( 転送系命令 ) (2 / 3) 命令 フラグ変化 MOVW A, #d16 N : 転送したデータが負なら 1, それ以外なら 0 MOVW A, dir Z : 転送したデータが "0" なら 1, それ以外なら 0 MOVW A, @IX+off V : 変化しません MOVW A, ext C : 変化しません MOVW A, @A MOVW A, @EP MOVW A, EP N : 変化しません MOVW EP, #d16 Z : 変化しません MOVW IX, A V : 変化しません MOVW A, IX C : 変化しません MOVW SP, A MOVW A, SP MOVW SP, #d16 MOV @A, T N : 変化しません MOVW @A, T Z : 変化しません V : 変化しません C : 変化しません MOVW IX, #d16 N : 変化しません MOVW A, PS Z : 変化しません MOVW A, PC V : 変化しません JMP @A C : 変化しません MOVW PS, A N : A のビット 3 が "1" なら 1, "0" なら 0 Z : A のビット 2 が "1" なら 1, "0" なら 0 V : A のビット 1 が "1" なら 1, "0" なら 0 C : A のビット 0 が "1" なら 1, "0" なら 0 SETB dir:b N : 変化しません CLRB dir:b Z : 変化しません V : 変化しません C : 変化しません 236 付録 A 命令一覧表 表 A.3-1 フラグ変化表 ( 転送系命令 ) (3 / 3) 命令 フラグ変化 SWAP N : 変化しません XCH A, T Z : 変化しません V : 変化しません C : 変化しません XCHW A, T N : 変化しません XCHW A, EP Z : 変化しません XCHW A, IX V : 変化しません XCHW A, SP C : 変化しません XCHW A, PC 表 A.3-2 フラグ変化表 ( 演算系命令 ) (1 / 4) 命令 フラグ変化 ADDC A, Ri N : 演算結果が負なら 1, それ以外なら 0 ADDC A, #d8 Z : 演算結果が "0" なら 1, それ以外なら 0 ADDC A, dir V : オーバフローが発生すれば 1, それ以外なら 0 ADDC A, @IX+off C : キャリーが発生すれば 1, それ以外なら 0 ADDC A, @EP ADDC A N : 演算結果が負なら 1, それ以外なら 0 ADDCW A Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : キャリーが発生すれば 1, それ以外なら 0 SUBC A, Ri N : 演算結果が負なら 1, それ以外なら 0 SUBC A, #d8 Z : 演算結果が "0" なら 1, それ以外なら 0 SUBC A, dir V : オーバフローが発生すれば 1, それ以外なら 0 SUBC A, @IX+off C : ボローが発生すれば 1, それ以外なら 0 SUBC A, @EP SUBC A N : 演算結果が負なら 1, それ以外なら 0 SUBCW A Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : ボローが発生すれば 1, それ以外なら 0 237 付録 表 A.3-2 フラグ変化表 ( 演算系命令 ) (2 / 4) 命令 INC Ri フラグ変化 N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : 変化しません INCW EP N : 変化しません INCW IX Z : 変化しません INCW SP V : 変化しません C : 変化しません INCW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : 変化しません C : 変化しません DEC Ri N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : 変化しません DECW EP N : 変化しません DECW IX Z : 変化しません DECW SP V : 変化しません C : 変化しません DECW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : 変化しません C : 変化しません MULU A N : 変化しません Z : 変化しません V : 変化しません C : 変化しません 238 付録 A 命令一覧表 表 A.3-2 フラグ変化表 ( 演算系命令 ) (3 / 4) 命令 DIVU A フラグ変化 N : 変化しません Z : 演算前の A が 0000H なら 1, それ以外なら 0 V : 変化しません C : 変化しません ANDW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : 常に 0 C : 変化しません AND A, #d8 N : 演算結果が負なら 1, それ以外なら 0 AND A, dir Z : 演算結果が "0" なら 1, それ以外なら 0 AND A, @EP V : 常に 0 AND A, @IX+off C : 変化しません AND A, Ri ORW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : 常に 0 C : 変化しません OR A, #d8 N : 演算結果が負なら 1, それ以外なら 0 OR A, dir Z : 演算結果が "0" なら 1, それ以外なら 0 OR A, @EP V : 常に 0 OR A, @IX+off C : 変化しません OR A, Ri XORW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : 常に 0 C : 変化しません 239 付録 表 A.3-2 フラグ変化表 ( 演算系命令 ) (4 / 4) 命令 フラグ変化 XOR A, #d8 N : 演算結果が負なら 1, それ以外なら 0 XOR A, dir Z : 演算結果が "0" なら 1, それ以外なら 0 XOR A, @EP V : 常に 0 XOR A, @IX+off C : 変化しません XOR A, Ri CMP A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : ボローが発生すれば 1, それ以外なら 0 CMPW A N : 演算結果が負なら 1, それ以外なら 0 Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : ボローが発生すれば 1, それ以外なら 0 CMP A, #d8 N : 演算結果が負なら 1, それ以外なら 0 CMP A, dir Z : 演算結果が "0" なら 1, それ以外なら 0 CMP A, @EP V : オーバフローが発生すれば 1, それ以外なら 0 CMP A, @IX+off C : ボローが発生すれば 1, それ以外なら 0 CMP A, Ri CMP dir, #d8 N : 演算結果が負なら 1, それ以外なら 0 CMP @EP, #d8 Z : 演算結果が "0" なら 1, それ以外なら 0 CMP @IX+off, #d8 V : オーバフローが発生すれば 1, それ以外なら 0 CMP Ri, #d8 C : ボローが発生すれば 1, それ以外なら 0 RORC A N : 演算結果が負なら 1, それ以外なら 0 ROLC A Z : 演算結果が "0" なら 1, それ以外なら 0 V : 変化しません C : 演算前の A のビット 0 (RORA のとき ) またはビット 7 (ROLA の とき ) が入ります DAA N : 演算結果が負なら 1, それ以外なら 0 DAS Z : 演算結果が "0" なら 1, それ以外なら 0 V : オーバフローが発生すれば 1, それ以外なら 0 C : キャリー ( ボロー ) が発生すれば 1, それ以外なら 0 240 付録 A 命令一覧表 表 A.3-3 フラグ変化表 ( 分岐系命令 ) 命令 フラグ変化 BZ rel/BEQ rel N : 変化しません BNZ rel/BNE rel Z : 変化しません BC rel/BLO rel V : 変化しません BNC rel/BHS rel C : 変化しません BN rel BP rel BLT rel BGE rel JMP addr16 N : 変化しません Z : 変化しません V : 変化しません C : 変化しません BBC dir:b, rel N : 変化しません BBS dir:b, rel Z : ビット b が "0" なら 1, "1" なら 0 V : 変化しません C : 変化しません CALL addr16 N : 変化しません CALLV #vct Z : 変化しません RET V : 変化しません C : 変化しません RETI N : 退避されていた CCR の N の値が入ります Z : 退避されていた CCR の Z の値が入ります V : 退避されていた CCR の V の値が入ります C : 退避されていた CCR の C の値が入ります 241 付録 表 A.3-4 フラグ変化表 ( その他の命令 ) 命令 フラグ変化 PUSHW A N : 変化しません PUSHW IX Z : 変化しません V : 変化しません C : 変化しません POPW A N : 変化しません POPW IX Z : 変化しません V : 変化しません C : 変化しません NOP N : 変化しません Z : 変化しません V : 変化しません C : 変化しません CLRC N : 変化しません Z : 変化しません V : 変化しません C : "0" になります SETC N : 変化しません Z : 変化しません V : 変化しません C : "1" になります CLRI N : 変化しません Z : 変化しません V : 変化しません C : 変化しません I : "0" になります SETI N : 変化しません Z : 変化しません V : 変化しません C : 変化しません I : "1" になります 242 付録 B バス動作一覧表 付録 B バス動作一覧表 表 B-1 にバス動作一覧表を示します。 ■ バス動作一覧表 表 B-1 バス動作一覧表 (1 / 11) CODE MNEMONIC 00 NOP 80 CLRI 90 SETI 81 CLRC 91 SETC 10 SWAP 12 CMP A 22 ADDC A 32 SUBC A 42 XCH A, T 52 XOR A 62 AND A 72 OR 13 CMPW A 23 ADDCW A 33 SUBCW A 43 XCHW A, T 53 XORW A 63 ANDW A 73 ORW 04 MOV A, #d8 14 CMP A, #d8 24 ADDC A, #d8 34 SUBC A, #d8 54 XOR A, #d8 64 AND A, #d8 74 OR ∼ サイクル アドレスバス データバス RD WR RMW 1 1 N +2 次の次の命令 1 0 0 1 1 N +2 次の次の命令 1 0 0 1 1 N +2 次の次の命令 1 0 0 2 1 N +2 次の命令 1 0 0 2 N +3 次の次の命令 1 0 0 A A A, #d8 243 付録 表 B-1 バス動作一覧表 (2 / 11) CODE MNEMONIC 05 MOV A, dir 15 ∼ サイクル 3 アドレスバス データバス RD WR RMW 1 N +2 次の命令 1 0 0 CMP A, dir 2 dir アドレス データ 1 0 0 25 ADDC A, dir 3 N +3 次の次の命令 1 0 0 35 SUBC A, dir 55 XOR A, dir 65 AND A, dir 75 OR 45 MOV dir, A 1 N +2 次の命令 1 0 0 2 dir アドレス データ 0 1 0 3 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 A, dir 3 06 MOV A, @IX+off 16 CMP A, @IX+off 2 N +3 次の次の命令 1 0 0 26 ADDC A, @IX+off 3 (IX)+off アドレス データ 1 0 0 36 SUBC A, @IX+off 56 XOR A, @IX+off 66 AND A, @IX+off 76 OR 46 MOV @IX+off, A 1 N +2 次の命令 1 0 0 2 N +3 次の次の命令 1 0 0 3 (IX)+off アドレス データ 0 1 0 1 N +2 次の次の命令 1 0 0 2 (EP) アドレス データ 1 0 0 1 N +2 次の次の命令 1 0 0 2 (EP) アドレス データ 0 1 0 A, @IX+off 07 MOV A, @EP 17 CMP A, @EP 27 ADDC A, @EP 37 SUBC A, @EP 57 XOR A, @EP 67 AND A, @EP 77 OR 47 MOV @EP, A 244 3 3 2 A, @EP 2 付録 B バス動作一覧表 表 B-1 バス動作一覧表 (3 / 11) CODE MNEMONIC 08 - 0F MOV A, Ri 18 - 1F CMP A, Ri 28 - 2F ADDC A, Ri 38 - 3F SUBC A, Ri 58 - 5F XOR A, Ri 68 - 6F AND A, Ri 78 - 7F OR 48 - 4F MOV Ri, A ∼ サイクル 2 アドレスバス データバス RD WR RMW 1 N +2 次の次の命令 1 0 0 2 Rn アドレス データ 1 0 0 1 N +2 次の次の命令 1 0 0 2 Rn アドレス データ 0 1 0 1 1 N +2 次の次の命令 1 0 0 2 1 N +2 次の次の命令 1 0 0 2 − − 0 0 0 1 1 N +2 次の次の命令 1 0 0 3 1 N +2 N +2 のデータ 1 0 0 2 分岐アドレス 次の命令 1 0 0 3 分岐アドレス +1 次の次の命令 1 0 0 1 N +2 次の次の命令 1 0 0 A, Ri C0 INCW A D0 DECW A C1 INCW SP D1 DECW SP C2 INCW IX D2 DECW IX C3 INCW EP D3 DECW EP F0 MOVW A, PC E1 MOVW SP, A F1 MOVW A, SP E2 MOVW IX, A F2 MOVW A, IX E3 MOVW EP, A F3 MOVW A, EP E0 JMP @A F5 XCHW A, SP F6 XCHW A, IX F7 XCHW A, EP 2 1 245 付録 表 B-1 バス動作一覧表 (4 / 11) CODE F4 MNEMONIC XCHW A, PC A0 - A7 CLRB dir:n ∼ サイクル 3 4 A8 - AF SETB dir:n B0 - B7 BBC dir:n, rel B8 - BF BBS dir:n, rel アドレスバス データバス RD WR RMW 1 N +2 N +2 のデータ 1 0 0 2 分岐アドレス 次の命令 1 0 0 3 分岐アドレス +1 次の次の命令 1 0 0 1 N +2 次の命令 1 0 1 2 dir アドレス データ 1 0 1 3 dir アドレス データ 0 1 0 4 N +3 次の次の命令 1 0 0 1 N +2 rel 1 0 0 2 dir アドレス データ 1 0 0 3 N +3 N+3 のデータ 1 0 0 4 分岐アドレス 次の命令 1 0 0 5 分岐アドレス +1 次の次の命令 1 0 0 1 N +2 rel 1 0 0 2 dir アドレス データ 1 0 0 3 N +3 次の命令 1 0 0 4 − − 0 0 0 5 N +4 次の次の命令 1 0 0 1 N +2 ext (L byte) 1 0 0 2 N +3 次の命令 1 0 0 3 ext アドレス データ 1 0 0 4 N +4 次の次の命令 1 0 0 1 N +2 ext (L byte) 1 0 0 2 N +3 次の命令 1 0 0 3 ext アドレス データ 0 1 0 4 N +4 次の次の命令 1 0 0 1 N +2 ext (L byte) 1 0 0 2 N +3 次の命令 1 0 0 3 ext アドレス データ (H byte) 1 0 0 4 ext+1 アドレス データ (L byte) 1 0 0 5 N +4 次の次の命令 1 0 0 分岐時 5 非分岐時 5 60 61 C4 246 MOV A, ext MOV ext, A MOVW A, ext 4 4 5 付録 B バス動作一覧表 表 B-1 バス動作一覧表 (5 / 11) CODE D4 C5 D5 C6 D6 MNEMONIC MOVW ext, A MOVW A, dir MOVW dir, A MOVW A, @IX+off MOVW @IX+off, A ∼ サイクル 5 4 4 4 4 アドレスバス データバス RD WR RMW 1 N +2 ext (L byte) 1 0 0 2 N +3 次の命令 1 0 0 3 ext アドレス データ (H byte) 0 1 0 4 ext+1 アドレス データ (L byte) 0 1 0 5 N +4 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 dir アドレス データ (H byte) 1 0 0 3 dir+1 アドレス データ (L byte) 1 0 0 4 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 dir アドレス データ (H byte) 0 1 0 3 dir+1 アドレス データ (L byte) 0 1 0 4 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 N +3 次の次の命令 1 0 0 3 (IX)+off アドレス データ (H byte) 1 0 0 4 (IX)+off+1 アドレス データ (L byte) 1 0 0 1 N +2 次の命令 1 0 0 2 N +3 次の次の命令 1 0 0 3 (IX)+off アドレス データ (H byte) 0 1 0 4 (IX)+off+1 アドレス データ (L byte) 0 1 0 247 付録 表 B-1 バス動作一覧表 (6 / 11) CODE C7 D7 85 95 86 96 248 MNEMONIC MOVW A, @EP MOVW @EP, A MOV dir, #d8 CMP dir, #d8 MOV @IX+off, #d8 CMP @IX+off, #d8 ∼ サイクル 3 3 4 4 4 4 アドレスバス データバス RD WR RMW 1 N +2 次の次の命令 1 0 0 2 (EP) アドレス データ (H byte) 1 0 0 3 (EP)+1 アドレス データ (L byte) 1 0 0 1 N +2 次の次の命令 1 0 0 2 (EP) アドレス データ (H byte) 0 1 0 3 (EP)+1 アドレス データ (L byte) 0 1 0 1 N +2 # d8 1 0 0 2 dir アドレス データ 0 1 0 3 N +3 次の命令 1 0 0 4 N +4 次の次の命令 1 0 0 1 N +2 # d8 1 0 0 2 dir アドレス データ 1 0 0 3 N +3 次の命令 1 0 0 1 N +2 #d8 1 0 0 2 N +3 次の命令 1 0 0 3 (IX)+off アドレス データ 0 1 0 4 N +4 次の次の命令 1 0 0 1 N +2 #d8 1 0 0 2 N +3 次の命令 1 0 0 3 (IX)+off アドレス データ 1 0 0 4 N +4 次の次の命令 1 0 0 付録 B バス動作一覧表 表 B-1 バス動作一覧表 (7 / 11) CODE 87 97 88 - 8F 98 - 9F 82 92 83 MNEMONIC MOV @EP, #d8 CMP @EP, #d8 MOV Ri, #d8 CMP Ri, #d8 MOV @A, T MOV A, @A MOVW @A, T ∼ サイクル 3 3 3 3 2 2 3 アドレスバス データバス RD WR RMW 1 N +2 次の命令 1 0 0 2 (EP) アドレス データ 0 1 0 3 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 (EP) アドレス データ 1 0 0 3 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 Rn アドレス データ 0 1 0 3 N +3 次の次の命令 1 0 0 1 N +2 次の命令 1 0 0 2 Rn アドレス データ 1 0 0 3 N +3 次の次の命令 1 0 0 1 N +2 次の次の命令 1 0 0 2 (A) アドレス データ 0 1 0 1 N +2 次の次の命令 1 0 0 2 (A) アドレス データ 1 0 0 1 N +2 次の次の命令 1 0 0 2 (A) アドレス データ (H byte) 0 1 0 3 (A) +1 アドレス データ (L byte) 0 1 0 249 付録 表 B-1 バス動作一覧表 (8 / 11) CODE 93 MNEMONIC MOVW A, @A ∼ サイクル 3 データバス RD WR RMW 1 N +2 次の次の命令 1 0 0 2 (A) アドレス データ (H byte) 1 0 0 3 (A) +1 アドレス データ (L byte) 1 0 0 1 N +2 データ (L byte) 1 0 0 E4 MOVW A, #d16 E5 MOVW SP, #d16 2 N +3 次の命令 1 0 0 E6 MOVW IX, #d16 3 N +4 次の次の命令 1 0 0 E7 MOVW EP, #d16 84 DAA 1 1 N +2 次の次の命令 1 0 0 94 DAS 02 ROLC A 03 RORC A 70 MOVW A, PS 71 MOVW PS, A 3 1 N +2 次の次の命令 1 0 1 2 Rn アドレス データ 1 0 1 3 Rn アドレス データ 0 1 0 1 N +2 N +2 のデータ 1 0 0 2 ベクタアドレス ベクタ (H) 1 0 0 3 ベクタアドレス +1 ベクタ (L) 1 0 0 4 SP -1 復帰アドレス (L) 0 1 0 5 SP -2 復帰アドレス (H) 0 1 0 6 分岐先アドレス 次の命令 1 0 0 7 分岐先アドレス +1 次の次の命令 1 0 0 C8 - CF INC Ri 3 アドレスバス D8 - DF DEC Ri E8 - EF 250 CALLV #n 7 付録 B バス動作一覧表 表 B-1 バス動作一覧表 (9 / 11) CODE MNEMONIC ∼ サイクル F8 BNC rel 分岐時 F9 BC rel 4 FA アドレスバス データバス RD WR RMW 1 N +2 N +2 のデータ 1 0 0 BP rel 2 N +3 N +3 のデータ 1 0 0 FB BN rel 3 分岐先アドレス 次の命令 1 0 0 FC BNZ rel 4 分岐先アドレス +1 次の次の命令 1 0 0 FD BZ rel 非分岐時 FE BGE rel 2 1 N +2 次の命令 1 0 0 FF BLT rel 2 N +3 次の次の命令 1 0 0 40 PUSHW A 1 N +2 次の次の命令 1 0 0 41 PUSHW IX 2 − − 0 0 0 3 SP -1 退避データ (L) 0 1 0 4 SP -2 退避データ (H) 0 1 0 1 N +2 次の次の命令 1 0 0 2 SP 復帰データ (H) 1 0 0 3 SP +1 復帰データ (L) 1 0 0 1 N +2 N +2 のデータ 1 0 0 2 SP 復帰アドレス (H) 1 0 0 3 SP +1 復帰アドレス (L) 1 0 0 4 − − 0 0 0 5 復帰アドレス 次の命令 1 0 0 6 復帰アドレス +1 次の次の命令 1 0 0 1 N +2 N +2 のデータ 1 0 0 2 SP PSH (RP, DP) 1 0 0 3 SP +1 PSL (CCR) 1 0 0 4 SP +2 復帰アドレス (H) 1 0 0 5 SP +3 復帰アドレス (L) 1 0 0 6 − − 0 0 0 7 復帰アドレス 次の命令 1 0 0 8 復帰アドレス +1 次の次の命令 1 0 0 50 POPW A 51 POPW IX 20 30 RET RETI 4 3 6 8 251 付録 表 B-1 バス動作一覧表 (10 / 11) CODE 31 21 01 MNEMONIC CALL ext JMP ext MULU A ∼ サイクル 6 4 8 アドレスバス データバス RD WR RMW 1 N +2 分岐先アドレス (L) 1 0 0 2 − − 0 0 0 3 SP -1 復帰アドレス (L) 0 1 0 4 SP -2 復帰アドレス (H) 0 1 0 5 分岐先アドレス 次の命令 1 0 0 6 分岐先アドレス +1 次の次の命令 1 0 0 1 N +2 分岐先アドレス (L) 1 0 0 2 − − 0 0 0 3 分岐先アドレス 次の命令 1 0 0 4 分岐先アドレス +1 次の次の命令 1 0 0 1 N +2 次の次の命令 1 0 0 2 − − 0 0 0 8 − − 0 0 0 1 N +2 次の次の命令 1 0 0 2 − − 0 0 0 17 − − 0 0 0 1 − − 0 0 0 2 0FFFDH モードデータ 1 0 0 3 0FFFEH リセットベクタ (H) 1 0 0 4 0FFFFH リセットベクタ (L) 1 0 0 5 − − 0 0 0 6 スタートアドレス 次の命令 1 0 0 7 スタートアドレス +1 次の次の命令 1 0 0 ∼ 11 DIVU A 17 ∼ − 252 RESET 7 付録 B バス動作一覧表 表 B-1 バス動作一覧表 (11 / 11) CODE − MNEMONIC INTERRUPT ∼ サイクル 9 アドレスバス データバス RD WR RMW 1 N +2 N +2 のデータ 1 0 0 2 ベクタアドレス ベクタ (H) 1 0 0 3 ベクタアドレス +1 ベクタ (L) 1 0 0 4 SP -1 復帰アドレス (L) 0 1 0 5 SP -2 復帰アドレス (H) 0 1 0 6 SP -3 PSL (CCR) 0 1 0 7 SP -4 PSH (RP, DP) 0 1 0 8 分岐先アドレス 次の命令 1 0 0 9 分岐先アドレス +1 次の次の命令 1 0 0 - : 無効なバスサイクル N : 実行中の命令が格納されているアドレス (注意事項 ) 命令のサイクルは , 直前の命令によって 1 サイクル延長される場合があります。また , IO 領域への アクセスでは , 命令のサイクル数が延長される場合があります。 253 付録 付録 C 命令マップ 表 C-1 に命令マップを示します。 ■ 命令マップ 表 C-1 命令マップ 254 索引 索引 Symbols A #imm イミディエートアドレッシング (#imm) ..............42 #k ベクタアドレッシング (#k) ...................................42 @EP ポインタアドレッシング (@EP) ...........................41 @IX+off インデックスアドレッシング (@IX+off) ............41 A Numerics 16 ビットデータ 16 ビットデータにおけるメモリ空間配置 ..........13 アキュムレータ (A) ................................................ 18 バイトデータ処理におけるアキュムレータ (A) と テンポラリアキュムレータ (T) の動作例 ............................................................................21 ADDC ADDC (ADD Byte Data of Accumulator and Memory with Carry to Accumulator) ................................52 ADDC (ADD Byte Data of Accumulator and Temporary Accumulator with Carry to Accumulator) ......................................................50 ADDCW ADDCW (ADD Word Data of Accumulator and Temporary Accumulator with Carry to Accumulator) ......................................................54 AND AND (AND Byte Data of Accumulator and Memory to Accumulator) ......................................................58 AND (AND Byte Data of Accumulator and Temporary Accumulator to Accumulator) ............................ 56 ANDW ANDW (AND Word Data of Accumulator and Temporary Accumulator to Accumulator) ......... 60 B BBC BBC (Branch if Bit is Clear) ..................................... 62 BBS BBS (Branch if Bit is Set) .........................................64 BC BC (Branch relative if C=1)/BLO (Branch if LOwer) .............................................. 66 BEQ BZ (Branch relative if Z = 1)/BEQ (Branch if Equal) ............................................................................80 BGE BGE (Branch Great or Equal relative if ≧ Zero) ............................................................................68 BHS BNC (Branch relative if C = 0)/BHS (Branch if Higher or Same) .............................................................. 76 BLT BLT (Branch Less Than zero relative if ................70 BN BN (Branch relative if N = 1) ................................... 72 BNC BNC (Branch relative if C = 0)/BHS (Branch if Higher or Same) .............................................................. 76 BNE BNZ (Branch relative if Z = 0)/BNE (Branch if Not Equal) .................................................................74 255 索引 BNZ BNZ (Branch relative if Z = 0)/BNE (Branch if Not Equal) ..................................................................74 BP BP (Branch relative if N = 0 PLUS) ......................78 BZ BZ (Branch relative if Z = 1)/BEQ (Branch if Equal) ............................................................................80 C DIVU DIVU (DIVide Unsigned) ...................................... 114 DIVU A DIVU A ..................................................................... 45 E EP エクストラポインタ (EP) ...................................... 26 ext エクステンドアドレッシング (ext) ...................... 40 CALL CALL (CALL subroutine) ........................................82 CALLV CALLV (CALL Vectored subroutine) ......................84 CALLV #k CALLV #k ................................................................46 CLRB CLRB (Clear direct Memory Bit) .............................86 CLRC CLRC (Clear Carry flag) ...........................................88 CLRI CLRI (CLeaR Interrupt flag) ....................................90 CMP CMP (CoMPare Byte Data of Accumulator and Memory) .............................................................94 CMP (CoMPare Byte Data of Accumulator and Temporary Accumulator) ...................................92 CMP (CoMPare Byte Data of Immediate Data and Memory) .............................................................96 CMPW CMPW (CoMPare Word Data of Accumulator and Temporary Accumulator) ...................................98 CPU CPU のメモリ空間 ....................................................6 F2MC-8FX CPU の概要 ............................................2 F2MC-8FX CPU の特長 ............................................2 F2MC-8FX CPU の命令概要 ................................225 F2MC-8FX CPU を用いたデバイスの構成例 ........3 I INC INC (INCrement Byte Data of General-purpose Register) ...........................................................116 INCW INCW (INCrement Word Data of Accumulator) ..........................................................................118 INCW (INCrement Word Data of Extra Pointer) ..........................................................................120 INCW (INCrement Word Data of Index Register) ..........................................................................122 INCW (INCrement Word Data of Stack Pointer) ..........................................................................124 IX インデックスレジスタ (IX) ..................................26 J JMP JMP (JuMP to address pointed by Accumulator) ..........................................................................126 JMP (JuMP to effective Address) ........................... 128 JMP @A JMP @A .................................................................... 44 M D DAA DAA (Decimal Adjust for Addition) ......................100 DAS DAS (Decimal Adjust for Subtraction) ...................102 DEC DEC (DECrement Byte Data of Memory Register) ..........................................................................104 DECW DECW (DECrement Word Data of Accumulator) ..........................................................................106 DECW (DECrement Word Data of Extra Pointer) ..........................................................................108 DECW (DECrement Word Data of Index Pointer) ..........................................................................110 DECW (DECrement Word Data of Stack Pointer) ..........................................................................112 dir ダイレクトアドレッシング (dir) ..........................40 dir b ビットダイレクトアドレッシング (dir b) ...........40 256 MOV MOV (MOVE Byte Data from Accumulator to Memory) ...........................................................136 MOV (MOVE Byte Data from Memory to Accumulator) ....................................................132 MOV (MOVE Byte Data from Temporary Accumulator to Address Pointed by Accumulator) ..........................................................................130 MOV (MOVE Immediate Byte Data to Memory) ..........................................................................134 MOVW MOVW (MOVE Immediate Word Data to Extra Pointer) .............................................................156 MOVW (MOVE Immediate Word Data to Index Register) ...........................................................160 MOVW (MOVE Immediate Word Data to Stack Pointer) .............................................................164 MOVW (MOVE Word Data from Accumulator to Extra Pointer) ....................................................154 MOVW (MOVE Word Data from Accumulator to Index Register) ................................................. 158 索引 MOVW (MOVE Word Data from Accumulator to Memory) ...........................................................152 MOVW (MOVE Word data from Accumulator to Processor Status Register) ................................162 MOVW (MOVE Word data from Accumulator to Stack Pointer) .............................................................166 MOVW (MOVE Word Data from Extra Pointer to Accumulator) ....................................................142 MOVW (MOVE Word Data from Index Register to Accumulator) ....................................................144 MOVW (MOVE Word Data from Memory to Accumulator) ....................................................140 MOVW (MOVE Word Data from Processor Status Register to Accumulator) ..................................146 MOVW (MOVE Word Data from Program Counter to Accumulator) ....................................................148 MOVW (MOVE Word Data from Stack Pointer to Accumulator) ....................................................150 MOVW (MOVE Word Data from Temporary Accumulator to Address Pointed by Accumulator) ..........................................................................138 MOVW A, PC MOVW A, PC ...........................................................44 MULU MULU (MULtiply Unsigned) .................................168 MULU A MULU A ...................................................................45 N NOP NOP (NoOPeration) ................................................170 O OR OR (OR Byte Data of Accumulator and Memory to Accumulator) ....................................................174 OR (OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) ..........................172 ORW ORW (OR Word Data of Accumulator and Temporary Accumulator to Accumulator) ..........................176 P R rel 相対アドレッシング (rel) ...................................... 43 RET RET (RETurn from subroutine) ..............................182 RETI RETI (RETurn from Interrupt) ............................... 184 Ri 汎用レジスタアドレッシング (Ri) .......................41 ROLC ROLC (Rotate Byte Data of Accumulator with Carry to Left) .................................................................. 186 RORC RORC (Rotate Byte Data of Accumulator with Carry to Right) ................................................................ 188 S SETB SETB (Set Direct Memory Bit) ..............................196 SETC SETC (SET Carry flag) ...........................................198 SETI SETI (SET Interrupt flag) .......................................200 SP スタックポインタ (SP) .......................................... 17 SUBC SUBC (SUBtract Byte Data of Accumulator from Temporary Accumulator with Carry to Accumulator) ....................................................190 SUBC (SUBtract Byte Data of Memory from Accumulator with Carry to Accumulator) ........192 SUBCW SUBCW (SUBtract Word Data of Accumulator from Temporary Accumulator with Carry to Accumulator) ....................................................194 SWAP SWAP (SWAP Byte Data Accumulator "H" and Accumulator "L") .............................................202 T T テンポラリアキュムレータ (T) ............................ 18 テンポラリアキュムレータ (T) から直接転送する 場合 .................................................................... 22 テンポラリアキュムレータ (T) の使い方 ........... 20 バイトデータ処理におけるアキュムレータ (A) と テンポラリアキュムレータ (T) の動作例 ............................................................................21 PC プログラムカウンタ (PC) ......................................17 POPW POPW (POP Word Data of Intherent Register from Stack Memory) .................................................180 PS プログラムステータス (PS) の構造 .....................23 プログラムステータス (PS) のフラグ .................24 PUSHW PUSHW (PUSH Word Data of Inherent Register to Stack Memory) .................................................178 X XCH XCH (eXCHange Byte Data Accumulator "L" and Temporary Accumulator "L") .......................... 204 XCHW XCHW (eXCHange Word Data Accumulator and Extrapointer) ..................................................... 206 257 索引 XCHW (eXCHange Word Data Accumulator and Index Register) ............................................................208 XCHW (eXCHange Word Data Accumulator and Program Counter) .............................................210 XCHW (eXCHange Word Data Accumulator and Stack Pointer) .............................................................212 XCHW (eXCHange Word Data Accumulator and Temporary Accumulator) .................................214 XCHW A, PC XCHW A, PC ............................................................45 XOR XOR (eXclusive OR Byte Data of Accumulator and Memory to Accumulator) .................................218 XOR (eXclusive OR Byte Data of Accumulator and Temporary Accumulator to Accumulator) .......216 XORW XORW (eXclusive OR Word Data of Accumulator and Temporary Accumulator to Accmulator) .........220 あ アキュムレータ アキュムレータ (A) ................................................ 18 バイトデータ処理におけるアキュムレータ (A) と テンポラリアキュムレータ (T) の動作例 ............................................................................21 アドレッシング メモリ空間とアドレッシング ................................7 い イミディエートアドレッシング イミディエートアドレッシング (#imm) ............. 42 インデックスアドレッシング インデックスアドレッシング (@IX+off) ............41 インデックスレジスタ インデックスレジスタ (IX) ..................................26 インヘレントアドレッシング インヘレントアドレッシング ..............................43 え エクステンドアドレッシング エクステンドアドレッシング (ext) ...................... 40 エクストラポインタ エクストラポインタ (EP) ...................................... 26 か 概要 F2MC-8FX CPU の概要 ............................................ 2 す スタックポインタ スタックポインタ (SP) .......................................... 17 スタック領域 スタック領域 ............................................................ 9 せ 専用レジスタ F2MC-8FX の専用レジスタ ................................... 16 そ 相対アドレッシング 相対アドレッシング (rel) ...................................... 43 た ダイレクトアドレッシング ダイレクトアドレッシング (dir) .......................... 40 ダイレクトバンク ダイレクトバンク ..................................................28 ダイレクトバンクポインタ レジスタバンクポインタ・ダイレクトバンクポイ ンタへのアクセス ............................................ 25 258 索引 ダイレクト領域 ダイレクト領域 .......................................................10 多重割込み 多重割込み ...............................................................35 て テンポラリアキュムレータ テンポラリアキュムレータ (T) ............................18 テンポラリアキュムレータ (T) から直接転送する 場合 ....................................................................22 テンポラリアキュムレータ (T) の使い方 ...........20 バイトデータ処理におけるアキュムレータ (A) と テンポラリアキュムレータ (T) の動作例 ............................................................................21 と 動作一覧 動作一覧表 .............................................................228 特長 F2MC-8FX CPU の特長 ............................................2 は バイトデータ処理 バイトデータ処理におけるアキュムレータ (A) と テンポラリアキュムレータ (T) の動作例 ............................................................................21 バス動作一覧 バス動作一覧表 .....................................................243 汎用レジスタ F2MC-8FX の汎用レジスタ ...................................16 汎用レジスタアドレッシング 汎用レジスタアドレッシング (Ri) .......................41 汎用レジスタバンク領域 汎用レジスタバンク領域 .........................................9 ひ ビットダイレクトアドレッシング ビットダイレクトアドレッシング (dir b) ...........40 ふ フラグ変化 フラグ変化表 .........................................................235 プログラムカウンタ プログラムカウンタ (PC) ......................................17 プログラムステータス プログラムステータス (PS) の構造 .....................23 プログラムステータス (PS) のフラグ .................24 へ ベクタアドレッシング ベクタアドレッシング (#k) ................................... 42 ベクタコール命令テーブル ベクタコール命令テーブル ..................................11 ほ ポインタアドレッシング ポインタアドレッシング (@EP) .......................... 41 め 命令 F2MC-8FX CPU の命令概要 ................................225 命令一覧 命令一覧表の記号 ................................................226 命令一覧表の項目 ................................................227 命令マップ 命令マップ ............................................................ 254 メモリ空間 16 ビットデータにおけるメモリ空間配置 ......... 13 CPU のメモリ空間 ....................................................6 メモリ空間とアドレッシング ................................7 り リセット リセット動作 .......................................................... 37 リセット / 割込みベクタテーブル .......................11 れ レジスタバンクポインタ レジスタバンクポインタ・ダイレクトバンクポイ ンタへのアクセス ............................................ 25 レジスタバンクレジスタ レジスタバンクレジスタ ...................................... 27 わ 割込み 周辺の割込み要求 ..................................................32 多重割込み .............................................................. 35 リセット / 割込みベクタテーブル .......................11 割込み許可 / 禁止 / 優先順位機構 ........................ 31 割込み処理プログラムの作成方法 ...................... 33 割込み動作概要 ......................................................30 259 索引 260 CM26-00301-2 富士通半導体デバイス • CONTROLLER MANUAL F2MC®-8FX 8 ビット・マイクロコントローラ プログラミングマニュアル 2008 年 2 月 第 2 版発行 発行 富士通株式会社 編集 マーケティング統括部 販売戦略部 電子デバイス事業本部