3.6MB

本ドキュメントは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 分岐処理が行えます。
【例】
[email protected]
実行前
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 版発行
発行
富士通株式会社
編集
マーケティング統括部 販売戦略部
電子デバイス事業本部
Similar pages