TLCS-870/C1 シリーズ 命令セット

TLCS-870/C1 シリーズ 命令セット
セミコンダクター社
TLCS-870/C1
Page 2
TLCS-870/C1
第1章
概要
TLCS-870/C1 シリーズの基本機械命令は、133 種 732 命令で、下表に命令の分類を示します。TLCS-870/
C1 シリーズには、1 バイト長から最長 5 バイト長の命令があります。使用頻度の高い命令は、オブジェ
クトコードを短くしており、メモリ効率の良いプログラムを組むことができます。
また、TLCS-870/C1 シリーズは、メモリマップド I/O 方式の採用によりシンプルな命令体系で、ニモ
ニックは 42 種類でありながら、18 種類におよぶアドレッシングモードにより強力なメモリ操作が可能で
す。
基本機械命令のほかに、コーディング効率の向上を図るためアセンブラによる拡張機械命令が用意され
ています。
表 1-1 命令セット
転送 / 交換
8 ビットデータ転送 / 交換
7種
49 命令
16 ビットデータ転送 / 交換
7
43
フラグ操作
5
5
SP 操作
1
2
プッシュ / ポップ
4
6
比較
4
29
増減
4
28
算術演算
16
116
論理演算
12
87
十進補正
2
2
比較
3
15
増減
2
2
算術演算
12
60
論理演算
9
45
2 の補数
1
1
2
2
8 ビット ( 論理 )
2
2
16 ビット ( 算術 )
2
2
8 ビット
2
2
8 ビット演算
演算
16 ビット演算
乗除算
シフト /
シフト
ローテート
ローテート
ニブル処理
スワップ / ニブルローテート
3
27
ビット操作
セット / クリア / 反転 / 転送 / 交換 / 演算
18
162
ジャンプ
6
24
コール
4
16
リターン
3
3
ソフトウエア割り込み / その他
2
2
133 種
732 命令
分岐
その他
計
表 1-2 アドレッシングモード(1 / 2)
7種
レジスタ間接
RA001
ダイレクト
2
レジスタ
1
Page 1
第 1 章 概要
1.1 記号の説明
TLCS-870/C1
表 1-2 アドレッシングモード(2 / 2)
イミディエート
1
リラティブ
2
アブソリュート
1
ベクタ
1
直接ビット
2
レジスタ間接ビット
1
計
18
1.1 記号の説明
以下の命令 / アドレッシングモードの説明では、次の記号を使用します。
記号
説明
記号
説明
A
A レジスタ
r, g
8 ビットレジスタ ( 表 1-3 参照 )
W
W レジスタ
rr, gg
16 ビットレジスタ ( 表 1-4 参照 )
B
B レジスタ
n
4 ビットまたは 8 ビットイミディエートデータ
C
C レジスタ
mn
16 ビットイミディエートデータ
D
D レジスタ
d
符号付き 5 ビットまたは 8 ビットディスプレースメ
E
E レジスタ
x, y
8 ビットダイレクトアドレス (0x0000 ~ 0x00FF)
H
H レジスタ
vw, uz
16 ビットダイレクトアドレス (0x0000 ~ 0xFFFF)
L
L レジスタ
(XX)
XX で指定されるアドレスのメモリの内容
WA
レジスタペア WA
(XX + 1, XX)
ント (−16~+15/−128~+127)
XX で指定されるアドレスから連続する 2 バイトの
メモリの内容
BC
レジスタペア BC
b
ビット番号 (0~7)
DE
HL
レジスタペア DE
.b
b で指定されるビットの内容
レジスタペア HL
←
転送
IX
IX レジスタ
↔
交換
IY
IY レジスタ
+
加算
PC
プログラムカウンタ
−
減算
SP
スタックポインタ
×
乗算
PSW
プログラムステータスワード
÷
除算
JF
ジャンプステータスフラグ
&
ビットごとの論理積
ZF
ゼロフラグ
⏐
ビットごとの論理和
CF
キャリーフラグ (1 ビットアキュムレータ )
^
ビットごとの排他的論理和
HF
ハーフキャリーフラグ
null
ノーオペレーション ( 何も実行せず、次のアドレス
の命令に移ります。)
命令の先頭アドレス ( 命令実行中のプログラムカウ
SF
サインフラグ
$
VF
オーバフローフラグ
(src)
ソースメモリ
CF
キャリーフラグの内容の反転
(dst)
デスティネーションメモリ
IMF
割り込みマスタ許可フラグ
RBS
レジスタバンクセレクタ
ンタの内容は、$ + 2 または $ + 3 になります。)
NxtOp
RA001
ネクストオペレーションアドレス ( 次の命令の先頭
アドレスの値 )
Page 2
TLCS-870/C1
表 1-3
r, g
8 ビットレジスタ
0
1
2
3
4
5
6
7
A
W
C
B
E
D
L
H
rr, gg
16 ビットレジスタ
0
1
2
3
4
5
6
7
WA
BC
DE
HL
IX
IY
SP
HL
表 1-4
フラグのセット条件
*
オペレーションで指定された値がセットされます。
Z
ゼロ検出情報がセットされます。
•
転送
8 ビットのソースデータが 0x00 のとき、“1” がセットされます。0x00 以外のときは “0” がセット
されます。
•
交換
交換前の g または (src) の内容が 0x00 のとき “1” がセットされます。0x00 以外のときは “0” がセッ
トされます。
•
演算
演算結果が 0x00 (8 ビット演算 ), 0x0000 (16 ビット演算 ) のとき “1” がセットされます。それ以
外のときは “0” がセットされます。
ただし、乗算のときは積の上位 8 ビットが、除算のときは余りが、それぞれ 0x00 のとき “1” に
セットされます。0x00 以外のときは “0” がセットされます。
•
シフト / ローテート
シフト / ローテート後のレジスタの内容が 0x00 のとき “1” がセットされます。0x00 以外のときは
“0” がセットされます。
•
C
その他
JF の欄に Z とある場合は、ZF にセットされる値が JF にもセットされることを示します。
キャリー情報がセットされます。
•
加算
最上位ビットからキャリー ( 桁上げ ) がセットされます。
•
減算
最上位ビットへのボロー ( 桁借り ) がセットされます。
•
除算
除数が 0x00 のときまたは商が 0x100 以上のとき “1” がセットされます。それ以外のときは “0” が
•
その他
セットされます。
C
CF にセットされる値の反転値がセットされます。
H
ハーフキャリー情報がセットされます。
S
RA001
JF の欄に C とある場合は、CF にセットされる値が JF にもセットされることを示します。
•
加算
ビット 3 からのキャリー ( 桁上げ ) がセットされます。
•
減算
ビット 3 へのボロー ( 桁借り ) がセットされます。
サイン情報 ( データの最上位ビット ) がセットされます。
V
オーバフロー情報がセットされます。
J
JF にセットされる値の反転値がセットされます。
1
“1” がセットされます。
0
“0” がセットされます。
U
不定値がセットされます。
−
フラグは変化せず、命令実行前の値が保持されます。
Page 3
第 1 章 概要
1.2 ニモニック
TLCS-870/C1
1.2 ニモニック
TLCS-870/C1 シリーズの命令のニモニックの規則は、以下のとおりです。
ニモニックは、オペコードとオペランドから構成されています ( オペランドのない命令もあります )。
オペコードの次に 1 つ以上のスペースを空けてオペランドを置きます。2 つ以上のオペランドがある場合
は、オペランドをカンマで区切って並べます。
ソースオペランドとデスティネーションオペランドの 2 つがある場合は、必ずデスティネーションオペ
ランドを先に置きます。ソースオペランドが複数ある場合は、先に被演算数を置きます。
オペランドにビット指定が含まれる場合は、アドレス指定とビット指定はピリオドで区切ります。
mnemonic
opcode
RET
ROLC
A
opcode
operand
ADD
A, B
opcode
destination
operand
,
source
operand
CMP
A, B
opcode
1st source
operand
,
2nd source
operand
AND
(HL), n
opcode
1st source
operand
SET
(HL). b
opcode
address
LD
CF, (HL). b
opcode
2nd source
, operand
operand
.
bit
2nd operand
1st operand
表 1-5 ニモニック一覧(1 / 2)
ニモニック
RA001
機能
ADD
ADDC
AND
Add
Add with carry
Logical AND
CALL
CALLV
CLR
CMP
CPL
Call
Vector call
Clear bit/byte
Compare
1’s complement bit
DAA
DAS
DEC
DI*
DIV
Decimal adjust for 8-bit addition
Decimal adjust for 8-bit subtraction
Decrement byte/word (Register)
Disable maskable interrupt
Divide byte quotient
EI*
Enable interrupt
INC
Increment byte/word (Register)
J*
JP
JR
JRS
Optimized jump
Absolute jump
Relative jump
Short relative jump
LD
LDW
Load bit/byte/word (Register)/effective address
Load word (Memory)
MUL
Multiply
NEG
Negate
NOP
No operation
OR
Logical OR
Page 4
,
address
.
bit
TLCS-870/C1
表 1-5 ニモニック一覧(2 / 2)
ニモニック
機能
POP
PUSH
Pop up
Push down
RET
RETI
RETN
ROLC
ROLD
RORC
RORD
Return from subroutine
Return from maskable interrupt service routine
Return from non-maskable interrupt service routine
Rotate left through carry
Rotate left digit
Rotate right through carry
Rotate right digit
SET
SHLC
SHLCA
SHRC
SHRCA
SUB
SUBB
SWAP
SWI
Bit test and set
Logical shift left
Arithmetic shift left
Logical shift right
Arithmetic shift right
Subtract
Subtract with borrow
Swap nibble
Software interrupt
TEST*
Bit test
XCH
XOR
Exchange
Logical exclusive OR
注 ) *: アセンブラ拡張機械命令
1.3 オブジェクトコードフォーマット
TLCS-870/C1 シリーズは、1 バイトオペコード命令と 2 バイトオペコード命令を持っています。
1.3.1
1 バイトオペコード命令のコードフォーマット
第 1 バイトにオペコードを置き、第 2 バイト以降にオペランドを置きます。オペランドが 2 バイ
トデータの場合、下位バイトを先に、上位バイトを後に置きます。また、オペランドがソースとデ
スティネーションの 2 つである場合、ソースが即値のとき ( 例 : LD (x), n 命令 ) はデスティネーショ
ンより後に置きます。
1
3
4
LD
A, B
opcode
LD
A, n
opcode
n
LD
WA, mn
opcode
n
m
LD
(x), n
opcode
x
n
opcode
x
n
LDW (x), mn
1.3.2
2
m
2 バイトオペコード命令のコードフォーマット
第 1 バイトに第 1 オペコードを置き、次に第 1 オペコードで指定されたオペランドを置き、その
後に第 2 オペコードと第 2 オペコードで指定されたオペランドを置きます。
第 1 オペコードは、アドレッシングモード指定用のコードでプリフィックスコードとも呼びます。
プリフィックスには、レジスタを指定するレジスタプリフィックスと、ソースまたはデスティネー
ションメモリを指定するソース / デスティネーションメモリプリフィックスがあります。
なお、次の 5 命令の第 1 オペコードは、指定レジスタの内容を無視します。
RA001
Page 5
第 1 章 概要
1.4 アドレッシングモード
TLCS-870/C1
① RETN
② LD PSW, n
③ PUSH PSW
④ POP PSW
⑤ JR M/P/SLT/SGE/SLE/SGT/VS/VC, a
1
2
3
4
B, C
1st opcode 2nd opcode
ADD B, n
1st opcode 2nd opcode
LD
B, (HL)
1st opcode 2nd opcode
LD
B, (x)
1st opcode
x
2nd opcode
LD
B, (HL + d) 1st opcode
d
2nd opcode
LD
(HL + d), n
1st opcode
d
2nd opcode
LD
n
n
1.4 アドレッシングモード
TLCS-870/C1 シリーズには、17 種類のアドレッシングモード ( アドレス指定の方法 ) があります。なお、
命令によっては、複数のアドレッシングモードが組み合わさることもあります。
1.4.1
レジスタ間接
1.4.1.1
レジスタ間接 (HL), (DE), (IX), (IY)
16 ビットレジスタ HL, DE, IX, IY の内容で指定されるアドレス。
࠺࡯࠲㗔ၞ
଀1:
LD
A, (HL)
HL
01
23
0x00123
5F
5F
A
HL レジスタの内容で指定されるアドレスすなわち 0x00123 番地のメモリの内容 0x5F が A レ
ジスタにロードされます。
࠺࡯࠲㗔ၞ
଀2:
LD
IX
01
A, (IX)
23
0x00123
75
75
A
IX レジスタの内容で指定されるアドレスすなわち 0x00123 番地のメモリの内容 0x75 が A レ
ジスタにロードされます。
RA001
Page 6
TLCS-870/C1
࠺࡯࠲㗔ၞ
଀3:
LD
IY
01
A, (IY)
23
0x00123
9B
9B
A
IY レジスタの内容で指定されるアドレスすなわち 0x00123 番地のメモリの内容 0x9B が A レ
ジスタにロードされます。
1.4.1.2
8 ビットディスプレースメント オフセット付きレジスタ間接 (HL + d), (IX + d), (IY +
d)
16 ビットレジスタ HL, IX, IY の内容にオブジェクトコード中の 8 ビットディスプレイスメン
ト d を符号拡張 ( 下表参照 ) して加算した値で指定されるアドレス。なお、16 ビットレジスタ
HL, IX, IY の内容は変化しません。
ディスプレースメント d
符号拡張した値
0x00 ~ 0x7F
0x0000 ~ 0x007F (0~+127)
0x80 ~ 0xFF
0xFF80 ~ 0xFFFF (−128~−1)
d
1
଀1:
LD
2
A, (HL + 0x12)
ࠦ࡯࠼㗔ၞ
D7
12
HL
01
23
+
00
01
12
35
࠺࡯࠲㗔ၞ
╓ภ᜛ᒛ
0x00135
C4
C4
A
HL レジスタの内容 (0x0123) にディスプレースメント (0x12) を符号拡張して (0x0012) 加算し
た値で指定されるアドレスすなわち 0x00135 番地のメモリの内容 0xC4 が A レジスタにロード
されます。
଀2:
LD
A, (IX + 0xD6)
ࠦ࡯࠼㗔ၞ
D4
D6
IX
01
23
+
FF
D6
00
F9
1
RA001
࠺࡯࠲㗔ၞ
╓ภ᜛ᒛ
0x000F9
Page 7
27
27
A
第 1 章 概要
1.4 アドレッシングモード
TLCS-870/C1
IX レジスタの内容 (0x0123) にディスプレースメント (0xD6) を符号拡張して (0xFFD6) 加算し
た値で指定されるアドレスすなわち 0x000F9 番地のメモリの内容 0x27 が A レジスタにロード
されます。
1.4.1.3
レジスタインデックス (HL + C)
HL レジスタの内容に C レジスタの内容を符号拡張 ( 下表参照 ) して、加算した値で指定され
るアドレス。なお、HL レジスタ , C レジスタの内容は変化しません。
C
F5
C レジスタ
符号拡張した値
0x00 ~ 0x7F
0x0000 ~ 0x007F (0~+127)
0x80 ~ 0xFF
0xFF80 ~ 0xFFFF (−128~−1)
଀:
LD
HL
01
23
FF
F5
01
18
╓ภ᜛ᒛ
A, (HL + C)
࠺࡯࠲㗔ၞ
+
1
0x00118
36
36
A
HL レジスタの内容 (0x0123) に C レジスタの内容 (0xF5) を符号拡張して (0xFFF5) 加算した値
で指定されるアドレスすなわち 0x00118 番地のメモリの内容 0x36 が A レジスタにロードされま
す。
1.4.1.4
スタックポインタ間接オートプリインクリメント (+SP)
まず、SP の内容をインクリメントします。実効アドレスはインクリメントされた SP の内容
となります。SP のインクリメントによるフラグ変化はありません。
このアドレッシングモードは、ソース ( 転送元 ) メモリのアドレス指定にのみ使用できます。
଀:
LD
A, (+SP)
࠺࡯࠲㗔ၞ
SP (ታⴕ೨)
4
3
1
F
SP (ታⴕᓟ)
4
3
2
0
0x04320
B7
B7
A
SP の内容をインクリメントし、その値で指定されるアドレスすなわち 0x04320 番地のメモリ
の内容 0xB7 が A レジスタにロードされます。
1.4.1.5
スタックポインタ間接オートポストデクリメント (SP−)
実効アドレスは SP の内容となります。データ処理後、SP の内容は自動的にデクリメントさ
れます。SP のデクリメントによるフラグ変化はありません。
このアドレッシングモードは、デスティネーション ( 転送元 ) メモリのアドレス指定にのみ使
用できます。
RA001
Page 8
TLCS-870/C1
଀:
LD
(SP), A
࠺࡯࠲㗔ၞ
SP (ታⴕ೨)
3
0
0
0
SP (ታⴕᓟ)
2
F
F
F
0x03000
1C
1C
A
SP の内容で指定されるアドレスすなわち 0x03000 番地のメモリに A レジスタの内容 0x1C が
ストアされます。その後、SP はデクリメントされ、0x2FFF となります。
1.4.1.6
8 ビットディスプレースメントオフセット付きスタックポインタ間接 (SP + d)
スタックポインタ SP の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を
符号拡張 ( 下表参照 ) して、加算した値が実効アドレスとなります。なお、SP の内容は変化し
ません。
ディスプレースメント d
符号拡張した値
0x00 ~ 0x7F
0x0000 ~ 0x007F (0~+127)
0x80 ~ 0xFF
0xFF80 ~ 0xFFFF (−128~−1)
d
1
଀:
LD
WA, (SP + 0xD6)
2
ࠦ࡯࠼㗔ၞ
D6
D6
48
࠺࡯࠲㗔ၞ
SP
12
34
+
FF
D6
12
0A
1
╓ภ᜛ᒛ
0x0120A
0x0120B
27
4E
4E
27
WA
SP の内容 (0x1234) にディスプレースメント (0xD6) を符号拡張して (0xFFD6) 加算した値で指
定されるアドレスすなわち 0x0120A 番地から連続する 2 バイトのメモリの内容 0x4E27 が WA
レジスタにロードされます。
1.4.1.7
レジスタオフセットリラティブインデックス (PC + A)
プログラムカウンタの内容 ( 実行命令の先頭アドレス +2) に A レジスタの内容を符号拡張 ( 下
表参照 ) して加算した値で指定されるアドレス。このアドレッシングモードは、ソース ( 転送元
) アドレスの指定にのみ使用できます。このアドレッシングモードを使用することにより、BCD
コード → 7 セグメントコードなどのコード変換 , テーブルルックアップ , テーブルサーチや n 通
りの多方向分岐処理などを容易にプログラムすることができます。
RA001
Page 9
第 1 章 概要
1.4 アドレッシングモード
TLCS-870/C1
଀1:
LD
アキュムレータ
符号拡張した値
0x00 ~ 0x7F
0x0000 ~ 0x007F (0~+127)
0x80 ~ 0xFF
0xFF80 ~ 0xFFFF (−128~−1)
ࠦ࡯࠼㗔ၞ
A, (PC + A)
+2
0x1C536
0x1C537
PC
A (ታⴕ೨)
╓ภ᜛ᒛ
07
C5
38
00
07
C5
3F
3F
40
LD A, (PC + A)
๮઎
࠺࡯࠲㗔ၞ
+
A (ታⴕᓟ)
0x0C53F
D8
D8
プログラムカウンタの内容 (0xC538) にAレジスタの内容 (0x07) を符号拡張して (0x0007) 加算
した値で指定されるアドレスすなわち 0x0C53F 番地のメモリの内容 0xD8 が A レジスタにロー
ドされます。
଀2:
JP
ࠦ࡯࠼㗔ၞ
(PC + A)
+2
PC
A
16
╓ภ᜛ᒛ
C1
74
00
16
C1
8A
0x1C172
3F
FE
JP (PC + A)
๮઎
࠺࡯࠲㗔ၞ
+
0x0C18A
0x0C18B
4B
D0
ਅ૏
਄૏
D0
4B
PC
プログラムカウンタの内容 (0xC174) にAレジスタの内容 (0x16) を符号拡張して (0x0016) 加算
した値で指定されるアドレスすなわち0x0C18A番地から連続する2バイトのメモリ内容0xD04B
がプログラムカウンタにロードされます。すなわち 0x1D04B 番地にジャンプします。
注 ) 870/C と 870/C1 での(PC+A) の扱いの違い
870/C1 では (PC+A) を使用してアクセスする領域はコード領域ではなく、データ領域となりま
す。そのため、(PC+A) によるアドレッシングには互換性がありません。
870/C から 870/C1 へのプログラム移植時に注意が必要です。
1.4.2
ダイレクト
1.4.2.1
8 ビットダイレクト (x)
オブジェクトコード中の 8 ビット値 x で直接指定される 0x00000 ~ 0x000FF 番地のアドレス。
RA001
Page 10
TLCS-870/C1
଀:
LD
A, (0x87)
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
࠺࡯࠲㗔ၞ
x
0x00087
19
19
A
ࠝࡍࠦ࡯࠼
ࠝࡍ࡜ࡦ࠼
ࠦ࡯࠼㗔ၞ
0C
87
LD A, (0x87)๮઎
オブジェクトコードの x (0x87) で直接指定されるアドレスすなわち 0x00087 番地の内容 0x19
が A レジスタにロードされます。
16 ビットダイレクト (vw)
1.4.2.2
オブジェクトコード中の16ビット値vwで直接指定される0x00000 ~ 0x0FFFF番地のアドレス。
଀:
LD
A, (0x5678)
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
࠺࡯࠲㗔ၞ
E1/F1
0x05678
24
24
w
v
A
╙1ࠝࡍࠦ࡯࠼
ࠝࡍ࡜ࡦ࠼
╙1ࠝࡍࠦ࡯࠼
ࠦ࡯࠼㗔ၞ
ਅ૏
਄૏
56
E1
78
56
40
LD๮઎
78
オブジェクトコードの vw (0x5678) で直接指定されるアドレスすなわち 0x05678 番地の内容
0x24 が A レジスタにロードされます。
1.4.3
レジスタ r または rr
オブジェクトコード ( オペコード ) 中のレジスタ指定フィールドにより指定されるレジスタが操作
対象となります。
1:
LD
0001
A, B
2:
0011
0011
011 → B
1.4.4
INC
DE
1010
010 → DE
イミディエート n または mn
オブジェクトコード中の即値 ( イミディエートデータ ) が操作対象となります。なお、16 ビット
即値の場合、若いアドレスの方から下位 8 ビット → 上位 8 ビットの順にメモリに格納します。
RA001
Page 11
第 1 章 概要
1.4 アドレッシングモード
଀1:
TLCS-870/C1
LD
A, 0x53
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
ࠦ࡯࠼㗔ၞ
n
0x1C000
18
53
0x1C001
଀2:
LD
53
ࠝࡍࠦ࡯࠼
A
ࠝࡍ࡜ࡦ࠼
WA, 0x1234
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
ࠦ࡯࠼㗔ၞ
n
0x1C000
48
34
12
0x1C001
0x1C002
ਅ૏
਄૏
ࠝࡍࠦ࡯࠼
12
W
m
ࠝࡍ࡜ࡦ࠼
34
A
注 ) アセンブラソースプログラム記述上、即値をカッコで囲むことはできません。カッコで囲んだ場合はダイレ
クトアドレッシングモードと見なされます。
1.4.5
リラティブ ( 相対 )
1.4.5.1
8 ビットディスプレースメントリラティブ
プログラムカウンタの内容 ( 実行命令の先頭アドレス +2 または +3) に、オブジェクトコード
中の 8 ビットディスプレースメント値 d を符号拡張 ( 下表参照 ) して、加算した値で指定される
アドレス。このアドレッシングモードを持つ命令は、JR 命令のみです。
ディスプレースメント d
符号拡張した値
0x00 ~ 0x7F
0x0000 ~ 0x007F (0~+127)
0x80 ~ 0xFF
0xFF80 ~ 0xFFFF (−128~−1)
d
଀1:
JR
$ + 2 + 35H ߹ߚߪ JR
0x0D578
ࠦ࡯࠼㗔ၞ
+2
RA001
PC
D5
43
+
00
35
D5
78
0x1D541
╓ภ᜛ᒛ
0x1D578
Page 12
FC
35
JR ๮઎
TLCS-870/C1
プログラムカウンタの内容 (0xD543) にディスプレースメント値0x35を符号拡張して加算した
値で指定されるアドレスすなわち 0x1D578 番地にジャンプします。
注 ) $: 実行命令の先頭アドレス
଀2:
M, $ + 3 + 35H ߹ߚߪ JR
JR
M, 0x0D579
ࠦ࡯࠼㗔ၞ
+3
PC
D5
44
+
00
35
D5
79
E8
D0
35
0x1D541
JR M, a ๮઎
╓ภ᜛ᒛ
0x1D579
サインフラグが “1” なら、プログラムカウンタの内容 (0xD544) にディスプレースメント値
0x35を符号拡張して加算した値で指定されるアドレスすなわち0x1D579番地にジャンプします。
注 ) $: 実行命令の先頭アドレス
1.4.5.2
5 ビットディスプレースメントリラティブ
プログラムカウンタの内容 ( 実行命令の先頭アドレス +2) に、オペコード中の 5 ビットディス
プレースメント値 d を符号拡張 ( 下表参照 ) して、加算した値で指定されるアドレス。このアド
レッシングモードを持つ命令は、JRS 命令のみです。
ディスプレースメント d
符号拡張した値
0x00 ~0x0F
0x0000 ~ 0x000F (0~+15)
0x10 ~ 0x1F
0xFFF0 ~ 0xFFFF (−16~−1)
7
6
5
4
3
2 1
0
d
଀:
JRS
T, $ + 2 + 14H ߹ߚߪ JRS
T, 0x0E859
ࠦ࡯࠼㗔ၞ
0x1E859
+2
PC
E8
65
+
FF
F4
E8
59
1
RA001
0x1E863
╓ภ᜛ᒛ
Page 13
94
JRS๮઎
第 1 章 概要
1.4 アドレッシングモード
TLCS-870/C1
ジャンプステータスフラグが “1” なら、プログラムカウンタの内容 (0xE865) にディスプレー
スメント値 0x14 を符号拡張して (0xFFF4) 加算した値で指定されるアドレスすなわち 0x1E859
番地にジャンプします。
注 ) $: 実行命令の先頭アドレス
1.4.6
アブソリュート ( 絶対 )
オブジェクトコード中の 16 ビット値 ( 下位 8 ビット → 上位 8 ビットの順に格納される ) で指定さ
れるアドレス。
଀:
JP
0x0F1A3
ࠦ࡯࠼㗔ၞ
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
P
ਅ૏
FE
A3
F1
0x1C075
਄૏
PC
F1
A3
JP ๮઎
ࠝࡍࠦ࡯࠼
m
ࠝࡍ࡜ࡦ࠼
0x1F1A3
オペランドで指定されるアドレスすなわち 0x1F1A3 番地にジャンプします。
1.4.7
ベクタ
オペコード中の 4 ビットデータ n を 2 倍し、ベクタコール領域の先頭アドレス値を加えた値をア
ドレスとするメモリから読み出した 16 ビットデータ ( ベクタアドレス ) で指定されるアドレス。こ
のアドレッシングモードを持つ命令は、CALLV 命令のみです。
଀:
CALLV
0x9
ࠝࡉࠫࠚࠢ࠻ࠦ࡯࠼
ࠦ࡯࠼㗔ၞ
7
0x1D201
n=
9
2
12
˜
+
FF
A0
FF
B2
79
6
5
4
3
2 1
CALLV๮઎
0
n
ࠝࡍࠦ࡯࠼
0x1E073
0x1FFB2
0x1FFB3
73
E0
ਅ૏
਄૏
E0
73
PC
オペコード中の n (0x9) を 2 倍してベクタコール領域の先頭アドレス値 (0xFFA0) を加算した値
0x1FFB2 番地から連続する 2 バイトの内容 0x1E073 番地をコールします。
1.4.8
直接ビット
1.4.8.1
レジスタビット
オペコード中のレジスタ指定フィールド、ビット指定フィールドで指定されるレジスタの
ビットが操作対象となります。
RA001
Page 14
TLCS-870/C1
:
SET
A.3
A
"1"
1110
3
A
1000
0011
= 000
011 =
1
1.4.8.2
1100
3
2
メモリビット
メモリビットアドレッシングモード (HL), (DE), (IX), (IY), (HL + d), (IX + d), (IY + d), (HL + C),
(+SP), (SP + d), (PC + A), (x), (vw) で指定されるアドレスの、オペコード中のビット指定フィール
ドで指定されるビットが操作対象となります。
1.4.9
例 1: SET
(HL). 1
例 2: SET
(HL + 0x57). 6
例 3: SET
(0x00058). 3
レジスタ間接ビット
メモリアドレッシングモード (HL), (DE), (IX), (IY), (HL + d), (IX + d), (IY + d), (HL + C), (+SP), (SP +
d), (PC + A), (x), (vw) で指定されるアドレスの、A レジスタの下位 3 ビットの内容で指定されるビッ
トが操作対象となります。
଀:
SET
(HL). A
࠺࡯࠲㗔ၞ
7 6 5 4 3 21 0
9C
A
ࡆ࠶࠻4
HL
01
23
0x00123
1 1 0 0 0 11 0
1
HL レジスタの内容 (0x0123) で指定されるアドレスの内容 (0y11000110) の A レジスタの下位 3 ビッ
トの内容 (0y100) で指定されるビット 4 が "1" にセットされ 0y11010110 となります。
1110
1
0011
1111
0010
2
(HL)
SET (mem). A
1001
1100
100 =
RA001
Page 15
4
第 1 章 概要
1.4 アドレッシングモード
RA001
TLCS-870/C1
Page 16
TLCS-870/C1
第2章
命令の説明
2.1 転送、交換
ニモニック
LD A,r
LD r,A
LD r,g
LD rr,gg
LD A,(x)
LD A,(HL)
LD r,(x)
LD r,(vw)
LD r,(DE)
LD r,(HL)
LD r,(IX)
LD r,(IY)
LD r,(IX+d)
LD r,(IY+d)
LD r,(SP+d)
LD r,(HL+d)
LD r,(HL+C)
LD r,(+SP)
LD r,(PC+A) 注
LD rr,(x)
LD rr,(vw)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
0 0 0 1
0 r r r
1 Z – – – – 1
A←r
8 ビットレジスタ r の内容を A レジスタにロードします。ゼロフラグは、r = 0x00 のとき “1” にセットされ、r ≠ 0x00 のとき “0” にクリア
されます。
0 1 0 0
0 r r r
1 Z – – – – 1
r←A
A レジスタの内容を 8 ビットレジスタ r にロードします。ゼロフラグは、A = 0x00 のとき “1” にセットされ、A ≠ 0x00 のとき “0” にクリ
アされます。
1 1 1 0
1 g g g 0 1 0 0
0 r r r
1 Z – – – – 2
r←g
8 ビットレジスタ g の内容を 8 ビットレジスタ r にロードします。ゼロフラグは、g = 0x00 のとき “1” にセットされ、g ≠ 0x00 のとき
“0” にクリアされます。
1 1 1 0
1 g g g 0 1 0 0
1 r r r
1 – – – – – 2
rr ← gg
16 ビットレジスタ gg (WA, BC, DE または HL) の内容を 16 ビットレジスタ rr にロードします。
例 : DE = 0x1234 のとき、LD HL, DE 命令を実行すると、HL = 0x1234 となります。
0 0 0 0
1 1 0 0 x x x x
x x x x
1 Z – – – – 3
A ← (x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容を A レジスタにロードします。A レジスタ
に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
0 0 0 0
1 1 0 1
1 Z – – – – 2
A ← (HL)
レジスタペア HL で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を A レジスタにロードします。A レジスタに転送される
データが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 0 0
0 r r r 1 Z – – – – 4
r ← (x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レ
ジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 Z – – – – 5
r ← (vw)
0 1 0 0
0 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。
レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 1 0 0 1 0 0
0 r r r
1 Z – – – – 3
r ← (DE)
レジスタペア DE で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転
送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 1 1 0 1 0 0
0 r r r
1 Z – – – – 3
r ← (HL)
レジスタペア HL で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転
送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 0 0 0 1 0 0
0 r r r
1 Z – – – – 3
r ← (IX)
インデックスレジスタ IX で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ
r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 0 1 0 1 0 0
0 r r r
1 Z – – – – 3
r ← (IY)
インデックスレジスタ IY で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ
r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 0
0 r r r 1 Z – – – – 5
r ← (IX+d)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容を 8 ビットレジスタ r にロードします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 0
0 r r r 1 Z – – – – 5
r ← (IY+d)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容を 8 ビットレジスタ r にロードします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 0
0 r r r 1 Z – – – – 5
r ← (SP+d)
スタックポインタ SP の内容にオブジェクト中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8
ビットレジスタ r にロードします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 0 0
0 r r r 1 Z – – – – 5
r ← (HL + d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8
ビットレジスタ r にロードします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 1 1 0 1 0 0
0 r r r
1 Z – – – – 5
r ← (HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8 ビットレジスタ r にロー
ドします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 1 0 0 1 0 0
0 r r r
1 Z – – – – 4
SP ← SP+1:r ← (SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容を 8 ビットレジスタ r にロードします。レ
ジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。この命令は 8 ビットデータのスタックからのポップ
処理に使います。
0 1 0 0
1 1 1 1 0 1 0 0
0 r r r
1 Z – – – – 5
r ← (PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8 ビットレジスタ r
にロードします。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。この命令は、コード変換処理に
最適です。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 0 0
1 r r r 1 – – – – – 5
rr ← (x+1, x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr にロードします。
例 : 0x0072, 0x0073 番地がそれぞれ 0x8E, 0x59 のとき、LD WA, (0x72) 命令を実行すると、W = 0x59, A = 0x8E となります。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 6
rr ← (vw+1, vw)
0 1 0 0
1 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr にロードします。vw として 0x0FFF 番地を指定した場合、レジスタの上位バイトには 0x1000 番地のメモリ内容がロードされます。
オブジェクトコード (2 進 )
Page 17
第 2 章 命令の説明
2.1 転送、交換
ニモニック
LD rr,(DE)
LD rr,(HL)
LD rr,(IX)
LD rr,(IY)
LD rr,(IX+d)
LD rr,(IY+d)
LD rr,(SP+d)
LD rr,(HL+d)
LD rr,(HL+C)
LD rr,(+SP)
LD rr,(PC+A) 注
LD (x),A
LD (HL),A
LD (x),r
LD (vw),r
LD (DE),r
LD (HL),r
LD (IX),r
LD (IY),r
LD (IX+d),r
LD (IY+d),r
LD (SP+d),r
LD (HL+d),r
LD (HL+C),r
LD (SP−),r
LD (x),rr
LD (vw),rr
LD (DE),rr
RA001
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 1 0 0 1 0 0
1 r r r
1 – – – – – 4
rr ← (DE+1, DE)
レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 1 0
0 0 1 1 0 1 0 0
1 r r r
1 – – – – – 4
rr ← (HL+1, HL)
レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 1 0
0 1 0 0 0 1 0 0
1 r r r
1 – – – – – 4
rr ← (IX+1, IX)
インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 1 0
0 1 0 1 0 1 0 0
1 r r r
1 – – – – – 4
rr ← (IY+1, IY)
インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 0
1 r r r 1 – – – – – 6
rr ← (IX+d+1, IX+d)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 0
1 r r r 1 – – – – – 6
rr ← (IY+d+1, IY+d)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 0
1 r r r 1 – – – – – 6
rr ← (SP+d+1, SP+d)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続す
る 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。
例 :SP = 0x51E4 で 0x5216, 0x5217 番地のメモリ内容がそれぞれ 0x9F, 0xC3 のとき、LD WA, (SP + 0x32) 命令を実行すると、A =
0x9F, W = 0xC3 となります。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 0 0
1 r r r 1 – – – – – 6
rr ← (HL+d+1, HL+d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バ
イトのメモリ内容を 16 ビットレジスタ rr にロードします。
1 1 1 0
0 1 1 1 0 1 0 0
1 r r r
1 – – – – – 6
rr ← (HL+C+1, HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16
ビットレジスタ rr にロードします。
1 1 1 0
0 1 1 0 0 1 0 0
1 r r r
1 – – – – – 5
SP ← SP+1:rr ← (SP+1, SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr にロードします。
0 1 0 0
1 1 1 1 0 1 0 0
1 r r r
1 – – – – – 6
rr ← (PC+A+1, PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内
容を 16 ビットレジスタ rr にロードします。
0 0 0 0
1 1 1 0 x x x x
x x x x
1 – – – – – 3
(x) ← A
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリに A レジスタの内容をストアします。
0 0 0 0
1 1 1 1
1 – – – – – 2
(HL) ← A
レジスタペア HL で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに A レジスタの内容をストアします。
1 1 1 1
0 0 0 0 x x x x
x x x x 0 1 1 1
1 r r r 1 – – – – – 4
(x) ← r
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
1 1 1 1
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 5
(vw) ← r
0 1 1 1
1 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
1 1 1 1
0 0 1 0 0 1 1 1
1 r r r
1 – – – – – 3
(DE) ← r
レジスタペア DE で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
1 1 1 1
0 0 1 1 0 1 1 1
1 r r r
1 – – – – – 3
(HL) ← r
レジスタペア HL で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
1 1 1 1
0 1 0 0 0 1 1 1
1 r r r
1 – – – – – 3
(IX) ← r
インデックスレジスタ IX で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
1 1 1 1
0 1 0 1 0 1 1 1
1 r r r
1 – – – – – 3
(IY) ← r
インデックスレジスタ IY で指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。
0 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 1
1 r r r 1 – – – – – 4
(IX+d) ← r
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
に 8 ビットレジスタ r の内容をストアします。
0 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 1
1 r r r 1 – – – – – 4
(IY+d) ← r
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
に 8 ビットレジスタ r の内容をストアします。
0 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 1
1 r r r 1 – – – – – 4
(SP+d) ← r
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリに 8
ビットレジスタ r の内容をストアします。
0 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 1
1 r r r 1 – – – – – 4
(HL+d) ← r
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリに 8 ビッ
トレジスタ r の内容をストアします。
1 1 1 1
0 1 1 1 0 1 1 1
1 r r r
1 – – – – – 5
(HL+C) ← r
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリに 8 ビットレジスタ r の内容をス
トアします。
1 1 1 1
0 1 1 0 0 1 1 1
1 r r r
1 – – – – – 4
(SP) ← r:SP ← SP−1
スタックポインタ SP で指定されるアドレスのメモリに 8 ビットレジスタ r の内容をストアします。その後、スタックポインタ SP の内
容をデクリメントします。この命令は 8 ビットレジスタのスタックへのプッシュ処理に使います。
1 1 1 1
0 0 0 0 x x x x
x x x x 0 1 1 0
1 r r r 1 – – – – – 5
(x+1, x) ← rr
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリに 16 ビットレジスタ rr
の内容を下位、上位の順にストアします。
1 1 1 1
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 6
(vw+1, vw) ← rr
0 1 1 0
1 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリに 16 ビットレジスタ rr
の内容を下位、上位の順にストアします。
1 1 1 1
0 0 1 0 0 1 1 0
1 r r r
1 – – – – – 4
(DE+1, DE) ← rr
レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアしま
す。
オブジェクトコード (2 進 )
Page 18
TLCS-870/C1
ニモニック
LD (HL),rr
LD (IX),rr
LD (IY),rr
LD (IX+d),rr
LD (IY+d),rr
LD (SP+d),rr
LD (HL+d),rr
LD (HL+C),rr
LD (SP−),rr
LD r,n
LD rr,mn
LD (x),n
LD (vw),n
LD (DE),n
LD (HL),n
LD (IX),n
LD (IY),n
LD (IX+d),n
LD (IY+d),n
LD (SP+d),n
LD (HL+d),n
LD (HL+C),n
LD (SP−),n
LDW (x),mn
LDW (HL),mn
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 1
0 0 1 1 0 1 1 0
1 r r r
1 – – – – – 4
(HL+1, HL) ← rr
レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアしま
す。
1 1 1 1
0 1 0 0 0 1 1 0
1 r r r
1 – – – – – 4
(IX+1, IX) ← rr
インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にスト
アします。
1 1 1 1
0 1 0 1 0 1 1 0
1 r r r
1 – – – – – 4
(IY+1, IY) ← rr
インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にスト
アします。
0 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
(IX+d+1, IX+d) ← rr
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアします。
0 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
(IY+d+1, IY+d) ← rr
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアします。
0 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
(SP+d+1, SP+d) ← rr
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続す
る 2 バイトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアします。
0 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
(HL+d+1, HL+d) ← rr
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バ
イトのメモリに 16 ビットレジスタ rr の内容を下位、上位の順にストアします。
1 1 1 1
0 1 1 1 0 1 1 0
1 r r r
1 – – – – – 6
(HL+C+1, HL+C) ← rr
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリに、16
ビットレジスタ rr の内容を下位、上位の順にストアします。
1 1 1 1
0 1 1 0 0 1 1 0
1 r r r
1 – – – – – 5
(SP+1, SP) ← rr:SP ← SP−1
スタックポインタ SP で指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容をストアします。その後、ス
タックポインタ SP の内容をデクリメントします。
0 0 0 1
1 r r r n n n n
n n n n
1 – – – – – 2
r←n
オブジェクトコード中の即値 n を 8 ビットレジスタ r にロードします。
例 : LD A, 0x53 命令を実行すると、A = 0x53 となります。
0 1 0 0
1 r r r n n n n
n n n n mmmm
mmmm 1 – – – – – 3
rr ← mn
オブジェクトコード中の即値 mn を 16 ビットレジスタ rr にロードします。
例 : LD WA, 0x1234 命令を実行すると、A = 0x34, W = 0x12 となります。
0 0 0 0
1 0 1 0 x x x x
x x x x n n n n
n n n n 1 – – – – – 4
(x) ← n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリにオブジェクトコード中の即値 n をストアしま
す。
1 1 1 1
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 6
(vw) ← n
1 1 1 1
1 0 0 1 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリにオブジェクトコード中の即値 n をストアし
ます。
1 1 1 1
0 0 1 0 1 1 1 1
1 0 0 1 n n n n
n n n n 1 – – – – – 4
(DE) ← n
オブジェクトコード中の即値 n をレジスタペア DE で指定されるアドレスのメモリにストアします。
0 0 0 0
1 0 1 1 n n n n
n n n n
1 – – – – – 3
(HL) ← n
オブジェクトコード中の即値 n をレジスタペア HL で指定されるアドレスのメモリにストアします。
1 1 1 1
0 1 0 0 1 1 1 1
1 0 0 1 n n n n
n n n n 1 – – – – – 4
(IX) ← n
インデックスレジスタ IX で指定されるアドレスのメモリにオブジェクトコード中の即値 n をストアします。
1 1 1 1
0 1 0 1 1 1 1 1
1 0 0 1 n n n n
n n n n 1 – – – – – 4
(IY) ← n
インデックスレジスタ IY で指定されるアドレスのメモリにオブジェクトコード中の即値 n をストアします。
0 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(IX+d) ← n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
にオブジェクトコード中の即値 n をストアします。
0 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(IY+d) ← n
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
にオブジェクトコード中の即値 n をストアします。
0 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(SP+d) ← n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリに、
オブジェクトコード中の即値 n をストアします。
0 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(HL+d) ← n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリに、オブ
ジェクトコード中の即値 n をストアします。
1 1 1 1
0 1 1 1 1 1 1 1
1 0 0 1 n n n n
n n n n 1 – – – – – 6
(HL+C) ← n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリに、オブジェクトコード中の即値
n をストアします。
1 1 1 1
0 1 1 0 1 1 1 1
1 0 0 1 n n n n
n n n n 1 – – – – – 5
(SP) ← n:SP ← SP−1
オブジェクトコード中の即値 n をスタックポインタ SP で指定されるアドレスのメモリにストアします。その後、スタックポインタ SP
の内容をデクリメントします。
0 0 0 0
1 0 0 0 x x x x
x x x x n n n n
n n n n 1 – – – – – 6
(x+1, x) ← mn
mmmm
mmmm
オブジェクトコード中の 16 ビットの即値 mn を、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連
続する 2 バイトのメモリに下位 n、上位 m の順にストアします。
例 : LDW (0x73),0x1234 を実行すると、0x0073 番地には、0x34 が、0x0074 番地には、0x12 が書き込まれます。
0 0 0 0
1 0 0 1 n n n n
n n n n mmmm
mmmm 1 – – – – – 5
(HL+1, HL) ← mn
オブジェクトコード中の 16 ビットの即値 mn を、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリに下位、上位
の順にストアします。
オブジェクトコード (2 進 )
Page 19
第 2 章 命令の説明
2.1 転送、交換
ニモニック
PUSH rr#1
PUSH gg#2
POP rr#1
POP gg#2
PUSH PSW
POP PSW
LD PSW,n
LD RBS,0
LD RBS,1
LD SP,SP+d
LD SP,SP−d
XCH r,g
XCH rr,gg
XCH r,(x)
XCH r,(vw)
XCH r,(DE)
XCH r,(HL)
XCH r,(IX)
XCH r,(IY)
XCH r,(IX+d)
RA001
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
0 1 0 1
0 0 r r
– – – – – – 3
(SP, SP−1) ← rr:SP ← SP−2
スタックポインタ SP で指定されるアドレスのメモリにレジスタ rr の上位 8 ビットの内容を、前記アドレスから 1 を引いた値で指定さ
れるアドレスのメモリにレジスタ rr の下位 8 ビットの内容を、それぞれストアします。その後、スタックポインタ SP の内容から 2 を
減じます。rr としては、WA, BC, DE, HL のみ指定可能です。
例 : SP = 0x013F、WA = 0x1234 のとき、PUSH WA 命令を実行すると、0x013F, 0x013E 番地の内容は 0x12, 0x34 となります。また、
SP = 0x013D になります。
1 1 1 0
1 g g g 1 1 0 1
1 0 0 0
– – – – – – 4
(SP, SP−1) ← gg:SP ← SP−2
スタックポインタ SP で指定されるアドレスのメモリにレジスタ gg の上位 8 ビットの内容を、前記アドレスから 1 を引いた値で指定さ
れるアドレスのメモリにレジスタ gg の下位 8 ビットの内容を、それぞれストアします。その後、スタックポインタ SP の内容から 2 を
減じます。
例 : SP = 0x013F, IX = 0x1234 のとき、PUSH IX 命令を実行すると、0x013F, 0x013E 番地の内容は 0x12, 0x34 となります。また、SP =
0x013D になります。
1 1 0 1
0 0 r r
– – – – – – 4
SP ← SP+2:rr ← (SP, SP−1)
スタックポインタ SP の内容に 2 を加え、その値で指定されるアドレスのメモリ内容をレジスタ rr の上位 8 ビットに、前記アドレスか
ら 1 を引いたアドレスのメモリ内容をレジスタ rr の下位 8 ビットをそれぞれロードします。rr としては、WA, BC, DE, HL のみ指定可能
です。
1 1 1 0
1 g g g 1 1 0 1
1 0 0 1
– – – – – – 5
SP ← SP+2:gg ← (SP, SP−1)
スタックポインタ SP の内容に 2 を加え、その値で指定されるアドレスのメモリ内容をレジスタ gg の上位 8 ビットに、前記アドレスか
ら 1 を引いたアドレスのメモリ内容をレジスタ gg の下位 8 ビットをそれぞれロードします。
1 1 1 0
1 0 0 0 1 1 0 1
1 1 0 0
– – – – – – 3
(SP) ← PSW:SP ← SP−1
スタックポインタ SP で指定されるアドレスのメモリにプログラムステータスワード PSW の内容をストアし、その後、スタックポイン
タ SP の内容をデクリメントします。
例 : SP = 0x2345, PSW = 0x62 (JF = HF = SF = VF = 0, ZF = CF = RBS = 1) のとき、PUSH PSW 命令を実行すると、0x2345 番地の内
容は 0x62 となります。また、SP = 0x2344 になります。
1 1 1 0
1 0 0 0 1 1 0 1
1 1 0 1
SP ← SP+1:PSW ← (SP)
* * * * * * 4
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容をプログラムステータスワード PSW に
ロードします。
例 : 0x0137 番地のメモリ内容が 0x63 で、SP = 0x0136 のとき、POP PSW 命令を実行すると、SP = 0x0137, PSW = 0x62 (JF = HF = SF
= VF = 0, ZF = CF = RBS = 1) となります。
1 1 1 0
1 0 0 0 1 1 0 1
1 1 1 0 n n n n
n n n n * * * * * * 3
PSW ← n.7-1
プログラムステータスワード PSW に、オブジェクトコード中の即値 n をストアします。即値 n は最上位ビットから JF, ZF, CF, HF, SF,
VF,RBS に対応し、最下位の 1 ビットは無視されます。
例 : LD FLAG, 0y00110100 命令を実行すると、JF = 0, ZF = 0, CF = 1, HF = 1, SF = 0, VF = 1, RBS = 0 となります。
1 1 1 1
1 0 0 1 0 0 0 0
0 0 0 0
– – – – – – 2
RBS ← 0
プログラムステータスワード PSW の RBS に対して、即値 0 をストアすることでレジスタバンクが BANK0 に切り替わります。なお、
この命令で、フラグは変化しません。
1 1 1 1
1 0 0 1 0 0 0 0
0 0 1 0
– – – – – – 2
RBS ← 1
プログラムステータスワード PSW の RBS に対して、即値 1 をストアすることでレジスタバンクが BANK1 に切り替わります。なお、
この命令で、フラグは変化しません。
0 0 1 1
0 1 1 1 d d d d
d d d d
1 – – – – – 2
SP ← SP+d
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を加算した値がスタックポインタ SP にロードされます。従っ
て、この命令はスタックポインタ SP の即値加算命令になります。
例 : SP = 0x2345 のとき、LD SP, SP + 4 を実行すると、SP = 0x2349, JF = 1 となります。
0 0 1 1
1 1 1 1 d d d d
d d d d
1 – – – – – 2
SP ← SP−d
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を減算した値がスタックポインタ SP にロードされます。従っ
て、この命令はスタックポインタ SP の即値減算命令になります。
1 1 1 0
1 g g g 0 1 1 1
0 r r r
1 Z – – – – 3
r↔g
8 ビットレジスタ r の内容と 8 ビットレジスタ g の内容とを交換します。ゼロフラグは、交換前の g の内容が 0x00 のとき “1” にセット
され、0x00 以外のとき “1” にクリアされます。
例 : A = 0x3C, B = 0x5F のとき、XCH A, B 命令を実行すると、A = 0x5F, B = 0x3C, ZF = 0 となります。
1 1 1 0
1 g g g 0 1 1 1
1 r r r
1 – – – – – 3
rr ↔ gg
16 ビットレジスタ rr の内容と 16 ビットレジスタ gg の内容とを交換します。ゼロフラグは変化しません。
例 : HL = 0x0123, DE = 0x9587 のとき、XCH HL, DE 命令を実行すると、HL = 0x9587, DE = 0x0123 となります。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 1
0 r r r 1 Z – – – – 5
r ↔ (x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容と 8 ビットレジスタ r の内容とを交換しま
す。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 Z – – – – 6
r ↔ (vw)
0 1 1 1
0 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容と 8 ビットレジスタ r の内容を交換しま
す。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 1 0 0 1 1 1
0 r r r
1 Z – – – – 4
r ↔ (DE)
レジスタペア DE で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータ
が 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 1 1 0 1 1 1
0 r r r
1 Z – – – – 4
r ↔ (HL)
レジスタペア HL で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータ
が 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 0 0 0 1 1 1
0 r r r
1 Z – – – – 4
r ↔ (IX)
インデックスレジスタ IX で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を交換します。レジスタ r に転送されるデー
タが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 0 1 0 1 1 1
0 r r r
1 Z – – – – 4
r ↔ (IY)
インデックスレジスタ IY で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を交換します。レジスタ r に転送されるデー
タが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 1
0 r r r 1 Z – – – – 6
r ↔ (IX+d)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされま
す。
オブジェクトコード (2 進 )
Page 20
TLCS-870/C1
ニモニック
XCH r,(IY+d)
XCH r,(SP+d)
XCH r,(HL+d)
XCH r,(HL+C)
XCH r, (+SP)
XCH r,(PC+A) 注
XCH rr,(x)
XCH rr,(vw)
XCH rr,(DE)
XCH rr,(HL)
XCH rr,(IX)
XCH rr,(IY)
XCH rr,(IX+d)
XCH rr,(IY+d)
XCH rr,(SP+d)
XCH rr,(HL+d)
XCH rr,(HL+C)
XCH rr,(+SP)
XCH rr,(PC+A) 注
#1
#2
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 1
0 r r r 1 Z – – – – 6
r ↔ (IY+d)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 1
0 r r r 1 Z – – – – 6
r ↔ (SP+d)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 1
0 r r r 1 Z – – – – 6
r ↔ (HL+d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8
ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 1 1 0 1 1 1
0 r r r
1 Z – – – – 6
r ↔ (HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容
とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 1 1 0 0 1 1 1
0 r r r
1 Z – – – – 5
SP ← SP+1:r ↔ (SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換しま
す。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
0 1 0 0
1 1 1 1 0 1 1 1
0 r r r
1 Z – – – – 6
r ↔ (PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r
の内容とを交換します。レジスタ r に転送されるデータが 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 0 1
1 r r r 1 – – – – – 7
rr ↔ (x+1, x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリ内容と 16 ビットレジス
タ rr の内容とを交換します。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 8
rr ↔ (vw+1, vw)
1 1 0 1
1 r r r
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリ内容と 16 ビットレジス
タ rr の内容とを交換します。
1 1 1 0
0 0 1 0 1 1 0 1
1 r r r
1 – – – – – 6
rr ↔ (DE+1, DE)
レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 1 0
0 0 1 1 1 1 0 1
1 r r r
1 – – – – – 6
rr ↔ (HL+1, HL)
レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 1 0
0 1 0 0 1 1 0 1
1 r r r
1 – – – – – 6
rr ↔ (IX+1, IX)
インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 1 0
0 1 0 1 1 1 0 1
1 r r r
1 – – – – – 6
rr ↔ (IY+1, IY)
インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 0 1
1 r r r 1 – – – – – 8
rr ↔ (IX+d+1, IX+d)
インデックスレジスタ IX の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連
続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 0 1
1 r r r 1 – – – – – 8
rr ↔ (IY+d+1, IY+d)
インデックスレジスタ IY の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連
続する 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 0 1
1 r r r 1 – – – – – 8
rr ↔ (SP+d+1, SP+d)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続す
る 2 バイトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 0 1
1 r r r 1 – – – – – 8
rr ↔ (HL+d+1, HL+d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バ
イトのメモリ内容と 16 ビットレジスタ rr の内容とを交換します。
1 1 1 0
0 1 1 1 1 1 0 1
1 r r r
1 – – – – – 8
rr ↔ (HL+C+1, HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容と 16
ビットレジスタ rr の内容とを交換します。
1 1 1 0
0 1 1 0 1 1 0 1
1 r r r
1 – – – – – 7
SP ← SP+1:rr ↔ (SP+1, SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメモリ内容と 16 ビットレジス
タ rr の内容とを交換します。
0 1 0 0
1 1 1 1 1 1 0 1
1 r r r
1 – – – – – 8
rr ↔ (PC+A+1, PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内
容と 16 ビットレジスタ rr の内容とを交換します。
オブジェクトコード (2 進 )
rr は WA, BC, DE, HL のみ
gg は IX,IY のみ
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参照
してください。
RA001
Page 21
第 2 章 命令の説明
2.1 転送、交換
RA001
TLCS-870/C1
Page 22
TLCS-870/C1
2.2 演算
ニモニック
CMP A,n
CMP g,n
CMP gg,mn
CMP r,g
CMP rr,gg
CMP r,(x)
CMP r,(vw)
CMP r,(DE)
CMP r,(HL)
CMP r,(IX)
CMP r,(IY)
CMP r,(IX+d)
CMP r,(IY+d)
CMP r,(SP+d)
CMP r,(HL+d)
CMP r,(HL+C)
CMP r,(+SP)
CMP r,(PC+A) 注
CMP (x),n
CMP (vw),n
CMP (DE),n
CMP (HL),n
CMP (IX),n
CMP (IY),n
CMP (IX+d),n
RA001
フラグ
サイクル
オペレーション
J Z C H S V
0 1 1 0
0 1 1 1 n n n n
n n n n
Z Z C H S V 2
A–n
A レジスタの内容をオブジェクトコード中の即値 n と比較します。キャリーフラグは、A < n のとき “1” にセットされ A ≧ n のとき “0” に
クリアされます。
1 1 1 0
1 g g g 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 3
g–n
8 ビットレジスタ g の内容をオブジェクトコード中の即値 n と比較します。キャリーフラグは、g < n のとき “1” にセットされ、g ≧ n
のとき “0” にクリアされます。
1 1 1 0
1 g g g 0 1 1 0
1 1 1 1 n n n n
n n n n Z Z C U S V 4
gg–mn
mmmm
mmmm
16 ビットレジスタ gg の内容をオブジェクトコード中の即値 mn と比較します。キャリーフラグは、gg < mn のときに “1” にセットさ
れ、gg ≧ mn のとき “0” にクリアされます。
1 1 1 0
1 g g g 0 0 r r
r 1 1 1
Z Z C H S V 2
r–g
8 ビットレジスタ r の内容と、8 ビットレジスタ g の内容を比較します。キャリーフラグは r < g のとき “1” にセットされ、r ≧ g のとき
“0” にクリアされます。
1 1 1 0
1 g g g 1 0 r r
r 1 1 1
Z Z C U S V 3
rr–gg
16 ビットレジスタ rr の内容と、16 ビットレジスタ gg の内容を比較します。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 1 1 1 Z Z C H S V 4
r–(x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容と 8 ビットレジスタ r の内容を比較します。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z C H S V 5
r–(vw)
0 0 r r
r 1 1 1
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容と 8 ビットレジスタ r の内容を比較しま
す。
1 1 1 0
0 0 1 0 0 0 r r
r 1 1 1
Z Z C H S V 3
r–(DE)
レジスタペア DE で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を比較します。
1 1 1 0
0 0 1 1 0 0 r r
r 1 1 1
Z Z C H S V 3
r–(HL)
レジスタペア HL で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を比較します。
1 1 1 0
0 1 0 0 0 0 r r
r 1 1 1
Z Z C H S V 3
r–(IX)
インデックスレジスタ IX で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を比較します。
1 1 1 0
0 1 0 1 0 0 r r
r 1 1 1
Z Z C H S V 3
r–(IY)
インデックスレジスタ IY で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を比較します。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 1 1 1 Z Z C H S V 5
r–(IX+d)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と 8 ビットレジスタ r の内容とを比較します。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 1 1 1 Z Z C H S V 5
r–(IY+d)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と 8 ビットレジスタ r の内容とを比較します。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 1 1 1 Z Z C H S V 5
r–(SP+d)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と
8 ビットレジスタ r の内容とを比較します。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 1 1 1 Z Z C H S V 5
r–(HL+d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8
ビットレジスタ r の内容とを比較します。
1 1 1 0
0 1 1 1 0 0 r r
r 1 1 1
Z Z C H S V 5
r–(HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容
とを比較します。
1 1 1 0
0 1 1 0 0 0 r r
r 1 1 1
Z Z C H S V 4
SP ← SP+1:r–(SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容を比較しま
す。
0 1 0 0
1 1 1 1 0 0 r r
r 1 1 1
Z Z C H S V 5
r–(PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r
の内容を比較します。
0 0 0 0
0 1 1 1 x x x x
x x x x n n n n
n n n n Z Z C H S V 4
(x)–n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容をオブジェクトコード中の即値 n と比較し
ます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z C H S V 6
(vw)–n
0 1 1 0
0 1 1 1 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容をオブジェクトコード中の即値 n と比較
します。
1 1 1 0
0 0 1 0 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 4
(DE)–n
レジスタペア DE で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 n と比較します。
1 1 1 0
0 0 1 1 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 4
(HL)–n
レジスタペア HL で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 n と比較します。
1 1 1 0
0 1 0 0 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 4
(IX)–n
インデックスレジスタ IX で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 n と比較します。
1 1 1 0
0 1 0 1 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 4
(IY)–n
インデックスレジスタ IY で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 n と比較します。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(IX+d)–n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をオブジェクトコード中の即値 n と比較します。
オブジェクトコード (2 進 )
Page 23
2.2 演算
TLCS-870/C1
ニモニック
CMP (IY+d),n
CMP (SP+d),n
CMP (HL+d),n
CMP (HL+C),n
CMP (+SP),n
CMP (PC+A),n 注
CMP rr,(x)
CMP rr,(vw)
CMP rr,(DE)
CMP rr,(HL)
CMP rr,(IX)
CMP rr,(IY)
CMP rr,(IX+d)
CMP rr,(IY+d)
CMP rr,(SP+d)
CMP rr,(HL+d)
CMP rr,(HL+C)
CMP rr,(+SP)
CMP rr,(PC+A) 注
ADD A,n
ADD g,n
ADD gg,mn
ADD r,g
ADD rr,gg
ADD r,(x)
ADD r,(vw)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
0 1 1 1 Z Z C H S V 6
(IY+d)–n
オブジェクトコード (2 進 )
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をオブジェクトコード中の即値 n と比較します。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(SP+d)–n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
を、オブジェクトコード中の即値 n と比較します。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(HL+d)–n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で設定されるアドレスのメモリ内容をオ
ブジェクトコード中の即値 n と比較します。
1 1 1 0
0 1 1 1 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 6
(HL+C)–n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をオブジェクトコード中の即
値 n と比較します。
1 1 1 0
0 1 1 0 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 5
SP ← SP+1:(SP)–n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 n と比較し
ます。
0 1 0 0
1 1 1 1 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 6
(PC+A)–n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をオブジェクトコー
ド中の即値 n と比較します。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 1 1 1 Z Z C U S V 5
rr–(x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr の内容と比較します。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z C U S V 6
rr–(vw)
1 0 r r
r 1 1 1
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr の内容と比較します。
1 1 1 0
0 0 1 0 1 0 r r
r 1 1 1
Z Z C U S V 4
rr–(DE)
レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 1 0
0 0 1 1 1 0 r r
r 1 1 1
Z Z C U S V 4
rr–(HL)
レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 1 0
0 1 0 0 1 0 r r
r 1 1 1
Z Z C U S V 4
rr–(IX)
インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 1 0
0 1 0 1 1 0 r r
r 1 1 1
Z Z C U S V 4
rr–(IY)
インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 1 1 1 Z Z C U S V 6
rr–(IX+d)
インデックスレジスタ IX にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2
バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 1 1 1 Z Z C U S V 6
rr–(IY+d)
インデックスレジスタ IY にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2
バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 1 1 1 Z Z C U S V 6
rr–(SP+d)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続す
る 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 1 1 1 Z Z C U S V 6
rr–(HL+d)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バ
イトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。
1 1 1 0
0 1 1 1 1 0 r r
r 1 1 1
Z Z C U S V 6
rr–(HL+C)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16
ビットレジスタ rr の内容と比較します。
1 1 1 0
0 1 1 0 1 0 r r
r 1 1 1
Z Z C U S V 5
SP ← SP+1:rr–(SP)
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジス
タ rr の内容と比較します。
0 1 0 0
1 1 1 1 1 0 r r
r 1 1 1
Z Z C U S V 6
rr–(PC+A)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内
容を 16 ビットレジスタ rr の内容と比較します。
0 1 1 0
0 0 0 1 n n n n
n n n n
C Z C H S V 2
A ← A+n
A レジスタの内容に、オブジェクトコード中の即値 n を加算し、結果を A レジスタに入れます。
1 1 1 0
1 g g g 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 3
g ← g+n
8 ビットレジスタ g の内容に、オブジェクトコード中の即値 n を加算し、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 0 0 1 n n n n
n n n n C Z C U S V 4
gg ← gg+mn
mmmm
mmmm
16 ビットレジスタ gg の内容に、オブジェクトコード中の即値 mn を加算し、結果をレジスタ gg に入れます。
1 1 1 0
1 g g g 0 0 r r
r 0 0 1
C Z C H S V 2
r ← r+g
8 ビットレジスタ r の内容に、8 ビットレジスタ g の内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 0 0 1
C Z C U S V 3
rr ← rr+gg
16 ビットレジスタ rr の内容に、16 ビットレジスタ gg の内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 0 0 1 C Z C H S V 4
r ← r+(x)
8 ビットレジスタ r の内容に、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容を加算し、
結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 5
r ← r+(vw)
0 0 r r
r 0 0 1
8 ビットレジスタ r の内容に、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を加算し、
結果をレジスタ r に入れます。
Page 24
TLCS-870/C1
ニモニック
ADD r,(DE)
ADD r,(HL)
ADD r,(IX)
ADD r,(IY)
ADD r,(IX+d)
ADD r,(IY+d)
ADD r,(SP+d)
ADD r,(HL+d)
ADD r,(HL+C)
ADD r,(+SP)
ADD r,(PC+A) 注
ADD (x),n
ADD (vw),n
ADD (DE),n
ADD (HL),n
ADD (IX),n
ADD (IY),n
ADD (IX+d),n
ADD (IY+d),n
ADD (SP+d),n
ADD (HL+d),n
ADD (HL+C),n
ADD (+SP),n
ADD (PC+A),n 注
ADD rr,(x)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 1 0 0 0 r r
r 0 0 1
C Z C H S V 3
r ← r+(DE)
8 ビットレジスタ r の内容に、レジスタペア DE で指定されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 0 0 1
C Z C H S V 3
r ← r+(HL)
8 ビットレジスタ r の内容に、レジスタペア HL で指定されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 0 0 1
C Z C H S V 3
r ← r+(IX)
8 ビットレジスタ r の内容に、インデックスレジスタ IX で指定されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 0 0 1
C Z C H S V 3
r ← r+(IY)
8 ビットレジスタ r の内容に、インデックスレジスタ IY で指定されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 0 0 1 C Z C H S V 5
r ← r+(IX+d)
8 ビットレジスタ r の内容に、インデックスレジスタ IX にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 0 0 1 C Z C H S V 5
r ← r+(IY+d)
8 ビットレジスタ r の内容に、インデックスレジスタ IY にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 0 0 1 C Z C H S V 5
r ← r+(SP+d)
8 ビットレジスタ r の内容に、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスのメモリ内容に 8 ビットレジスタ r の内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 0 0 1 C Z C H S V 5
r ← r+(HL+d)
8 ビットレジスタ r の内容に、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ
れるアドレスのメモリ内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 0 0 1
C Z C H S V 5
r ← r+(HL+C)
8 ビットレジスタ r の内容に、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内
容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 0 0 1
C Z C H S V 4
SP ← SP+1:r ← r+(SP)
8 ビットレジスタ r の内容に、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容を加算し、
結果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 0 0 1
C Z C H S V 5
r ← r+(PC+A)
8 ビットレジスタ r の内容に、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメ
モリ内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 0 0 1 C Z C H S V 6
(x) ← (x)+n
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容に、オブジェクトコード中の即値 n を加算
し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 7
(vw) ← (vw)+n
0 1 1 0
0 0 0 1 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容に、オブジェクトコード中の即値 n を加
算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 5
(DE) ← (DE)+n
レジスタペア DE で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 5
(HL) ← (HL)+n
レジスタペア HL で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 5
(IX) ← (IX)+n
インデックスレジスタ IX で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入
れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 5
(IY) ← (IY)+n
インデックスレジスタ IY で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入
れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(IX+d) ← (IX+d)+n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容にオブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(IY+d) ← (IY+d)+n
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容にオブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(SP+d) ← (SP+d)+n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
に、オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(HL+d) ← (HL+d)+n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容に、
オブジェクトコード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 7
(HL+C) ← (HL+C)+n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクトコード中の
即値 n を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 6
SP ← SP+1:(SP) ← (SP)+n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容にオブジェクトコード中の即値 n を加算
し、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)+n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクト
コード中の即値 n を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 0 0 1 C Z C U S V 5
rr ← rr+(x+1, x)
16 ビットレジスタ rr の内容に、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトの
メモリ内容を加算し、結果をレジスタ rr に入れます。
オブジェクトコード (2 進 )
Page 25
2.2 演算
TLCS-870/C1
ニモニック
ADD rr,(vw)
ADD rr,(DE)
ADD rr,(HL)
ADD rr,(IX)
ADD rr,(IY)
ADD rr,(IX+d)
ADD rr,(IY+d)
ADD rr,(SP+d)
ADD rr,(HL+d)
ADD rr,(HL+C)
ADD rr,(+SP)
ADD rr,(PC+A) 注
ADDC A,n
ADDC g,n
ADDC gg,mn
ADDC r,g
ADDC rr,gg
ADDC r,(x)
ADDC r, (vw)
ADDC r,(DE)
ADDC r,(HL)
ADDC r,(IX)
ADDC r,(IY)
ADDC r,(IX+d)
ADDC r,(IY+d)
ADDC r,(SP+d)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
v v v v C Z C U S V 6
rr ← rr+(vw+1, vw)
オブジェクトコード (2 進 )
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
1 0 r r
r 0 0 1
16 ビットレジスタ rr の内容に、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイト
のメモリ内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 0 0 1
C Z C U S V 4
rr ← rr+(DE+1, DE)
16 ビットレジスタ rr の内容に、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ
rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 0 0 1
C Z C U S V 4
rr ← rr+(HL+1, HL)
16 ビットレジスタ rr の内容に、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ
rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 0 0 1
C Z C U S V 4
rr ← rr+(IX+1, IX)
16 ビットレジスタ rr の内容に、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果を
レジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 0 0 1
C Z C U S V 4
rr ← rr+(IY+1, IY)
16 ビットレジスタ rr の内容に、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果を
レジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 0 0 1 C Z C U S V 6
rr ← rr+(IX+d+1, IX+d)
16 ビットレジスタ rr の内容に、インデックスレジスタ IX にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 0 0 1 C Z C U S V 6
rr ← rr+(IY+d+1, IY+d)
16 ビットレジスタ rr の内容に、インデックスレジスタ IY にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 0 0 1 C Z C U S V 6
rr ← rr+(SP+d+1, SP+d)
16 ビットレジスタ rr の内容に、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 0 0 1 C Z C U S V 6
rr ← rr+(HL+d+1, HL+d)
16 ビットレジスタ rr の内容に、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスから連続する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 0 0 1
C Z C U S V 6
rr ← rr+(HL+C+1, HL+C)
16 ビットレジスタ rr の内容に、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 0 0 1
C Z C U S V 5
SP ← SP+1:rr ← rr+(SP+1, SP)
16 ビットレジスタ rr の内容に、スタックポインタ SP の内容をインクリメントしその値で指定されるアドレスから連続する 2 バイトの
メモリ内容を加算し、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 0 0 1
C Z C U S V 6
rr ← rr+(PC+A+1, PC+A)
16 ビットレジスタ rr の内容に、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスか
ら連続する 2 バイトのメモリ内容を加算し、結果をレジスタ rr に入れます。
0 1 1 0
0 0 0 0 n n n n
n n n n
C Z C H S V 2
A ← A+n+CF
A レジスタの内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を A レジスタに入れます。
1 1 1 0
1 g g g 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 3
g ← g+n+CF
8 ビットレジスタ g の内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 0 0 0 n n n n
n n n n C Z C U S V 4
gg ← gg+mn+CF
mmmm
mmmm
16 ビットレジスタ gg の内容に、オブジェクトコード中の即値 mn およびキャリーフラグの内容を加算し、結果をレジスタ gg に入れま
す。
1 1 1 0
1 g g g 0 0 r r
r 0 0 0
C Z C H S V 2
r ← r+g+CF
8 ビットレジスタ r の内容に、8 ビットレジスタ g の内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 0 0 0
C Z C U S V 3
rr ← rr+gg+CF
16 ビットレジスタ rr の内容に、16 ビットレジスタ gg の内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 0 0 0 C Z C H S V 4
r ← r+(x)+CF
8 ビットレジスタ r の内容に、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容およびキャ
リーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 5
r ← r+(vw)+CF
0 0 r r
r 0 0 0
8 ビットレジスタ r の内容に、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容およびキャ
リーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 0 0 0 r r
r 0 0 0
C Z C H S V 3
r ← r+(DE)+CF
8 ビットレジスタ r の内容に、レジスタペア DE で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジ
スタ r に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 0 0 0
C Z C H S V 3
r ← r+(HL)+CF
8 ビットレジスタ r の内容に、レジスタペア HL で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジ
スタ r に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 0 0 0
C Z C H S V 3
r ← r+(IX)+CF
8 ビットレジスタ r の内容に、インデックスレジスタ IX で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結
果をレジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 0 0 0
C Z C H S V 3
r ← r+(IY)+CF
8 ビットレジスタ r の内容に、インデックスレジスタ IY で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結
果をレジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 0 0 0 C Z C H S V 5
r ← r+(IX+d)+CF
8 ビットレジスタ r の内容に、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 0 0 0 C Z C H S V 5
r ← r+(IY+d)+CF
8 ビットレジスタ r の内容に、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 0 0 0 C Z C H S V 5
r ← r+(SP+d)+CF
8 ビットレジスタ r の内容に、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
Page 26
TLCS-870/C1
ニモニック
ADDC r,(HL+d)
ADDC r,(HL+C)
ADDC r,(+SP)
ADDC r,(PC+A) 注
ADDC (x),n
ADDC (vw),n
ADDC (DE),n
ADDC (HL),n
ADDC (IX),n
ADDC (IY),n
ADDC (IX+d),n
ADDC (IY+d),n
ADDC (SP+d),n
ADDC (HL+d),n
ADDC (HL+C),n
ADDC (+SP),n
ADDC (PC+A),n 注
ADDC rr,(x)
ADDC rr,(vw)
ADDC rr,(DE)
ADDC rr,(HL)
ADDC rr,(IX)
ADDC rr,(IY)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 0 0 0 C Z C H S V 5
r ← r+(HL+d)+CF
8 ビットレジスタ r の内容に、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ
れるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 0 0 0
C Z C H S V 5
r ← r+(HL+C)+CF
8 ビットレジスタ r の内容に、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内
容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 0 0 0
C Z C H S V 4
SP ← SP+1:r ← r+(SP)+CF
8 ビットレジスタ r の内容に、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容およびキャ
リーフラグの内容を加算し、結果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 0 0 0
C Z C H S V 5
r ← r+(PC+A)+CF
8 ビットレジスタ r の内容に、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメ
モリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 0 0 0 C Z C H S V 6
(x) ← (x)+n+CF
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容に、オブジェクトコード中の即値 n および
キャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 7
(vw) ← (vw)+n+CF
0 1 1 0
0 0 0 0 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容に、オブジェクトコード中の即値 n およ
びキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 5
(DE) ← (DE)+n+CF
レジスタペア DE で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を
前記のアドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 5
(HL) ← (HL)+n +CF
レジスタペア HL で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を
前記のアドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 5
(IX) ← (IX)+n+CF
インデックスレジスタ IX で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、
結果を前記のアドレスに入れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 5
(IY) ← (IY)+n+CF
インデックスレジスタ IY で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、
結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(IX+d) ← (IX+d)+n+CF
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
0 1 0 1 d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(IY+d) ← (IY+d)+n+CF
1 1 0 1
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(SP+d) ← (SP+d)+n+CF
n n n n
n n n n
スタックポインタ SP の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内
容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(HL+d) ← (HL+d)+n+CF
n n n n
n n n n
レジスタペア HL の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 7
(HL+C) ← (HL+C)+n+CF
レジスタペア HL の内容に、C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクトコード中
の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 6
SP ← SP+1:(SP) ← (SP)+n+CF
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 n および
キャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)+n+CF
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクト
コード中の即値 n およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 0 0 0 C Z C U S V 5
rr ← rr+(x+1, x)+CF
16 ビットレジスタ rr の内容に、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトの
メモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C U S V 6
rr ← rr+(vw+1, vw)+CF
1 0 r r
r 0 0 0
16 ビットレジスタ rr の内容に、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイト
のメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 0 0 0
C Z C U S V 4
rr ← rr+(DE+1, DE)+CF
16 ビットレジスタ rr の内容に、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内
容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 0 0 0
C Z C U S V 4
rr ← rr+(HL+1, HL)+CF
16 ビットレジスタ rr の内容に、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内
容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 0 0 0
C Z C U S V 4
rr ← rr+(IX+1, IX)+CF
16 ビットレジスタ rr の内容に、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフ
ラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 0 0 0
C Z C U S V 4
rr ← rr+(IY+1,IY)+CF
16 ビットレジスタ rr の内容に、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフ
ラグの内容を加算し、結果をレジスタ rr に入れます。
オブジェクトコード (2 進 )
Page 27
2.2 演算
TLCS-870/C1
ニモニック
ADDC rr,(IX+d)
ADDC rr,(IY+d)
ADDC rr,(SP+d)
ADDC rr,(HL+d)
ADDC rr,(HL+C)
ADDC rr,(+SP)
ADDC rr,(PC+A) 注
SUB A,n
SUB g,n
SUB gg,mn
SUB r,g
SUB rr,gg
SUB r,(x)
SUB r,(vw)
SUB r,(DE)
SUB r,(HL)
SUB r,(IX)
SUB r,(IY)
SUB r,(IX+d)
SUB r,(IY+d)
SUB r,(SP+d)
SUB r,(HL+d)
SUB r,(HL+C)
SUB r,(+SP)
SUB r,(PC+A) 注
SUB (x),n
SUB (vw),n
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 0 0 0 C Z C U S V 6
rr ← rr+(IX+d+1, IX+d)+CF
16 ビットレジスタ rr の内容に、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 0 0 0 C Z C U S V 6
rr ← rr+(IY+d+1, IY+d)+CF
16 ビットレジスタ rr の内容に、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 0 0 0 C Z C U S V 6
rr ← rr+(SP+d+1, SP+d)+CF
16 ビットレジスタ rr の内容に、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 0 0 0 C Z C U S V 6
rr ← rr+(HL+d+1, HL+d)+CF
16 ビットレジスタ rr の内容に、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 0 0 0
C Z C U S V 6
rr ← rr+(HL+C+1, HL+C)+CF
16 ビットレジスタ rr の内容に、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 0 0 0
C Z C U S V 5
SP ← SP+1:rr ← rr+(SP+1, SP)+CF
16 ビットレジスタ rr の内容に、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイト
のメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 0 0 0
C Z C U S V 6
rr ← rr+(PC+A+1, PC+A)+CF
16 ビットレジスタ rr の内容に、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスか
ら連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。
0 1 1 0
0 0 1 1 n n n n
n n n n
C Z C H S V 2
A ← A–n
A レジスタの内容から、オブジェクトコード中の即値 n を引き、結果を A レジスタに入れます。
1 1 1 0
1 g g g 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 3
g ← g–n
8 ビットレジスタ g の内容から、オブジェクトコード中の即値 n を引き、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 0 1 1 n n n n
n n n n C Z C U S V 4
gg ← gg–mn
mmmm
mmmm
16 ビットレジスタ gg の内容から、オブジェクトコード中の即値 mn を引き、結果をレジスタ gg に入れます。
1 1 1 0
1 g g g 0 0 r r
r 0 1 1
C Z C H S V 2
r ← r–g
8 ビットレジスタ r の内容から、8 ビットレジスタ g の内容を引き、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 0 1 1
C Z C U S V 3
rr ← rr–gg
16 ビットレジスタ rr の内容から、16 ビットレジスタ gg の内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 0 1 1 C Z C H S V 4
r ← r–(x)
8 ビットレジスタ r の内容から、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容を引き、
結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 5
r ← r–(vw)
0 0 r r
r 0 1 1
8 ビットレジスタ r の内容から、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容を引き、
結果をレジスタ r に入れます。
1 1 1 0
0 0 1 0 0 0 r r
r 0 1 1
C Z C H S V 3
r ← r–(DE)
8 ビットレジスタ r の内容から、レジスタペア DE で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 0 1 1
C Z C H S V 3
r ← r–(HL)
8 ビットレジスタ r の内容から、レジスタペア HL で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 0 1 1
C Z C H S V 3
r ← r–(IX)
8 ビットレジスタ r の内容から、インデックスレジスタ IX で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 0 1 1
C Z C H S V 3
r ← r–(IY)
8 ビットレジスタ r の内容から、インデックスレジスタ IY で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 0 1 1 C Z C H S V 5
r ← r–(IX+d)
8 ビットレジスタ r の内容から、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 0 1 1 C Z C H S V 5
r ← r–(IY+d)
8 ビットレジスタ r の内容から、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 0 1 1 C Z C H S V 5
r ← r–(SP+d)
8 ビットレジスタ r の内容から、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 0 1 1 C Z C H S V 5
r ← r–(HL+d)
8 ビットレジスタ r の内容から、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスのメモリ内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 0 1 1
C Z C H S V 5
r ← r–(HL)+C
8 ビットレジスタ r の内容から、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ
内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 0 1 1
C Z C H S V 4
SP ← SP+1:r ← r–(SP)
8 ビットレジスタ r の内容から、スタックポインタ SP の内容をインクリメントしその値で指定されるアドレスのメモリ内容を引き、結
果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 0 1 1
C Z C H S V 5
r ← r–(PC+A)
8 ビットレジスタ r の内容から、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの
メモリ内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 0 1 1 C Z C H S V 6
(x) ← (x)–n
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容から、オブジェクトコード中の即値 n を引
き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 7
(vw) ← (vw)–n
0 1 1 0
0 0 1 1 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容から、オブジェクトコード中の即値 n を
引き、結果を前記のアドレスに入れます。
オブジェクトコード (2 進 )
Page 28
TLCS-870/C1
ニモニック
SUB (DE),n
SUB (HL),n
SUB (IX),n
SUB (IY),n
SUB (IX+d),n
SUB (IY+d),n
SUB (SP+d),n
SUB (HL+d),n
SUB (HL+C),n
SUB (+SP),n
SUB (PC+A),n 注
SUB rr,(x)
SUB rr,(vw)
SUB rr,(DE)
SUB rr,(HL)
SUB rr,(IX)
SUB rr,(IY)
SUB rr,(IX+d)
SUB rr,(IY+d)
SUB rr,(SP+d)
SUB rr,(HL+d)
SUB rr,(HL+C)
SUB rr,(+SP)
SUB rr,(PC+A) 注
SUBB A,n
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 1 0 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 5
(DE) ← (DE)–n
レジスタペア DE で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 5
(HL) ← (HL)–n
レジスタペア HL で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 5
(IX) ← (IX)–n
インデックスレジスタ IX で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入
れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 5
(IY) ← (IY)–n
インデックスレジスタ IY で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入
れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(IX+d) ← (IX+d)–n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(IY+d) ← (IY+d)–n
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(SP+d) ← (SP+d)–n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
から、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(HL+d) ← (HL+d)–n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容か
ら、オブジェクトコード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 7
(HL+C) ← (HL+C)–n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクトコード中
の即値 n を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 6
SP ← SP+1:(SP) ← (SP)–n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容からオブジェクトコード中の即値 n を引
き、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)–n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクト
コード中の即値 n を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 0 1 1 C Z C U S V 5
rr ← rr–(x+1, x)
16 ビットレジスタ rr の内容から、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイト
のメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C U S V 6
rr ← rr–(vw+1, vw)
1 0 r r
r 0 1 1
16 ビットレジスタ rr の内容から、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイ
トのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 0 1 1
C Z C U S V 4
rr ← rr–(DE+1, DE)
16 ビットレジスタ rr の内容から、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ
rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 0 1 1
C Z C U S V 4
rr ← rr–(HL+1, HL)
16 ビットレジスタ rr の内容から、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ
rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 0 1 1
C Z C U S V 4
rr ← rr–(IX+1, IX)
16 ビットレジスタ rr の内容から、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果を
レジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 0 1 1
C Z C U S V 4
rr ← rr–(IY+1, IY)
16 ビットレジスタ rr の内容から、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果を
レジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 0 1 1 C Z C U S V 6
rr ← rr–(IX+d+1, IX+d)
16 ビットレジスタ rr の内容から、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算し
た値で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 0 1 1 C Z C U S V 6
rr ← rr–(IY+d+1, IY+d)
16 ビットレジスタ rr の内容から、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算し
た値で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 0 1 1 C Z C U S V 6
rr ← rr–(SP+d+1, SP+d)
16 ビットレジスタ rr の内容から、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 0 1 1 C Z C U S V 6
rr ← rr–(HL+d+1, HL+d)
16 ビットレジスタ rr の内容から、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスから連続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 0 1 1
C Z C U S V 6
rr ← rr–(HL+C+1, HL+C)
16 ビットレジスタ rr の内容から、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連
続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 0 1 1
C Z C U S V 5
SP ← SP+1:rr ← rr–(SP+1, SP)
16 ビットレジスタ rr の内容から、スタックポインタ SP の内容をインクリメントしその値で指定されるアドレスから連続する 2 バイト
のメモリ内容を引き、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 0 1 1
C Z C U S V 6
rr ← rr–(PC+A+1, PC+A)
16 ビットレジスタ rr の内容から、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレス
から連続する 2 バイトのメモリ内容を引き、結果をレジスタ rr に入れます。
0 1 1 0
0 0 1 0 n n n n
n n n n
C Z C H S V 2
A ← A–n–CF
A レジスタの内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を A レジスタに入れます。
オブジェクトコード (2 進 )
Page 29
2.2 演算
TLCS-870/C1
ニモニック
SUBB g,n
SUBB gg,mn
SUBB r,g
SUBB rr,gg
SUBB r,(x)
SUBB r,(vw)
SUBB r,(DE)
SUBB r,(HL)
SUBB r,(IX)
SUBB r,(IY)
SUBB r,(IX+d)
SUBB r,(IY+d)
SUBB r,(SP+d)
SUBB r,(HL+d)
SUBB r,(HL+C)
SUBB r,(+SP)
SUBB r,(PC+A) 注
SUBB (x),n
SUBB (vw),n
SUBB (DE),n
SUBB (HL),n
SUBB (IX),n
SUBB (IY),n
SUBB (IX+d),n
SUBB (IY+d),n
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
1 g g g 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 3
g ← g–n–CF
8 ビットレジスタ g の内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 0 1 0 n n n n
n n n n C Z C U S V 4
gg ← gg–mn–CF
mmmm
mmmm
16 ビットレジスタ gg の内容から、オブジェクトコード中の即値 mn およびキャリーフラグの内容を引き、結果をレジスタ gg に入れま
す。
1 1 1 0
1 g g g 0 0 r r
r 0 1 0
C Z C H S V 2
r ← r–g–CF
8 ビットレジスタ r の内容から、8 ビットレジスタ g の内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 0 1 0
C Z C U S V 3
rr ← rr–gg–CF
16 ビットレジスタ rr の内容から、16 ビットレジスタ gg の内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 0 1 0 C Z C H S V 4
r ← r–(x)–CF
8 ビットレジスタ r の内容から、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容および
キャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 5
r ← r–(vw)–CF
0 0 r r
r 0 1 0
8 ビットレジスタ r の内容から、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容および
キャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 0 0 0 r r
r 0 1 0
C Z C H S V 3
r ← r–(DE)–CF
8 ビットレジスタ r の内容から、レジスタペア DE で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジ
スタ r に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 0 1 0
C Z C H S V 3
r ← r–(HL)–CF
8 ビットレジスタ r の内容から、レジスタペア HL で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジ
スタ r に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 0 1 0
C Z C H S V 3
r ← r–(IX)–CF
8 ビットレジスタ r の内容から、インデックスレジスタ IX で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結
果をレジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 0 1 0
C Z C H S V 3
r ← r–(IY)–CF
8 ビットレジスタ r の内容から、インデックスレジスタ IY で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結
果をレジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 0 1 0 C Z C H S V 5
r ← r–(IX+d)–CF
8 ビットレジスタ r の内容から、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 0 1 0 C Z C H S V 5
r ← r–(IX+d)–CF
8 ビットレジスタ r の内容から、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 0 1 0 C Z C H S V 5
r ← r–(SP+d)–CF
8 ビットレジスタ r の内容から、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 0 1 0 C Z C H S V 5
r ← r–(HL+d)–CF
8 ビットレジスタ r の内容から、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 0 1 0
C Z C H S V 5
r ← r–(HL+C)–CF
8 ビットレジスタ r の内容から、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ
内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 0 1 0
C Z C H S V 4
SP ← SP+1:r ← r–(SP)–CF
8 ビットレジスタ r の内容から、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容および
キャリーフラグの内容を引き、結果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 0 1 0
C Z C H S V 5
r ← r–(PC+A)–CF
8 ビットレジスタ r の内容から、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの
メモリ内容およびキャリーフラグの内容を引き、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 0 1 0 C Z C H S V 6
(x) ← (x)–n–CF
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容から、オブジェクトコード中の即値 n およ
びキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C H S V 7
(vw) ← (vw)–n–CF
0 1 1 0
0 0 1 0 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容から、オブジェクトコード中の即値 n お
よびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 5
(DE) ← (DE)–n–CF
レジスタペア DE で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を
前記のアドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 5
(HL) ← (HL)–n–CF
レジスタペア HL で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を
前記のアドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 5
(IX) ← (IX)–n–CF
インデックスレジスタ IX で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、
結果を前記のアドレスに入れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 5
(IY) ← (IY)–n–CF
インデックスレジスタ IY で指定されるアドレスのメモリ内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、
結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(IX+d) ← (IX+d)–n–CF
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(IY+d) ← (IY+d)–n–CF
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
オブジェクトコード (2 進 )
Page 30
TLCS-870/C1
ニモニック
SUBB (SP+d),n
SUBB (HL+d),n
SUBB (HL+C),n
SUBB (+SP),n
SUBB (PC+A),n 注
SUBB rr,(x)
SUBB rr,(vw)
SUBB rr,(DE)
SUBB rr,(HL)
SUBB rr,(IX)
SUBB rr,(IY)
SUBB rr,(IX+d)
SUBB rr,(IY+d)
SUBB rr,(SP+d)
SUBB rr,(HL+d)
SUBB rr,(HL+C)
SUBB rr,(+SP)
SUBB rr,(PC+A) 注
AND A,n
AND g,n
AND gg,mn
AND r,g
AND rr,gg
AND r,(x)
AND r,(vw)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
0 0 1 0 C Z C H S V 7
(SP+d) ← (SP+d)–n–CF
オブジェクトコード (2 進 )
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(HL+d) ← (HL+d)–n–CF
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容か
ら、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 7
(HL+C) ← (HL+C)–n–CF
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクトコード中
の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 6
SP ← SP+1:(SP) ← (SP)–n–CF
スタックポインタ SP の内容をインクリメントし、その値で指定されたアドレスのメモリ内容からオブジェクトコード中の即値 n および
キャリーフラグの内容を引き、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)–n–CF
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクト
コード中の即値 n およびキャリーフラグの内容を引き、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 0 1 0 C Z C U S V 5
rr ← rr–(x+1, x)–CF
16 ビットレジスタ rr の内容から、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイト
のメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z C U S V 6
rr ← rr–(vw+1, vw)–CF
1 0 r r
r 0 1 0
16 ビットレジスタ rr の内容から、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイ
トのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 0 1 0
C Z C U S V 4
rr ← rr–(DE+1, DE)–CF
16 ビットレジスタ rr の内容から、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの
内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 0 1 0
C Z C U S V 4
rr ← rr–(HL+1, HL)–CF
16 ビットレジスタ rr の内容から、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの
内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 0 1 0
C Z C U S V 4
rr ← rr–(IX+1, IX)–CF
16 ビットレジスタ rr の内容から、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリー
フラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 0 1 0
C Z C U S V 4
rr ← rr–(IY+1, IY)–CF
16 ビットレジスタ rr の内容から、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリー
フラグの内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 0 1 0 C Z C U S V 6
rr ← rr–(IX+d+1, IX+d)–CF
16 ビットレジスタ rr の内容から、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算し
た値で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 0 1 0 C Z C U S V 6
rr ← rr–(IY+d+1, IY+d)–CF
16 ビットレジスタ rr の内容から、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算し
た値で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 0 1 0 C Z C U S V 6
rr ← rr–(SP+d+1, SP+d)–CF
16 ビットレジスタ rr の内容から、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 0 1 0 C Z C U S V 6
rr ← rr–(HL+d+1, HL+d)–CF
16 ビットレジスタ rr の内容から、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 0 1 0
C Z C U S V 6
rr ← rr–(HL+C+1, HL+C)–CF
16 ビットレジスタ rr の内容から、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連
続する 2 バイトのメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 0 1 0
C Z C U S V 5
SP ← SP+1:rr ← rr–(SP+1, SP)–CF
16 ビットレジスタ rr の内容から、スタックポインタ SP の内容をインクリメントしその値で指定されるアドレスから連続する 2 バイト
のメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 0 1 0
C Z C U S V 6
rr ← rr–(PC+A+1, PC+A)–CF
16 ビットレジスタ rr の内容から、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレス
のメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。
0 1 1 0
0 1 0 0 n n n n
n n n n
Z Z – – – – 2
A ← A&n
A レジスタの内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を A レジスタに入れます。
1 1 1 0
1 g g g 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 3
g ← g&n
8 ビットレジスタ g の内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 1 0 0 n n n n
n n n n Z Z – – – – 4
gg ← gg&mn
mmmm
mmmm
16 ビットレジスタ gg の内容と、オブジェクトコード中の即値 mn とでビットごとの論理積を取り、結果をレジスタ gg に入れます。
1 1 1 0
1 g g g 0 0 r r
r 1 0 0
Z Z – – – – 2
r ← r&g
8 ビットレジスタ r の内容と、8 ビットレジスタ g の内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 1 0 0
Z Z – – – – 3
rr ← rr&gg
16 ビットレジスタ rr の内容と、16 ビットレジスタ gg の内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 1 0 0 Z Z – – – – 4
r ← r&(x)
8 ビットレジスタ r の内容と、オブジェクトコード中の即値 x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容とで
ビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – –
5
r ← r&(vw)
0 0 r r
r 1 0 0
8 ビットレジスタ r の内容と、オブジェクトコード中の即値 vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容とで
ビットごとの論理積を取り、結果をレジスタ r に入れます。
Page 31
2.2 演算
TLCS-870/C1
ニモニック
AND r,(DE)
AND r,(HL)
AND r,(IX)
AND r,(IY)
AND r,(IX+d)
AND r,(IY+d)
AND r,(SP+d)
AND r,(HL+d)
AND r,(HL+C)
AND r,(+SP)
AND r,(PC+A) 注
AND (X),n
AND (vw),n
AND (DE),n
AND (HL),n
AND (IX),n
AND (IY),n
AND (IX+d),n
AND (IY+d),n
AND (SP+d),n
AND (HL+d),n
AND (HL+C),n
AND (+SP),n
AND (PC+A),n 注
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 1 0 0 0 r r
r 1 0 0
Z Z – – – – 3
r ← r&(DE)
8 ビットレジスタ r の内容と、レジスタペア DE で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r
に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 1 0 0
Z Z – – – – 3
r ← r&(HL)
8 ビットレジスタ r の内容と、レジスタペア HL で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r
に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 1 0 0
Z Z – – – – 3
r ← r&(IX)
8 ビットレジスタ r の内容と、インデックスレジスタ IX で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレ
ジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 1 0 0
Z Z – – – – 3
r ← r&(IY)
8 ビットレジスタ r の内容と、インデックスレジスタ IY で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレ
ジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 1 0 0 Z Z – – – – 5
r ← r&(IX+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 1 0 0 Z Z – – – – 5
r ← r&(IY+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 1 0 0 Z Z – – – – 5
r ← r&(SP+d)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 1 0 0 Z Z – – – – 5
r ← r&(HL+d)
8 ビットレジスタ r の内容と、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ
れるアドレスのメモリ内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 1 0 0
Z Z – – – – 5
r ← r&(HL+C)
8 ビットレジスタ r の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内
容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 1 0 0
Z Z – – – – 4
SP ← SP+1:r ← r&(SP)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビット
ごとの論理積を取り、結果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 1 0 0
Z Z – – – – 5
r ← r&(PC+A)
8 ビットレジスタ r の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメ
モリ内容とでビットごとの論理積を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 1 0 0 Z Z – – – – 6
(x) ← (x)&n
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 7
(vw) ← (vw)&n
0 1 1 0
0 1 0 0 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 5
(DE) ← (DE)&n
レジスタペア DE で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記の
アドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 5
(HL) ← (HL)&n
レジスタペア HL で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記の
アドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 5
(IX) ← (IX)&n
インデックスレジスタ IX で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果
を前記のアドレスに入れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 5
(IY) ← (IY)&n
インデックスレジスタ IY で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果
を前記のアドレスに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(IX+d) ← (IX+d)&n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(IY+d) ← (IY+d)&n
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(SP+d) ← (SP+d)&n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(HL+d) ← (HL+d)&n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容と、
オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 7
(HL+C) ← (HL+C)&n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコード中の
即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 6
SP ← SP+1:(SP) ← (SP)&n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理積を取り、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 7
(PC+A) ← (PC+A)&n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクト
コード中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。
オブジェクトコード (2 進 )
Page 32
TLCS-870/C1
ニモニック
AND rr,(x)
AND rr,(vw)
AND rr,(DE)
AND rr,(HL)
AND rr,(IX)
AND rr,(IY)
AND rr,(IX+d)
AND rr,(IY+d)
AND rr,(SP+d)
AND rr,(HL+d)
AND rr,(HL+C)
AND rr,(+SP)
AND rr,(PC+A) 注
OR A,n
OR g,n
OR gg,mn
OR r,g
OR rr,gg
OR r,(x)
OR r,(vw)
OR r,(DE)
OR r,(HL)
OR r,(IX)
OR r,(IY)
OR r,(IX+d)
OR r,(IY+d)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 1 0 0 Z Z – – – – 5
rr ← rr&(x)
16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトの
メモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 6
rr ← rr&(vw)
1 0 r r
r 1 0 0
16 ビットレジスタ rr の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイト
のメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 1 0 0
Z Z – – – – 4
rr ← rr&(DE)
16 ビットレジスタ rr の内容と、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を
取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 1 0 0
Z Z – – – – 4
rr ← rr&(HL)
16 ビットレジスタ rr の内容と、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を
取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 1 0 0
Z Z – – – – 4
rr ← rr&(IX)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 1 0 0
Z Z – – – – 4
rr ← rr&(IY)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
論理積を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 1 0 0 Z Z – – – – 6
rr ← rr&(IX+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 1 0 0 Z Z – – – – 6
rr ← rr&(IY+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 1 0 0 Z Z – – – – 6
rr ← rr&(SP+d)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 1 0 0 Z Z – – – – 6
rr ← rr&(HL+d)
16 ビットレジスタ rr の内容と、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 1 0 0
Z Z – – – – 6
rr ← rr&(HL+C)
16 ビットレジスタ rr の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 1 0 0
Z Z – – – – 5
SP ← SP+1:rr ← rr&(SP)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイト
のメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 1 0 0
Z Z – – – – 6
rr ← rr&(PC+A)
16 ビットレジスタ rr の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスか
ら連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。
0 1 1 0
0 1 1 0 n n n n
n n n n
Z Z – – – – 2
A ← A⏐n
A レジスタの内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を A レジスタに入れます。
1 1 1 0
1 g g g 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 3
g ← g⏐n
8 ビットレジスタ g の内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果をレジスタ g に入れます。
1 1 1 0
1 g g g 0 1 1 0
1 1 1 0 n n n n
n n n n Z Z – – – – 4
gg ← gg⏐mn
mmmm
mmmm
16 ビットレジスタ gg の内容と、オブジェクトコード中の即値 mn とでビットごとの論理和を取り、結果をレジスタ gg に入れます。
1 1 1 0
1 g g g 0 0 r r
r 1 1 0
Z Z – – – – 2
r ← r⏐g
8 ビットレジスタ r の内容と、8 ビットレジスタ g の内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 1 1 0
Z Z – – – – 3
rr ← rr⏐gg
16 ビットレジスタ rr の内容と、16 ビットレジスタ gg の内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 1 1 0 Z Z – – – – 4
r ← r⏐(x)
8 ビットレジスタ r の内容と、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容とでビット
ごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 5
r ← r⏐(vw)
0 0 r r
r 1 1 0
8 ビットレジスタ r の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容とでビット
ごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 0 0 0 r r
r 1 1 0
Z Z – – – – 3
r ← r⏐(DE)
8 ビットレジスタ r の内容と、レジスタペア DE で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r
に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 1 1 0
Z Z – – – – 3
r ← r⏐(HL)
8 ビットレジスタ r の内容と、レジスタペア HL で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r
に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 1 1 0
Z Z – – – – 3
r ← r⏐(IX)
8 ビットレジスタ r の内容と、インデックスレジスタ IX で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレ
ジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 1 1 0
Z Z – – – – 3
r ← r⏐(IY)
8 ビットレジスタ r の内容と、インデックスレジスタ IY で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレ
ジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 1 1 0 Z Z – – – – 5
r ← r⏐(IX+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 1 1 0 Z Z – – – – 5
r ← r⏐(IY+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
オブジェクトコード (2 進 )
Page 33
2.2 演算
TLCS-870/C1
ニモニック
OR r,(SP+d)
OR r,(HL+d)
OR r,(HL+C)
OR r,(+SP)
OR r,(PC+A) 注
OR (x),n
OR (vw),n
OR (DE),n
OR (HL),n
OR (IX),n
OR (IY),n
OR (IX+d),n
OR (IY+d),n
OR (SP+d),n
OR (HL+d),n
OR (HL+C),n
OR (+SP),n
OR (PC+A),n 注
OR rr,(x)
OR rr,(vw)
OR rr,(DE)
OR rr,(HL)
OR rr,(IX)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 1 1 0 Z Z – – – – 5
r ← r⏐(SP+d)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 1 1 0 Z Z – – – – 5
r ← r⏐(HL+d)
8 ビットレジスタ r の内容と、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ
れるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 1 1 0
Z Z – – – – 5
r ← r⏐(HL+C)
8 ビットレジスタ r の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内
容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 1 1 0
Z Z – – – – 4
SP ← SP+1:r ← r⏐(SP)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビット
ごとの論理和を取り、結果をレジスタ r に入れます。
0 1 0 0
1 1 1 1 0 0 r r
r 1 1 0
Z Z – – – – 5
r ← r⏐(PC+A)
8 ビットレジスタ r の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメ
モリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 1 1 0 Z Z – – – – 6
(x) ← (x)⏐n
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 7
(vw) ← (vw)⏐n
0 1 1 0
0 1 1 0 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 5
(DE) ← (DE)⏐n
レジスタペア DE で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記の
アドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 5
(HL) ← (HL)⏐n
レジスタペア HL で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記の
アドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 5
(IX) ← (IX)⏐n
インデックスレジスタ IX で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果
を前記のアドレスに入れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 5
(IY) ← (IY)⏐n
インデックスレジスタ IY で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果
を前記のアドレスに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(IX+d) ← (IX+d)⏐n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(IY+d) ← (IY+d)⏐n
1 1 0 1
0 1 0 1 d d d d
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(SP+d) ← (SP+d)⏐n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(HL+d) ← (HL+d)⏐n
n n n n
n n n n
レジスタペア HL の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 7
(HL+C) ← (HL+C)⏐n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコード中の
即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 6
SP ← SP+1:(SP) ← (SP)⏐n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの論理和を取り、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 1 1 0 n n n n
n n n n Z Z – – – – 7
(PC+A) ← (PC+A)⏐n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクト
コード中の即値 n とでビットごとの論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 1 1 0 Z Z – – – – 5
rr ← rr⏐(x)
16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトの
メモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 6
rr ← rr⏐(vw)
1 0 r r
r 1 1 0
16 ビットレジスタ rr の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイト
のメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 1 1 0
Z Z – – – – 4
rr ← rr⏐(DE)
16 ビットレジスタ rr の内容と、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を
取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 1 1 0
Z Z – – – – 4
rr ← rr⏐(HL)
16 ビットレジスタ rr の内容と、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を
取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 0 1 0 r r
r 1 1 0
Z Z – – – – 4
rr ← rr⏐(IX)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
論理和を取り、結果をレジスタ rr に入れます。
オブジェクトコード (2 進 )
Page 34
TLCS-870/C1
ニモニック
OR rr,(IY)
OR rr,(IX+d)
OR rr,(IY+d)
OR rr,(SP+d)
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 1 0 1 1 0 r r
r 1 1 0
Z Z – – – – 4
rr ← rr⏐(IY)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 1 1 0 Z Z – – – – 6
rr ← rr⏐(IX+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 1 1 0 Z Z – – – – 6
rr ← rr⏐(IY+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 1 1 0 Z Z – – – – 6
rr ← rr⏐(SP+d)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 1 1 0 Z Z – – – – 6
rr ← rr⏐(HL+d)
オブジェクトコード (2 進 )
OR rr,(HL+d)
16 ビットレジスタ rr の内容と、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定
されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 1 1 0
Z Z – – – – 6
rr ← rr⏐(HL+C)
OR rr,(HL+C)
16 ビットレジスタ rr の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 1 1 0
Z Z – – – – 5
SP ← SP+1:rr ← rr⏐(SP)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイト
のメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 1 1 0
Z Z – – – – 6
rr ← rr⏐(PC+A)
16 ビットレジスタ rr の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスか
ら連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。
0 1 1 0
0 1 0 1 n n n n
n n n n
Z Z – – – – 2
A ←A^n
A レジスタの内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を A レジスタに入れます。n = 0xFF
のときは、1 の補数 ( データ反転 ) 命令になります。
例 : A = 0x69 のとき、XOR A, 0xFF 命令を実行すると、A = 0x96, ZF = 0 となります。
1 1 1 0
1 g g g 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 3
g ←g^n
8 ビットレジスタ g の内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果をレジスタ g に入れます。n
= 0xFF のときは、1 の補数 ( データ反転 ) 命令になります。
1 1 1 0
1 g g g 0 1 1 0
1 1 0 1 n n n n
n n n n Z Z – – – – 4
gg ← gg^mn
mmmm
mmmm
16 ビットレジスタ gg の内容と、オブジェクトコード中の即値 mn とでビットごとの排他的論理和を取り、結果をレジスタ gg に入れま
す。mn = 0xFFFF のときは、1 の補数 ( データ反転 ) 命令になります。
1 1 1 0
1 g g g 0 0 r r
r 1 0 1
Z Z – – – – 2
r ←r^g
8 ビットレジスタ r の内容と、8 ビットレジスタ g の内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
1 g g g 1 0 r r
r 1 0 1
Z Z – – – – 3
rr ←rr^gg
16 ビットレジスタ rr の内容と、16 ビットレジスタ gg の内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 0 r r
r 1 0 1 Z Z – – – – 4
r ←r^(x)
8 ビットレジスタ r の内容と、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容とでビット
ごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 5
r ← r^(vw)
0 0 r r
r 1 0 1
8 ビットレジスタ r の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容とでビット
ごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 1 0 0 0 r r
r 1 0 1
Z Z – – – – 3
r ←r^(DE)
8 ビットレジスタ r の内容と、レジスタペア DE で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジ
スタ r に入れます。
1 1 1 0
0 0 1 1 0 0 r r
r 1 0 1
Z Z – – – – 3
r ←r^(HL)
8 ビットレジスタ r の内容と、レジスタペア HL で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジ
スタ r に入れます。
1 1 1 0
0 1 0 0 0 0 r r
r 1 0 1
Z Z – – – – 3
r ←r^(IX)
8 ビットレジスタ r の内容と、インデックスレジスタ IX で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結
果をレジスタ r に入れます。
1 1 1 0
0 1 0 1 0 0 r r
r 1 0 1
Z Z – – – – 3
r ←r^(IY)
8 ビットレジスタ r の内容と、インデックスレジスタ IY で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結
果をレジスタ r に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 0 r r
r 1 0 1 Z Z – – – – 5
r ←r^(IX+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 0 r r
r 1 0 1 Z Z – – – – 5
r ←r^(IY+d)
8 ビットレジスタ r の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値
で指定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 0 r r
r 1 0 1 Z Z – – – – 5
r ←r^(SP+d)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指
定されるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 0 r r
r 1 0 1 Z Z – – – – 5
r ←r^(HL+d)
8 ビットレジスタ r の内容と、レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ
れるアドレスのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 1 0 0 r r
r 1 0 1
Z Z – – – – 5
r ←r^(HL+C)
8 ビットレジスタ r の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内
容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 1 1 0 0 0 r r
r 1 0 1
Z Z – – – – 4
SP ← SP+1:r ← r^(SP)
8 ビットレジスタ r の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビット
ごとの排他的論理和を取り、結果をレジスタ r に入れます。
OR rr,(+SP)
OR rr,(PC+A) 注
XOR A,n
XOR g,n
XOR gg,mn
XOR r,g
XOR rr,gg
XOR r,(x)
XOR r,(vw)
XOR r,(DE)
XOR r,(HL)
XOR r,(IX)
XOR r,(IY)
XOR r,(IX+d)
XOR r,(IY+d)
XOR r,(SP+d)
XOR r,(HL+d)
XOR r,(HL+C)
XOR r,(+SP)
RA001
Page 35
2.2 演算
TLCS-870/C1
ニモニック
XOR r,(PC+A) 注
XOR (x),n
XOR (vw),n
XOR (DE),n
XOR (HL),n
XOR (IX),n
XOR (IY),n
XOR (IX+d),n
XOR (IY+d),n
XOR (SP+d),n
XOR (HL+d),n
XOR (HL+C),n
XOR (+SP),n
XOR (PC+A),n 注
XOR rr,(x)
XOR rr,(vw)
XOR rr,(DE)
XOR rr,(HL)
XOR rr,(IX)
XOR rr,(IY)
XOR rr,(IX+d)
XOR rr,(IY+d)
XOR rr,(SP+d)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
0 1 0 0
1 1 1 1 0 0 r r
r 1 0 1
Z Z – – – – 5
r ←r^(PC+A)
8 ビットレジスタ r の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメ
モリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 0 1 1 0
0 1 0 1 Z Z – – – – 6
(x) ← (x)^n
n n n n
n n n n
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 7
(vw) ← (vw)^n
0 1 1 0
0 1 0 1 n n n n
n n n n
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 1 0 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 5
(DE) ← (DE)^n
レジスタペア DE で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を
前記のアドレスに入れます。
1 1 1 0
0 0 1 1 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 5
(HL) ← (HL)^n
レジスタペア HL で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を
前記のアドレスに入れます。
1 1 1 0
0 1 0 0 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 5
(IX) ← (IX)^n
インデックスレジスタ IX で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、
結果を前記のアドレスに入れます。
1 1 1 0
0 1 0 1 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 5
(IY) ← (IY)^n
インデックスレジスタ IY で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、
結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(IX+d) ← (IX+d)^n
n n n n
n n n n
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(IY+d) ← (IY+d)^n
n n n n
n n n n
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(SP+d) ← (SP+d)^n
n n n n
n n n n
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(HL+d) ← (HL+d)^n
n n n n
n n n n
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容と、
オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 1 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 7
(HL+C) ← (HL+C)^n
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコード中の
即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 1 1 0 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 6
SP ← SP+1:(SP) ← (SP)^n
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 n とで
ビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
0 1 0 0
1 1 1 1 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 7
(PC+A) ← (PC+A)^n
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクト
コード中の即値 n とでビットごとの排他的論理和を取り、結果を前記のアドレスに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 0 r r
r 1 0 1 Z Z – – – – 5
rr ← rr^(x)
16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトの
メモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z Z – – – – 6
rr ← rr^(vw)
1 0 r r
r 1 0 1
16 ビットレジスタ rr の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイト
のメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 0 1 0 r r
r 1 0 1
Z Z – – – – 4
rr ← rr^(DE)
16 ビットレジスタ rr の内容と、レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論
理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 0 1 1 1 0 r r
r 1 0 1
Z Z – – – – 4
rr ← rr^(HL)
16 ビットレジスタ rr の内容と、レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論
理和を取り、結果をレジスタ rr にいれます。
1 1 1 0
0 1 0 0 1 0 r r
r 1 0 1
Z Z – – – – 4
rr ← rr^(IX)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 0 1 1 0 r r
r 1 0 1
Z Z – – – – 4
rr ← rr^(IY)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの
排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 0 r r
r 1 0 1 Z Z – – – – 6
rr ← rr^(IX+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 0 r r
r 1 0 1 Z Z – – – – 6
rr ← rr^(IY+d)
16 ビットレジスタ rr の内容と、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した
値で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 0 r r
r 1 0 1 Z Z – – – – 6
rr ← rr^(SP+d)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で
指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
オブジェクトコード (2 進 )
Page 36
TLCS-870/C1
ニモニック
XOR rr,(HL+d)
XOR rr,(HL+C)
XOR rr,(+SP)
XOR rr,(PC+A) 注
INC r
INC rr
INC (x)
INC (vw)
INC (DE)
INC (HL)
INC (IX)
INC (IY)
INC (IX+d)
INC (IY+d)
INC (SP+d)
INC (HL+d)
INC (HL+C)
INC (+SP)
INC (PC+A) 注
DEC r
DEC rr
DEC (x)
DEC (vw)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 1 1 d d d d
d d d d 1 0 r r
r 1 0 1 Z Z – – – – 6
rr ← rr^(HL+d)
16 ビットレジスタ rr の内容と、レジスタペア HL にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定される
アドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 1 1 0 r r
r 1 0 1
Z Z – – – – 6
rr ← rr^(HL+C)
オブジェクトコード (2 進 )
16 ビットレジスタ rr の内容と、レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続
する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
1 1 1 0
0 1 1 0 1 0 r r
r 1 0 1
Z Z – – – – 5
SP ← SP+1:rr ← rr^(SP)
16 ビットレジスタ rr の内容と、スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイト
のメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタに入れます。
0 1 0 0
1 1 1 1 1 0 r r
r 1 0 1
Z Z – – – – 6
rr ← rr^(PC+A)
16 ビットレジスタ rr の内容と、プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスか
ら連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。
0 0 1 0
0 r r r
C Z – – – – 1
r ← r+1
8 ビットレジスタ r の内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセッ
トされます。キャリーフラグは変化しません。
例 : L = 0xFF のとき、INC L 命令を実行すると、L = 0x00, ZF = 1, JF = 1 となります。
0 0 1 1
0 r r r
C Z – – – – 2
rr ← rr+1
16 ビットレジスタ rr の内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセッ
トされます。
例 : HL = 0x1234 のとき、INC HL 命令を実行すると、HL = 0x1235, ZF = 0, JF = 0 となります。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
0 0 0 0 C Z – – – – 5
(x) ← (x)+1
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容をインクリメントします。オーバフローす
るとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z – – – – 6
(vw) ← (vw)+1
1 1 1 1
0 0 0 0
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容をインクリメントします。オーバフロー
するとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 1 0
0 0 1 0 1 1 1 1
0 0 0 0
C Z – – – – 4
(DE) ← (DE)+1
レジスタペア DE で指定されるアドレスのメモリ内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロ
フラグがともに “1” にセットされます。
1 1 1 0
0 0 1 1 1 1 1 1
0 0 0 0
C Z – – – – 4
(HL) ← (HL)+1
レジスタペア HL で指定されるアドレスのメモリ内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロ
フラグがともに “1” にセットされます。
1 1 1 0
0 1 0 0 1 1 1 1
0 0 0 0
C Z – – – – 4
(IX) ← (IX)+1
インデックスレジスタ IX で指定されるアドレスのメモリ内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ
, ゼロフラグがともに “1” にセットされます。
1 1 1 0
0 1 0 1 1 1 1 1
0 0 0 0
C Z – – – – 4
(IY) ← (IY)+1
インデックスレジスタ IY で指定されるアドレスのメモリ内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ
, ゼロフラグがともに “1” にセットされます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
0 0 0 0 C Z – – – – 6
(IX+d) ← (IX+d)+1
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
0 0 0 0 C Z – – – – 6
(IY+d) ← (IY+d)+1
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
0 0 0 0 C Z – – – – 6
(SP+d) ← (SP+d)+1
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
0 0 0 0 C Z – – – – 6
(HL+d) ← (HL+d)+1
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容をイ
ンクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 1 0
0 1 1 1 1 1 1 1
0 0 0 0
C Z – – – – 6
(HL+C) ← (HL+C)+1
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をインクリメントします。
オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
1 1 1 0
0 1 1 0 1 1 1 1
0 0 0 0
C Z – – – – 5
SP ← SP+1:(SP) ← (SP)+1
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスのメモリ内容をインクリメントします。メモリの内容が
オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
0 1 0 0
1 1 1 1 1 1 1 1
0 0 0 0
C Z – – – – 6
(PC+A) ← (PC+A)+1
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をインクリメントし
ます。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。
0 0 1 0
1 r r r
C Z – – – – 1
r ← r–1
8 ビットレジスタ r の内容をデクリメントします。アンダーフローする ( 結果が 0xFF となる ) とジャンプ ステータス フラグが “1” に
セットされます。キャリーフラグは変化しません。
例 : L = 0x00 のとき、DEC L 命令を実行すると、L = 0xFF, ZF = 0, JF = 1 となります。
0 0 1 1
1 r r r
C Z – – – – 2
rr ← rr–1
16 ビットレジスタ rr の内容をデクリメントします。アンダーフローする ( 結果が 0xFFFF となる ) とジャンプ ステータス フラグが “1”
にセットされます。
例 : HL = 0x8765 のとき、DEC HL 命令を実行すると、HL = 0x8764, ZF = 0, JF = 0 となります。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 0 0 0 C Z – – – – 5
(x) ← (x)–1
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) のメモリ内容をデクリメントします。アンダーフローす
るとジャンプ ステータス フラグが “1” にセットされます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C Z – – – – 6
(vw) ← (vw)–1
1 1 1 1
1 0 0 0
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) のメモリ内容をデクリメントします。アンダーフロー
するとジャンプ ステータス フラグが “1” にセットされます。
Page 37
2.2 演算
TLCS-870/C1
ニモニック
DEC (DE)
DEC (HL)
DEC (IX)
DEC (IY)
DEC (IX+d)
DEC (IY+d)
DEC (SP+d)
DEC (HL+d)
DEC (HL+C)
DEC (+SP)
DEC (PC+A) 注
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
0 0 1 0 1 1 1 1
1 0 0 0
C Z – – – – 4
(DE) ← (DE)–1
レジスタペア DE で指定されるアドレスのメモリ内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “1”
にセットされます。
1 1 1 0
0 0 1 1 1 1 1 1
1 0 0 0
C Z – – – – 4
(HL) ← (HL)–1
レジスタペア HL で指定されるアドレスのメモリ内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “1” に
セットされます。
1 1 1 0
0 1 0 0 1 1 1 1
1 0 0 0
C Z – – – – 4
(IX) ← (IX)–1
インデックスレジスタ IX で指定されるアドレスのメモリ内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグ
が “1” にセットされます。
1 1 1 0
0 1 0 1 1 1 1 1
1 0 0 0
C Z – – – – 4
(IY) ← (IY)–1
インデックスレジスタ IY で指定されるアドレスのメモリ内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグ
が “1” にセットされます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 0 0 0 C Z – – – – 6
(IX+d) ← (IX+d)–1
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 0 0 0 C Z – – – – 6
(IY+d) ← (IY+d)–1
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ
内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 0 0 0 C Z – – – – 6
(SP+d) ← (SP+d)–1
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容
をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 0 0 0 C Z – – – – 6
(HL+d) ← (HL+d)–1
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容をデ
クリメントします。アンダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 1 0
0 1 1 1 1 1 1 1
1 0 0 0
C Z – – – – 6
(HL+C) ← (HL+C)–1
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をデクリメントします。アン
ダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 1 0
0 1 1 0 1 1 1 1
1 0 0 0
C Z – – – – 5
SP ← SP+1:(SP) ← (SP)–1
スタックポインタ SP の内容をデクリメントし、その値で指定されるアドレスの内容をデクリメントします。アンダーフローするとジャ
ンプ ステータス フラグが “1” にセットされます。
0 1 0 0
1 1 1 1 1 1 1 1
1 0 0 0
C Z – – – – 6
(PC+A) ← (PC+A)–1
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をデクリメントしま
す。アンダーフローするとジャンプ ステータス フラグが “1” にセットされます。
1 1 1 0
1 g g g 1 1 0 1
1 0 1 0
C Z C H – – 2
Decimal adjustment against g
(after addition)
8 ビットのパックド BCD データの加算の際、加算命令 (ADD/ADDC) 実行後のレジスタ g の内容を十進補正します。
多桁の BCD データの加算を行う場合は、8 ビット単位で下位桁から加算、補正を繰り返します。
オブジェクトコード (2 進 )
g
g
4
DAA g
4
0
0~9
0
0~9
00
0
0
0~8
0
A~F
06
0
0
0~9
1
0~3
06
0
0
A~F
0
0~9
60
1
0
9~F
0
A~F
66
1
0
A~F
1
0~3
66
1
1
0~2
0
0~9
60
1
1
0~2
0
A~F
66
1
1
0~3
1
0~3
66
1
例 : A = 0x26, B = 0x57 のとき、ADD A, B 命令を実行すると、A = 0x7D, CF = 0, HF = 0 となり、この状態で、DAA A 命令を実行する
と、A = 0x83, CF = 0 となります。
1 1 1 0
1 g g g 1 1 0 1
1 0 1 1
C Z C H – – 2
Decimal adjustment against g
(after subtraction)
8 ビットのパックド BCD データの減算の際、減算命令 (SUB/SUBB) 実行後のレジスタ g の内容を十進補正します。
多桁の BCD データの加算を行う場合は、8 ビット単位で下位桁から加算、補正を繰り返します。
g
g
4
DAS g
4
0
0~9
0
0~9
00
0
0~8
1
6~F
FA
0
0
1
7~F
0
0~9
A0
1
1
6~F
1
6~F
9A
1
例 : A = 0x87, B = 0x39 のとき、SUB A, B 命令を実行すると、A = 0x4E, CF = 0, HF = 1 となり、この状態で、DAS A 命令を実行すると、
A = 0x48, CF = 0 となります。
RA001
Page 38
TLCS-870/C1
ニモニック
MUL W,A
MUL B,C
MUL D,E
MUL H,L
DIV WA,C
DIV DE,C
DIV HL,C
NEG CS,gg
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
1 0 0 0 1 1 1 1
0 0 1 0
Z Z – – – – 13
WA ← W×A
W レジスタの内容 ( 符号なし整数 ) に A レジスタの内容 ( 符号なし整数 ) を掛け、結果をレジスタペア WA に入れます。ゼロフラグは、
結果の上位 8 ビット (W レジスタに格納される値 ) が 0x00 のとき “1” にセットされ、0x00 以外のとき “0” にクリアされます。
例 1: W = 0x87, A = 0xF2 のとき、この命令を実行すると、WA = 0x7F9E, ZF = 0 となります。
例 2: W = 0x16, A = 0x05 のとき、この命令を実行すると、WA = 0x006E, ZF = 1 となります。
1 1 1 0
1 0 0 1 1 1 1 1
0 0 1 0
Z Z – – – – 13
BC ← B×C
B レジスタの内容 ( 符号なし整数 ) に C レジスタの内容 ( 符号なし整数 ) を掛け、結果をレジスタペア BC に入れます。結果の上位 8
ビット (B レジスタに格納される値 ) が 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
1 0 1 0 1 1 1 1
0 0 1 0
Z Z – – – – 13
DE ← D×E
D レジスタの内容 ( 符号なし整数 ) に E レジスタの内容 ( 符号なし整数 ) を掛け、結果をレジスタペア DE に入れます。結果の上位 8
ビット (D レジスタに格納される値 ) が 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
1 0 1 1 1 1 1 1
0 0 1 0
Z Z – – – – 13
HL ← H×L
H レジスタの内容 ( 符号なし整数 ) に L レジスタの内容 ( 符号なし整数 ) を掛け、結果をレジスタペア HL に入れます。結果の上位 8
ビット (H レジスタに格納される値 ) が 0x00 のとき、ゼロフラグが “1” にセットされます。
1 1 1 0
1 0 0 0 1 1 1 1
0 0 1 1
Z Z C – – – 13
A ← WA÷C, W ← 余り
レジスタペア WA の内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商を A レジスタに、余りを W レジスタにそれ
ぞれ入れます。除数 (C レジスタの内容 ) が 0x00 のとき、または商が 0x100 以上のときキャリーフラグは “1” にセットされ ( この場合、
A レジスタおよび W レジスタの内容は不定になります ) 、それ以外のときキャリーフラグは “0” にクリアされます。また、ゼロフラグは、
余りが 0x00 のとき “1” にセットされ、0x00 以外のとき “0” にクリアされます。なお、C レジスタの内容は変化しません。
例 1: WA = 0x1234, C = 0x56 のとき、この命令を実行すると、
A = 0x36, W = 0x10, CF = 0, ZF = 0 となります。
例 2: WA = 0x4830, C = 0x9A のとき、この命令を実行すると、
A = 0x78, W = 0x00, CF = 0, ZF = 1 となります。
例 3: WA = 0x3210, C = 0x27 のとき、この命令を実行すると、
A = 0x48, W = 0x18, CF = 1, ZF = 0 となります。
1 1 1 0
1 0 1 0 1 1 1 1
0 0 1 1
Z Z C – – – 13
E ← DE÷C, D ← 余り
レジスタペア DE の内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商の下位 8 ビットを E レジスタに、余りを D レ
ジスタにそれぞれ入れます。除数 (C レジスタの内容 ) が 0x00 のとき、または商が 0x100 以上のとき、キャリーフラグが “1” にセットさ
れます ( この場合、レジスタペア DE の内容は不定になります ) 。また、余りが 0x00 のとき、ゼロフラグが “1” にセットされます。な
お、C レジスタの内容は変化しません。
1 1 1 0
1 0 1 1 1 1 1 1
0 0 1 1
Z Z C – – – 13
L ← HL÷C, H ← 余り
レジスタペア HL の内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商の下位 8 ビットを L レジスタに、余りを H レ
ジスタにそれぞれ入れます。除数 (C レジスタの内容 ) が 0x00 のとき、または商が 0x100 以上のとき、キャリーフラグが “1” にセットさ
れます ( この場合、レジスタペア HL の内容は不定になります ) 。また、余りが 0x00 のとき、ゼロフラグが “1” にセットされます。な
お、C レジスタの内容は変化しません。
1 1 1 0
1 g g g 1 1 1 1
1 0 1 0
1 – – – – – 3
if CF=1 then gg ← 0–gg else null
キャリーフラグが “1” のとき、16 ビットレジスタ gg の 2 の補数を取りレジスタ gg に格納し、ジャンプステータスフラグを “1” にセッ
トします。
キャリーフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります ( この場合、レジスタ gg の内容
は変化しません )。
例 1: HL = 0x5678, CF = 1 のとき、NEG CS, HL 命令を実行すると、HL = 0xA988, CF = 1 となります。
例 2: DE = 0x89AB, CF = 0 のとき、NEG CS, DE 命令を実行すると、DE = 0x89AB, CF = 0 となります。
オブジェクトコード (2 進 )
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参照
してください。
RA001
Page 39
2.2 演算
TLCS-870/C1
RA001
Page 40
TLCS-870/C1
2.3 シフト、ローテート、ニブル処理
1 1 1 0
SHLC g
C Z * – – – 2
7654321 0
CF
0
1 g g g 1 1 1 1
0 1 0 1
C Z * – – – 2
7654321 0
0
CF
1 g g g 1 1 1 1
0 1 1 0
C Z * – – – 2
CF
7654321 0
8 ビットレジスタ g とキャリーフラグの内容を左へ 1 ビットずつローテーションします。ローテーション後のレジスタ g の内容が 0x00
のとき、ゼロフラグが “1” にセットされます。
例 1: A = 0y10010110, CF = 0 のとき、この命令を実行すると、A = 0y00101100, CF = 1, JF = 1, ZF = 0 となります。
例 2: A = 0y10000000, CF = 0 のとき、この命令を実行すると、A = 0y00000000, CF = 1, JF = 1, ZF = 1 となります。
1 1 1 0
RORC g
0 1 0 0
8 ビットレジスタ g の内容を右へ 1 ビットずつ論理シフトします ( レジスタ g の最上位ビットには “0” が入ります。キャリーフラグに
は、レジスタ g の最下位ビットの内容が入ります ) 。シフト後のレジスタ g の内容が 0x00 のとき、ゼロフラグが “1” にセットされま
す。
例 : A = 0y01011101, CF = 0 のとき、この命令を実行すると、A = 0y00101110, CF = 1, ZF = 0 となります。
1 1 1 0
ROLC g
1 g g g 1 1 1 1
オペレーション
8 ビットレジスタ g の内容を左へ 1 ビットずつ論理シフトします ( レジスタ g の最下位ビットには “0” が入ります。キャリーフラグに
は、レジスタ g の最上位ビットの内容が入ります ) 。シフト後のレジスタ g の内容が 0x00 のとき、ゼロフラグが “1” にセットされま
す。
例 : A = 0y00111011, CF = 1 のとき、この命令を実行すると、A = 0y01110110, CF = 0, ZF = 0 となります。
1 1 1 0
SHRC g
フラグ
サイ
J Z C H S V クル
オブジェクトコード (2 進 )
ニモニック
1 g g g 1 1 1 1
0 1 1 1
C Z * – – – 2
7654321 0
CF
8 ビットレジスタ g とキャリーフラグの内容を右へ 1 ビットずつローテーションします。ローテーション後のレジスタ g の内容が 0x00
のとき、ゼロフラグが “1” にセットされます。
例 : A = 0y01101101, CF = 1 のとき、この命令を実行すると、A = 0y10110110, CF = 1, ZF = 0 となります。
1 1 1 0
1 g g g 1 1 1 1
0 0 0 0
gg
C Z * – S V 3
0
CF
SHLCA gg
16 ビットレジスタ gg の内容を左へ 1 ビットずつ算術シフトします ( レジスタの最下位ビットには “0” が入ります。キャリーフラグに
は、レジスタ gg の最上位ビットの内容が入ります )。シフト後のレジスタ gg の内容が 0x0000 のとき、ゼロフラグが “1” にセットされ
ます。レジスタ gg の最上位ビットの内容がシフトで変化するとオーバフローフラグが “1” にセットされます。
例 : HL = 0x3456, CF = 1 のとき、SHLCA HL 命令を実行すると、HL = 0x68AC, CF = 0, JF = 0, ZF = 0, SF = 0, VF = 0 となります。
1 1 1 0
1 g g g 1 1 1 1
0 0 0 1
gg
C Z * – S 0 3
CF
SHRCA gg
16 ビットレジスタ gg の内容を右へ 1 ビットずつ算術シフトします ( レジスタの最上位ビットには “0” は変化しません。キャリーフラ
グには、レジスタ gg の最下位ビットの内容が入ります )。シフト後のレジスタ gg の内容が 0x0000 のとき、ゼロフラグが “1” にセット
されます。
例 : DE = 0x89AB, CF = 0 のとき、SHRCA DE 命令を実行すると、DE = 0xC4D5, CF = 1, JF = 0, ZF = 0, SF = 1, VF = 0 となります。
1 1 1 0
1 g g g 1 1 1 1
1 1 1 1
7654321 0
1 – – – – – 7
SWAP g
(
4
4
)
8 ビットレジスタ g の上位 4 ビットと下位 4 ビットの内容を交換します。
例 : A = 0x25 のとき、この命令を実行すると、A = 0x52 となります。
A
1 1 1 0
ROLD A,(x)
ROLD A,(vw)
0 0 0 0 x x x x
x x x x 1 1 1 1
0 1 1 0 1 – – – – – 9
(x)
7654321 0
7654321 0
(4
)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の内容と、A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
例 : A レジスタが 0x12, 0x0087 番地の内容が 0x56 のとき、ROLD A, (0x87) 命令を実行すると、
A レジスタが 0x15, 0x0087 番地の内容が 0x62 となります。
1 1 1 0
1 1 1 1
0 0 0 1 w w w w
0 1 1 0
w w w w v v v v
v v v v 1 – – – – – 10
A
(vw)
7654321 0
7654321 0
(4
)
オブジェクトコード中の vw で直接指定されるアドレスの (0x0000 ~ 0xFFFF 番地 ) 内容と、A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 0 1 0 1 1 1 1
0 1 1 0
1 – – – – – 8
(DE)
7654321 0
7654321 0
ROLD A,(DE)
(4
)
レジスタペア DE で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位に
ローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 0 1 1 1 1 1 1
0 1 1 0
1 – – – – – 8
(HL)
7654321 0
7654321 0
ROLD A,(HL)
(4
)
レジスタペア HL で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位に
ローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
RA001
Page 41
2.3 シフト、ローテート、ニブル処理
TLCS-870/C1
フラグ
サイ
J Z C H S V クル
オブジェクトコード (2 進 )
ニモニック
オペレーション
A
1 1 1 0
0 1 0 0 1 1 1 1
0 1 1 0
1 – – – – – 8
(IX)
7654321 0
7654321 0
ROLD A,(IX)
(4
)
インデックスレジスタ IX で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビッ
ト単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 1 0 1 1 1 1 1
0 1 1 0
1 – – – – – 8
(IY)
7654321 0
7654321 0
ROLD A,(IY)
(4
)
インデックスレジスタ IY で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビッ
ト単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
0 1 1 0 1 – – – – – 10
(IX + d)
7654321 0
ROLD A,(IX+d)
7654321 0
(4
)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容
と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上
位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
0 1 1 0 1 – – – – – 10
(IY + d)
7654321 0
ROLD A,(IY+d)
7654321 0
(4
)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容
と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上
位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
0 1 1 0 1 – – – – – 10
(SP + d)
7654321 0
ROLD A,(SP+d)
7654321 0
(4
)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、
A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4
ビットの内容は変化しません。
A
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
0 1 1 0 1 – – – – – 10
(HL + d)
7654321 0
ROLD A,(HL+d)
7654321 0
(4
)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、A レ
ジスタの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4
ビットの内容は変化しません。
A
1 1 1 0
0 1 1 1 1 1 1 1
0 1 1 0
1 – – – – – 10
(HL + C)
7654321 0
ROLD A,(HL+C)
7654321 0
(4
)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、A レジスタの下位 4 ビットの
内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しませ
ん。
A
1 1 1 0
0 1 1 0 1 1 1 1
0 1 1 0
1 – – – – – 9
(+SP)
7654321 0
7654321 0
ROLD A,(+SP)
(4
)
スタックポインタ SP をインクリメントし、その値で指定されるアドレスのメモリ内容と A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
0 1 0 0
1 1 1 1 1 1 1 1
0 1 1 0
1 – – – – – 10
(PC + A)
7654321 0
ROLD A,(PC+A) 注
7654321 0
(4
)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、A レジスタの下位 4
ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変
化しません。
A
1 1 1 0
RORD A,(x)
RA001
0 0 0 0 x x x x
x x x x 1 1 1 1
0 1 1 1 1 – – – – – 9
(x)
7654321 0
(4
7654321 0
)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の内容と、A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
例 :A レジスタが 0x12, 0x0087 番地の内容が 0x56 のとき、RORD A, (0x87) 命令を実行すると、
A レジスタが 0x16, 0x0087 番地の内容が 0x25 となります。
Page 42
TLCS-870/C1
RORD A,(vw)
フラグ
サイ
J Z C H S V クル
オブジェクトコード (2 進 )
ニモニック
1 1 1 0
1 1 1 1
0 0 0 1 w w w w
0 1 1 1
w w w w
v v v
v v v v 1 – – – – – 10
オペレーション
A
(vw)
7654321 0
7654321 0
(4
)
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の内容と、A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 0 1 0 1 1 1 1
0 1 1 1
1 – – – – – 8
(DE)
7654321 0
7654321 0
RORD A,(DE)
(4
)
レジスタペア DE で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位に
ローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 0 1 1 1 1 1 1
0 1 1 1
1 – – – – – 8
(HL)
7654321 0
7654321 0
RORD A,(HL)
(4
)
レジスタペア HL で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位に
ローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 1 0 0 1 1 1 1
0 1 1 1
1 – – – – – 8
(IX)
7654321 0
7654321 0
RORD A,(IX)
(4
)
インデックスレジスタ IX で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビッ
ト単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 1 0
0 1 0 1 1 1 1 1
0 1 1 1
1 – – – – – 8
(IY)
7654321 0
7654321 0
RORD A,(IY)
(4
)
インデックスレジスタ IY で指定されるアドレスの内容と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビッ
ト単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
0 1 1 1 1 – – – – – 10
(IX + d)
7654321 0
RORD A,(IX+d)
7654321 0
(4
)
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容
と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上
位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
0 1 1 1 1 – – – – – 10
(IY + d)
7654321 0
RORD A,(IY+d)
7654321 0
(4
)
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容
と、A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上
位 4 ビットの内容は変化しません。
A
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
0 1 1 1 1 – – – – – 10
(SP + d)
7654321 0
RORD A,(SP+d)
7654321 0
(4
)
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、
A レジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4
ビットの内容は変化しません。
A
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
0 1 1 1 1 – – – – – 10
(HL + d)
7654321 0
RORD A,(HL+d)
7654321 0
(4
)
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、A レ
ジスタの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4
ビットの内容は変化しません。
A
1 1 1 0
0 1 1 1 1 1 1 1
0 1 1 1
1 – – – – – 10
(HL + C)
7654321 0
RORD A,(HL+C)
7654321 0
(4
)
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、A レジスタの下位 4 ビットの
内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しませ
ん。
A
1 1 1 0
0 1 1 0 1 1 1 1
0 1 1 1
1 – – – – – 9
(+SP)
7654321 0
7654321 0
RORD A,(+SP)
(4
)
スタックポイントをインクリメントし、その値で指定されるアドレスのメモリの内容と、A レジスタの下位 4 ビットの内容を連結し
た 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変化しません。
RA001
Page 43
2.3 シフト、ローテート、ニブル処理
TLCS-870/C1
フラグ
サイ
J Z C H S V クル
オブジェクトコード (2 進 )
ニモニック
オペレーション
A
0 1 0 0
1 1 1 1 1 1 1 1
0 1 1 1
1 – – – – – 10
RORD A,(PC+A) 注
(PC + A)
7654321 0
(4
7654321 0
)
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、A レジスタの下位 4
ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、A レジスタの上位 4 ビットの内容は変
化しません。
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 44
TLCS-870/C1
2.4 ビット操作、フラグ操作
1 1 1 0
SET g.b
SET (vw).b
1 g g g 1 1 0 0
0 b b b
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” に
セットします。
例 : A = 0x3C のとき、SET A.7 命令を実行すると、ZF = 1, A = 0xBC となります。
1 1 0 0
SET (x).b
フラグ
サイクル
オペレーション
J Z C H S V
Z * – – – – 3
ZF ← g.b:g.b ← 1
オブジェクトコード (2 進 )
ニモニック
0 b b b x x x x
x x x x
Z * – – – – 4
ZF ← (x).b:(x).b ← 1
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).b:(vw).b ← 1
1 1 0 0
0 b b b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 0 1 0 1 1 0 0
0 b b b
Z * – – – – 4
ZF ← (DE).b:(DE).b ← 1
SET (DE).b
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “1” にセットします。
1 1 1 0
0 0 1 1 1 1 0 0
0 b b b
Z * – – – – 4
ZF ← (HL).b:(HL).b ← 1
SET (HL).b
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “1” にセットします。
1 1 1 0
0 1 0 0 1 1 0 0
0 b b b
Z * – – – – 4
ZF ← (IX).b:(IX).b ← 1
SET (IX).b
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “1” にセットします。
1 1 1 0
0 1 0 1 1 1 0 0
0 b b b
Z * – – – – 4
ZF ← (IY).b:(IY).b ← 1
SET (IY).b
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “1” にセットします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 0 0
0 b b b Z * – – – – 6
ZF ← (IX+d).b:(IX+d).b ← 1
SET (IX+d).b
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 0 0
0 b b b Z * – – – – 6
ZF ← (IY+d).b:(IY+d).b ← 1
SET (IY+d).b
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 0 0
0 b b b Z * – – – – 6
ZF ← (SP+d).b:(SP+d).b ← 1
SET (SP+d).b
スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 0 0
0 b b b Z * – – – – 6
ZF ← (HL+d).b:(HL+d).b ← 1
SET (HL+d).b
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 1 1 1 1 1 0 0
0 b b b
Z * – – – – 6
ZF ← (HL+C).b:(HL+C).b ← 1
SET (HL+C).b
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 1 1 0 1 1 0 0
0 b b b
Z * – – – – 5
SP ← SP+1:ZF ← (SP).b:(SP).b ← 1
SET (+SP).b
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
0 1 0 0
1 1 1 1 1 1 0 0
0 b b b
Z * – – – – 6
ZF ← (PC+A).b:(PC+A).b ← 1
SET (PC+A).b 注
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を“1”にセットします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
0 0 1 0 Z * – – – – 5
ZF ← (x).A:(x).A ← 1
SET (x).A
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).A:(vw).A ← 1
1 1 1 1
0 0 1 0
SET (vw).A
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 0 1 0 1 1 1 1
0 0 1 0
Z * – – – – 4
ZF ← (DE).A:(DE).A ← 1
SET (DE).A
レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの反転値をゼロフラグに入れた後、そのビットの
内容を “1” にセットします。
1 1 1 0
0 0 1 1 1 1 1 1
0 0 1 0
Z * – – – – 4
ZF ← (HL).A:(HL).A ← 1
SET (HL).A
レジスタペア HL で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの反転値をゼロフラグに入れた後、そのビットの
内容を “1” にセットします。
1 1 1 0
0 1 0 0 1 1 1 1
0 0 1 0
Z * – – – – 4
ZF ← (IX).A:(IX).A ← 1
SET (IX).A
インデックスレジスタ IX で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの反転値をゼロフラグに入れた後、その
ビットの内容を “1” にセットします。
1 1 1 0
0 1 0 1 1 1 1 1
0 0 1 0
Z * – – – – 4
ZF ← (IY).A:(IY).A ← 1
SET (IY).A
インデックスレジスタ IY で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの反転値をゼロフラグに入れた後、その
ビットの内容を “1” にセットします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
0 0 1 0 Z * – – – – 6
ZF ← (IX+d).A:(IX+d).A ← 1
SET (IX+d).A
インデックスレジスタ IX レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレス
の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
RA001
Page 45
2.4 ビット操作、フラグ操作
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
フラグ
サイクル
オペレーション
J Z C H S V
0 0 1 0 Z * – – – – 6
ZF ← (IY+d).A:(IY+d).A ← 1
SET (IY+d).A
インデックスレジスタ IY レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレス
の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
0 0 1 0 Z * – – – – 6
ZF ← (SP+d).A:(SP+d).A ← 1
SET (SP+d).A
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
0 0 1 0 Z * – – – – 6
ZF ← (HL+d).A:(HL+d).A ← 1
SET (HL+d).A
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 1 1 1 1 1 1 1
0 0 1 0
Z * – – – – 6
ZF ← (HL+C).A:(HL+C).A ← 1
SET (HL+C).A
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
1 1 1 0
0 1 1 0 1 1 1 1
0 0 1 0
Z * – – – – 5
SP ← SP+1:ZF ← (SP).A:(SP).A ← 1
SET (+SP).A
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの A レジスタの下位 3 ビットで指定されるビット内容の反
転値をゼロフラグに入れた後、そのビットの内容を “1” にセットします。
0 1 0 0
1 1 1 1 1 1 1 1
0 0 1 0
Z * – – – – 6
ZF ← (PC+A).A:(PC+A).A ← 1
SET (PC+A).A 注
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ
れるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を“1”にセットします。
1 1 1 0
1 g g g 1 1 0 0
1 b b b
Z * – – – – 3
ZF ← g.b:g.b ← 0
CLR g.b
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” に
クリアします。
例 : A = 0x3C のとき、CLR A.2 命令を実行すると、ZF = 0, A = 0x38 となります。
1 1 0 0
CLR (x).b
CLR (vw).b
1 b b b x x x x
x x x x
Z * – – – – 4
ZF ← (x).b:(x).b ← 0
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).b:(vw).b ← 0
1 1 0 0
1 b b b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 0 1 0 1 1 0 0
1 b b b
Z * – – – – 4
ZF ← (DE).b:(DE).b ← 0
CLR (DE).b
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “0” にクリアします。
1 1 1 0
0 0 1 1 1 1 0 0
1 b b b
Z * – – – – 4
ZF ← (HL).b:(HL).b ← 0
CLR (HL).b
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “0” にクリアします。
1 1 1 0
0 1 0 0 1 1 0 0
1 b b b
Z * – – – – 4
ZF ← (IX).b:(IX).b ← 0
CLR (IX).b
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 0 1 1 1 0 0
1 b b b
Z * – – – – 4
ZF ← (IY).b:(IY).b ← 0
CLR (IY).b
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 0 0
1 b b b Z * – – – – 6
ZF ← (IX+d).b:(IX+d).b ← 0
CLR (IX+d).b
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 0 0
1 b b b Z * – – – – 6
ZF ← (IY+d).b:(IY+d).b ← 0
CLR (IY+d).b
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 0 0
1 b b b Z * – – – – 6
ZF ← (SP+d).b:(SP+d).b ← 0
CLR (SP+d).b
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 0 0
1 b b b Z * – – – – 6
ZF ← (HL+d).b:(HL+d).b ← 0
CLR (HL+d).b
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 1 1 1 1 0 0
1 b b b
Z * – – – – 6
ZF ← (HL+C).b:(HL+C).b ← 0
CLR (HL+C).b
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 1 0 1 1 0 0
1 b b b
Z * – – – – 5
SP ← SP+1:ZF ← (SP).b:(SP).b ← 0
CLR (+SP).b
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
0 1 0 0
1 1 1 1 1 1 0 0
1 b b b
Z * – – – – 6
ZF ← (PC+A).b:(PC+A).b ← 0
CLR (PC+A).b 注
プログラムカウンタ PC の内容に、A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 0 1 0 Z * – – – – 5
ZF ← (x).A:(x).A ← 0
CLR (x).A
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).A:(vw).A ← 0
1 1 1 1
1 0 1 0
CLR (vw).A
RA001
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
Page 46
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
Z * – – – – 4
ZF ← (DE).A:(DE).A ← 0
オブジェクトコード (2 進 )
ニモニック
1 1 1 0
0 0 1 0 1 1 1 1
1 0 1 0
CLR (DE).A
レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “0” にクリアします。
1 1 1 0
0 0 1 1 1 1 1 1
1 0 1 0
Z * – – – – 4
ZF ← (HL).A:(HL).A ← 0
CLR (HL).A
レジスタペア HL で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を “0” にクリアします。
1 1 1 0
0 1 0 0 1 1 1 1
1 0 1 0
Z * – – – – 4
ZF ← (IX).A:(IX).A ← 0
CLR (IX).A
インデックスレジスタ IX で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 0 1 1 1 1 1
1 0 1 0
Z * – – – – 4
ZF ← (IY).A:(IY).A ← 0
CLR (IY).A
インデックスレジスタ IY で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 0 1 0 Z * – – – – 6
ZF ← (IX+d).A:(IX+d).A ← 0
CLR (IX+d).A
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 0 1 0 Z * – – – – 6
ZF ← (IY+d).A:(IY+d).A ← 0
CLR (IY+d).A
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 0 1 0 Z * – – – – 6
ZF ← (SP+d).A:(SP+d).A ← 0
CLR (SP+d).A
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 0 1 0 Z * – – – – 6
ZF ← (HL+d).A:(HL+d).A ← 0
CLR (HL+d).A
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 1 1 1 1 1 1
1 0 1 0
Z * – – – – 6
ZF ← (HL+C).A:(HL+C).A ← 0
CLR (HL+C).A
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
1 1 1 0
0 1 1 0 1 1 1 1
1 0 1 0
Z * – – – – 5
SP ← SP+1:ZF ← (SP).A:(SP).A ← 0
CLR (+SP).A
SP レジスタペアの内容をインクリメントし、その値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転
値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
0 1 0 0
1 1 1 1 1 1 1 1
1 0 1 0
Z * – – – – 6
ZF ← (PC+A).A:(PC+A).A ← 0
CLR (PC+A).A 注
プログラムカウンタ PC の内容に、A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定
されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。
CF ← g.b
1 1 1 0
1 g g g 0 1 0 1
1 b b b
C – * – – – 2
LD CF,g.b
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容をキャリーフラグに入れます。
例 : A = 0y01101101 のとき、LD CF, A.4 命令を実行すると、CF = 0, JF = 1 となります。
0 1 0 1
1 b b b x x x x
x x x x
CF ← (x).b
C – * – – – 3
LD CF,(x).b
オブジェクトコード中の x で直接 指定されるアドレス (0x0000 ~ 0x0FF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容を
キャリーフラグにロードします。
CF ← (vw).b
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C – * – – – 5
0 1 0 1
1 b b b
LD CF,(vw).b
LD CF,(DE).b
LD CF,(HL).b
LD CF,(IX).b
LD CF,(IY).b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容
をキャリーフラグにロードします。
1 1 1 0
0 0 1 0 0 1 0 1
1 b b b
CF ← (DE).b
C – * – – – 3
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 0 1 1 0 1 0 1
1 b b b
CF ← (HL).b
C – * – – – 3
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 1 0 0 0 1 0 1
1 b b b
CF ← (IX).b
C – * – – – 3
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 1 0 1 0 1 0 1
1 b b b
CF ← (IY).b
C – * – – – 3
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
CF ← (IX+d).b
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 1
1 b b b C – * – – – 5
LD CF,(IX+d).b
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
CF ← (IY+d).b
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 1
1 b b b C – * – – – 5
LD CF,(IY+d).b
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容をキャリーフラグにロードします。
CF ← (SP+d).b
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 1
1 b b b C – * – – – 5
LD CF,(SP+d).b
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容をキャリーフラグにロードします。
CF ← (HL+d).b
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 0 1
1 b b b C – * – – – 5
LD CF,(HL+d).b
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容をキャリーフラグにロードします。
CF ← (HL+C).b
1 1 1 0
0 1 1 1 0 1 0 1
1 b b b
C – * – – – 5
LD CF,(HL+C).b
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの内容をキャリーフラグにロードします。
SP ← SP+1:CF ← (SP).b
1 1 1 0
0 1 1 0 0 1 0 1
1 b b b
C – * – – – 4
LD CF,(+SP).b
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容を
キャリーフラグにロードします。
RA001
Page 47
2.4 ビット操作、フラグ操作
TLCS-870/C1
フラグ
サイクル
J Z C H S V
オブジェクトコード (2 進 )
ニモニック
0 1 0 0
1 1 1 1 0 1 0 1
1 b b b
C – * – – – 5
オペレーション
CF ← (PC+A).b
LD CF,(PC+A).b 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 1 0 0 C – * – – – 4
CF ← (x).A
LD CF,(x).A
オブジェクトコード中の x で直接 指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容を
LD CF,(vw).A
LD CF,(DE).A
LD CF,(HL).A
LD CF,(IX).A
LD CF,(IY).A
キャリーフラグにロードします。
1 1 1 0
0 0 0 1 w w w w
1 1 1 1
1 1 0 0
w w w w v v v v
v v v v C – * – – – 5
CF ← (vw).A
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容
をキャリーフラグにロードします。
CF ← (DE).A
1 1 1 0
0 0 1 0 1 1 1 1
1 1 0 0
C – * – – – 3
レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 0 1 1 1 1 1 1
1 1 0 0
C – * – – – 3
CF ← (HL).A
レジスタペア HL で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 1 0 0 1 1 1 1
1 1 0 0
C – * – – – 3
CF ← (IX).A
インデックスレジスタ IX で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 1 0
0 1 0 1 1 1 1 1
1 1 0 0
C – * – – – 3
CF ← (IY).A
インデックスレジスタ IY で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 1 0 0 C – * – – – 5
CF ← (IX+d).A
LD CF,(IX+d).A
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 1 0 0 C – * – – – 5
CF ← (IY+d).A
LD CF,(IY+d).A
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 1 0 0 C – * – – – 5
CF ← (SP+d).A
LD CF,(SP+d).A
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。
LD CF,(HL+d).A
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットの内容をキャリーフラグにロードします。
LD CF,(HL+C).A
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットの内容をキャリーフラグにロードします。
1 1 1 0
0 1 1 0 1 1 1 1
1 1 0 0
SP ← SP+1:CF ← (SP).A
C – * – – – 4
LD CF,(+SP).A
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容を
キャリーフラグにロードします。
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 0
CF ← (PC+A).A
C – * – – – 5
1 1 0 1
1 1 1 0
0 1 1 1 d d d d
0 1 1 1 1 1 1 1
d d d d 1 1 1 1
1 1 0 0 C – * – – – 5
1 1 0 0
C – * – – – 5
CF ← (HL+d).A
CF ← (HL+C).A
LD CF,(PC+A).A 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ
れるビットの内容をキャリーフラグにロードします。
1 1 1 0
1 g g g 0 1 0 1
1 b b b
* – J – – – 2
JF ← g.b
TEST g.b#1
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
例 : A = 0y01011100 のとき、TEST A. 5 命令を実行すると、JF = 1, CF = 0 となります。
TEST (x).b#1
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容の
反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v * – J – – – 5
JF ← (vw).b
0 1 0 1
1 b b b
0 1 0 1
TEST (vw).b#1
1 b b b x x x x
x x x x
* – J – – – 3
JF ← (x).b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の内容の、オブジェクトコード中の b で指定されるビット
の内容の反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 0 1 0 0 1 0 1
1 b b b
* – J – – – 3
JF ← (DE).b
TEST (DE).b#1
レジスタペア DE で指定されるアドレスの内容の、オブジェクトコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フ
ラグに入れます。
1 1 1 0
0 0 1 1 0 1 0 1
1 b b b
* – J – – – 3
JF ← (HL).b
TEST (HL).b#1
レジスタペア HL で指定されるアドレスの内容の、オブジェクトコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フ
ラグに入れます。
1 1 1 0
0 1 0 0 0 1 0 1
1 b b b
* – J – – – 3
JF ← (IX).b
TEST (IX).b#1
インデックスレジスタ IX で指定されるアドレスの内容の、オブジェクトコード中の b で指定されるビットの内容の反転値をジャンプ ステー
タス フラグに入れます。
1 1 1 0
0 1 0 1 0 1 0 1
1 b b b
* – J – – – 3
JF ← (IY).b
TEST (IY).b#1
インデックスレジスタ IY で指定されるアドレスの内容の、オブジェクトコード中の b で指定されるビットの内容の反転値をジャンプ ステー
タス フラグに入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 1
1 b b b * – J – – – 5
JF ← (IX+d).b
TEST (IX+d).b#1
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 1
1 b b b * – J – – – 5
JF ← (IY+d).b
TEST (IY+d).b#1
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
RA001
Page 48
TLCS-870/C1
フラグ
サイクル
J Z C H S V
オブジェクトコード (2 進 )
ニモニック
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 1
1 b b b * – J – – – 5
オペレーション
JF ← (SP+d).b
TEST (SP+d).b#1
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
TEST (HL+d).b#1
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 0 1
1 1 1 0
0 1 1 1 d d d d
0 1 1 1 0 1 0 1
d d d d 0 1 0 1
1 b b b * – J – – – 5
1 b b b
* – J – – – 5
JF ← (HL+d).b
JF ← (HL+C).b
TEST (HL+C).b#1 レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 1 1 0 0 1 0 1
1 b b b
* – J – – – 4
SP ← SP+1:JF ← (SP).b
TEST (+SP).b#1
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の
反転値をジャンプ ステータス フラグに入れます。
0 1 0 0
1 1 1 1 0 1 0 1
1 b b b
* – J – – – 5
JF ← (PC+A).b
TEST (PC+A).b#1 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 1 0 0 * – J – – – 4
TEST (x).A#1
TEST
(vw).A#1
JF ← (x).A
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の
反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
1 1 1 1
0 0 0 1 w w w w
1 1 0 0
w w w w v v v v
v v v v * – J – – – 5
JF ← (vw).A
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の内容の、A レジスタの下位 3 ビットで指定されるビット
の内容の反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 0 1 0 1 1 1 1
1 1 0 0
* – J – – – 3
JF ← (DE).A
TEST (DE).A#1
レジスタペア DE で指定されるアドレスの内容の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フ
ラグに入れます。
1 1 1 0
0 0 1 1 1 1 1 1
1 1 0 0
* – J – – – 3
JF ← (HL).A
TEST (HL).A#1
レジスタペア HL で指定されるアドレスの内容の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フ
ラグに入れます。
1 1 1 0
0 1 0 0 1 1 1 1
1 1 0 0
* – J – – – 3
JF ← (IX).A
TEST (IX).A#1
インデックスレジスタ IX で指定されるアドレスの内容の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステー
タス フラグに入れます。
TEST (IY).A#1
インデックスレジスタ IY で指定されるアドレスの内容の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステー
タス フラグに入れます。
TEST (IX+d).A#1
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 1 0 0 * – J – – – 5
JF ← (IY+d).A
TEST (IY+d).A#1
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 1 0 0 * – J – – – 5
JF ← (SP+d).A
1 1 1 0
1 1 0 1
0 1 0 1 1 1 1 1
0 1 0 0 d d d d
1 1 0 0
* – J – – – 3
d d d d 1 1 1 1
1 1 0 0 * – J – – – 5
JF ← (IY).A
JF ← (IX+d).A
TEST (SP+d).A#1 スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 1 0 0 * – J – – – 5
JF ← (HL+d).A
TEST (HL+d).A#1 レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
0 1 1 1 1 1 1 1
1 1 0 0
* – J – – – 5
JF ← (HL+C).A
TEST (HL+C).A#1 レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットの反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
TEST (+SP).A#1
0 1 1 0 1 1 1 1
1 1 0 0
* – J – – – 4
SP ← SP+1:JF ← (SP).A
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の
反転値をジャンプ ステータス フラグにいれます。
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 0
* – J – – – 5
JF ← (PC+A).A
TEST (PC+A).A#1 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ
れるビットの内容の反転値をジャンプ ステータス フラグに入れます。
1 1 1 0
1 g g g 1 1 1 0
1 b b b
LD g.b,CF
LD (x).b,CF
LD (vw).b,CF
LD (DE).b,CF
LD (HL).b,CF
RA001
1 – – – – – 2
g.b ← CF
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容を入れます。
例 1: A = 0x15, CF = 1 のとき、LD A.5, CF 命令を実行すると、A = 0x35, CF = 1 となります。
例 2: B = 0x7E, CF = 0 のとき、LD B.2, CF 命令を実行すると、B = 0x7A, CF = 0 となります。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 0
1 b b b 1 – – – – – 5
(x).b ← CF
オブジェクトコード中の x で指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、オブジェクトコード中の b で指定されるビットにキャリーフ
ラグの内容をストアします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v 1 – – – – – 6
(vw).b ← CF
1 1 1 0
1 b b b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットにキャ
リーフラグの内容をストアします。
1 1 1 0
0 0 1 0 1 1 1 0
1 b b b
1 – – – – – 4
(DE).b ← CF
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 0 1 1 1 1 1 0
1 b b b
1 – – – – – 4
(HL).b ← CF
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
Page 49
2.4 ビット操作、フラグ操作
LD (IY).b,CF
フラグ
サイクル
オペレーション
J Z C H S V
1 – – – – – 4
(IX).b ← CF
オブジェクトコード (2 進 )
ニモニック
LD (IX).b,CF
TLCS-870/C1
1 1 1 0
0 1 0 0 1 1 1 0
1 b b b
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 0 1 1 1 1 0
1 b b b
1 – – – – – 4
(IY).b ← CF
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 0
1 b b b 1 – – – – – 6
(IX+d).b ← CF
LD (IX+d).b,CF
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 0
1 b b b 1 – – – – – 6
(IY+d).b ← CF
LD (IY+d).b,CF
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 0
1 b b b 1 – – – – – 6
(SP+d).b ← CF
LD (SP+d).b,CF
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 0
1 b b b 1 – – – – – 6
(HL+d).b ← CF
LD (HL+d).b,CF
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 1 1 1 1 1 0
1 b b b
1 – – – – – 6
(HL+C).b ← CF
LD (HL+C).b,CF
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 1 0 1 1 1 0
1 b b b
1 – – – – – 5
SP ← SP+1:(SP).b ← CF
LD (+SP).b,CF
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコードの b で指定されるビットにキャリー
フラグの内容をストアします。
0 1 0 0
1 1 1 1 1 1 1 0
1 b b b
1 – – – – – 6
(PC+A).b ← CF
LD (PC+A).b,CF 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
0 0 1 1 1 – – – – – 5
(x).A ← CF
LD (x).A,CF
オブジェクトコード中の x で指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットにキャリーフ
LD (vw).A,CF
LD (DE).A,CF
LD (HL).A,CF
LD (IX).A,CF
LD (IY).A,CF
ラグの内容をストアします。
1 1 1 0
0 0 0 1 w w w w
1 1 1 1
0 0 1 1
w w w w v v v v
v v v v 1 – – – – – 6
(vw).A ← CF
オブジェクトコード中の vw で直接指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャリーフラグの内容をストア
します。
1 1 1 0
0 0 1 0 1 1 1 1
0 0 1 1
1 – – – – – 4
(DE).A ← CF
レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 0 1 1 1 1 1 1
0 0 1 1
1 – – – – – 4
(HL).A ← CF
レジスタペア HL で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 0 0 1 1 1 1
0 0 1 1
1 – – – – – 4
(IX).A ← CF
インデックスレジスタ IX で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 0 1 1 1 1 1
0 0 1 1
1 – – – – – 4
(IY).A ← CF
インデックスレジスタ IY で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
0 0 1 1 1 – – – – – 6
(IX+d).A ← CF
LD (IX+d).A,CF
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
0 0 1 1 1 – – – – – 6
(IY+d).A ← CF
LD (IY+d).A,CF
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
0 0 1 1 1 – – – – – 6
(SP+d).A ← CF
LD (SP+d).A,CF
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
0 0 1 1 1 – – – – – 6
(HL+d).A ← CF
LD (HL+d).A,CF
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 1 1 1 1 1 1
0 0 1 1
1 – – – – – 6
(HL+C).A ← CF
LD (HL+C).A,CF
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットにキャリーフラグの内容をストアします。
1 1 1 0
0 1 1 0 1 1 1 1
0 0 1 1
1 – – – – – 5
SP ← SP+1:(SP).A ← CF
LD (+SP).A,CF
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットにキャ
リーフラグの内容をストアします。
0 1 0 0
1 1 1 1 1 1 1 1
0 0 1 1
1 – – – – – 6
(PC+A).A ← CF
LD (PC+A).A,CF 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ
れるビットにキャリーフラグの内容をストアします。
1 1 1 0
1 g g g 1 1 1 0
0 b b b
Z * – – – – 3
ZF ← g.b:g.b ← g.b
CPL g.b
CPL (x).b
CPL (vw).b
RA001
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を反転し
ます。
例 : A = 0x3C のとき、CPL A.3 命令を実行すると、ZF = 0, A = 0x34 となります。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 0
0 b b b Z * – – – – 5
ZF ← (x).b:(x).b ← (x).b
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を反転します。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).b:(vw).b ← (vw).b
1 1 1 0
0 b b b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を反転します。
Page 50
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
Z * – – – – 4
ZF ← (DE).b:(DE).b ← (DE).b
オブジェクトコード (2 進 )
ニモニック
1 1 1 0
0 0 1 0 1 1 1 0
0 b b b
CPL (DE).b
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を反転します。
1 1 1 0
0 0 1 1 1 1 1 0
0 b b b
Z * – – – – 4
ZF ← (HL).b:(HL).b ← (HL).b
CPL (HL).b
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を反転します。
1 1 1 0
0 1 0 0 1 1 1 0
0 b b b
Z * – – – – 4
ZF ← (IX).b:(IX).b ← (IX).b
CPL (IX).b
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を反転します。
1 1 1 0
0 1 0 1 1 1 1 0
0 b b b
Z * – – – – 4
ZF ← (IY).b:(IY).b ← (IY).b
CPL (IY).b
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を反転します。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 0
0 b b b Z * – – – – 6
ZF ← (IX+d).b:(IX+d).b ← (IX+d).b
CPL (IX+d).b
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容を反転します。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 0
0 b b b Z * – – – – 6
ZF ← (IY+d).b:(IY+d).b ← (IY+d).b
CPL (IY+d).b
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容を反転します。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 0
0 b b b Z * – – – – 6
ZF ← (SP+d).b:(SP+d).b ← (SP+d).b
CPL (SP+d).b
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容を反転します。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 0
0 b b b Z * – – – – 6
ZF ← (HL+d).b:(HL+d).b ← (HL+d).b
CPL (HL+d).b
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容を反転します。
1 1 1 0
0 1 1 1 1 1 1 0
0 b b b
Z * – – – – 6
ZF ← (HL+C).b:(HL+C).b ← (HL+C).b
CPL (HL+C).b
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの内容を反転します。
1 1 1 0
0 1 1 0 1 1 1 0
0 b b b
Z * – – – – 5
SP ← SP+1:ZF ← (SP).b:(SP).b ← (SP).b
CPL (+SP).b
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容を
反転します。
0 1 0 0
1 1 1 1 1 1 1 0
0 b b b
Z * – – – – 6
ZF ← (PC+A).b:(PC+A).b ← (PC+A).b
CPL (PC+A).b 注
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
されるビットの内容を反転します。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 0 1 1 Z * – – – – 5
ZF ← (x).A:(x).A ← (x).A
CPL (x).A
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の
反転値をゼロフラグに入れた後、そのビットの内容を反転します。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v Z * – – – – 6
ZF ← (vw).A:(vw).A ← (vw).A
1 1 1 1
1 0 1 1
CPL (vw).A
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容
の反転値をゼロフラグに入れた後、そのビットの内容を反転します。
1 1 1 0
0 0 1 0 1 1 1 1
1 0 1 1
Z * – – – – 4
ZF ← (DE).A:(DE).A ← (DE).A
CPL (DE).A
レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を反転します。
1 1 1 0
0 0 1 1 1 1 1 1
1 0 1 1
Z * – – – – 4
ZF ← (HL).A:(HL).A ← (HL).A
CPL (HL).A
レジスタペア HL で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、その
ビットの内容を反転します。
1 1 1 0
0 1 0 0 1 1 1 1
1 0 1 1
Z * – – – – 4
ZF ← (IX).A:(IX).A ← (IX).A
CPL (IX).A
インデックスレジスタ IX で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を反転します。
1 1 1 0
0 1 0 1 1 1 1 1
1 0 1 1
Z * – – – – 4
ZF ← (IY).A:(IY).A ← (IY).A
CPL (IY).A
インデックスレジスタ IY で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、
そのビットの内容を反転します。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 0 1 1 Z * – – – – 6
ZF ← (IX+d).A:(IX+d).A ← (IX+d).A
CPL (IX+d).A
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容を反転します。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 0 1 1 Z * – – – – 6
ZF ← (IY+d).A:(IY+d).A ← (IY+d).A
CPL (IY+d).A
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス
タの下位 3 ビットで指定されるビットの内容を反転します。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 0 1 1 Z * – – – – 6
ZF ← (SP+d).A:(SP+d).A ← (SP+d).A
CPL (SP+d).A
スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの
下位 3 ビットで指定されるビットの内容を反転します。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 0 1 1 Z * – – – – 6
ZF ← (HL+d).A:(HL+d).A ← (HL+d).A
CPL (HL+d).A
レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位
3 ビットで指定されるビットの内容を反転します。
1 1 1 0
0 1 1 1 1 1 1 1
1 0 1 1
Z * – – – – 6
ZF ← (HL+C).A:(HL+C).A ← (HL+C).A
CPL (HL+C).A
レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定される
ビットの内容を反転します。
1 1 1 0
0 1 1 0 1 1 1 1
1 0 1 1
Z * – – – – 5
SP ← SP+1:ZF ← (SP).A:(SP).A ← (SP).A
CPL (+SP).A
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容を
反転します。
0 1 0 0
1 1 1 1 1 1 1 1
1 0 1 1
Z * – – – – 6
ZF ← (PC+A).A:(PC+A).A ← (PC+A).A
CPL (PC+A).A 注
プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ
れるビットの内容を反転します。
RA001
Page 51
2.4 ビット操作、フラグ操作
TLCS-870/C1
フラグ
サイクル
J Z C H S V
オブジェクトコード (2 進 )
ニモニック
1 1 1 0
1 g g g 0 1 0 1
C – * – – – 2
0 b b b
オペレーション
CF ← CF ^ g.b
8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和をとり、結果をキャ
リーフラグに入れます。
例 : A = 0x5B, CF = 1 のとき、XOR CF, A.3 命令を実行すると、A = 0x5B, CF = 0, JF = 1 となります。
XOR CF,g.b
1 1 1 0
XOR CF,(x).b
XOR CF,(vw).b
0 0 0 0 x x x x
x x x x 0 1 0 1
0 b b b C – * – – – 4
CF ← CF ^ (x).b
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容と
キャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (vw).b
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v C – * – – –
5
0 1 0 1
0 b b b
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) の、オブジェクトコード中の b で指定されるビットの内容
とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
1 1 1 0
0 0 1 0 0 1 0 1
0 b b b
CF ← CF ^ (DE).b
C – * – – – 3
XOR CF,(DE).b
レジスタペア DE で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和
を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (HL).b
1 1 1 0
0 0 1 1 0 1 0 1
0 b b b
C – * – – – 3
XOR CF,(HL).b
レジスタペア HL で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和
を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (IX).b
1 1 1 0
0 1 0 0 0 1 0 1
0 b b b
C – * – – – 3
XOR CF,(IX).b
インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他
的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (IY).b
1 1 1 0
0 1 0 1 0 1 0 1
0 b b b
C – * – – – 3
XOR CF,(IY).b
インデックスレジスタ IY で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他
的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (IX+d).b
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 1
0 b b b C – * – – – 5
XOR CF,(IX+d).b
インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (IY+d).b
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 1
0 b b b C – * – – – 5
XOR CF,(IY+d).b
インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェ
クトコード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (SP+d).b
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 1
0 b b b C – * – – – 5
XOR CF,(SP+d).b スタックポインタ SP の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクト
コード中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
CF ← CF ^ (HL+d).b
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 0 1
0 b b b C – * – – – 5
XOR CF,(HL+d).b レジスタペア HL の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、オブジェクトコー
ド中の b で指定されるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
1 1 1 0
0 1 1 1 0 1 0 1
0 b b b
CF ← CF ^ (HL+C).b
C – * – – – 5
XOR CF,(HL+C).b レジスタペア HL の内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される
ビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
SP ← SP+1:CF ← CF ^ (SP).b
1 1 1 0
0 1 1 0 0 1 0 1
0 b b b
C – * – – – 4
XOR CF,(+SP).b
スタックポインタ SP の内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容と
キャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
0 1 0 0
1 1 1 1 0 1 0 1
0 b b b
CF ← CF ^ (PC+A).b
C – * – – – 5
XOR CF,(PC+A).b 注 プログラムカウンタ PC の内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定
SET CF
CLR CF
されるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。
0 0 0 0
0 1 0 1
0 – 1 – – – 1
CF ← 1
キャリーフラグを “1” にセットします。
0 0 0 0
0 1 0 0
1 – 0 – – – 1
CF ← 0
キャリーフラグを “0” にクリアします。
0 0 0 0
0 1 1 0
* – * – – – 1
JF ← CF:CF ← CF
CPL CF
キャリーフラグの内容をジャンプステータスフラグに入れた後、キャリーフラグの内容を反転します。
例 : CF = 0 で、この命令を実行すると、JF = 0, CF = 1 となります。
DI#1
割り込みマスタ許可フラグの内容の反転値をゼロフラグに入れた後、割り込みマスタ許可フラグを “0” にクリアします ( マスカブル割り込み
の受け付けを禁止します ) 。
EI#1
割り込みマスタ許可フラグの内容の反転値をゼロフラグに入れた後、割り込みマスタ許可フラグを “1” にセットします ( マスカブル割り込み
の受け付けを許可します ) 。
1 1 0 0
1 1 0 0
#1
1 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1
1 0 1 0
Z * – – – – 4
1 0 1 0
Z * – – – – 4
ZF ← IMF:IMF ← 0
ZF ← IMF:IMF ← 1
アセンブラ用拡張命令
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 52
TLCS-870/C1
2.5 ジャンプ
フラグ
サイクル
オペレーション
J Z C H S V
1 0 0 d
d d d d
1 – – – – – 4/2(t/f)
if JF=1 then PC ← PC+d else null
ジャンプステータスフラグが “1” のとき、プログラムカウンタ PC の内容 (JRS 命令の置かれているアドレスの 2 番地先を示しています ) に、オブ
ジェクトコード中の 5 ビットディスプレースメント d を符号拡張して (−16~+15) 加算した値で指定されるアドレスにジャンプします (4 サイクル
JRS T,$+2+d
命令 )。
ジャンプ ステータス フラグが “0” のときは、ジャンプ ステータス フラグを “1” にセットし、次命令の実行に移ります (2 サイクル命令 )。
例 : ジャンプ ステータス フラグが “1” のとき、0xC134 番地に置かれた JRS T, $+9 命令を実行すると、0xC13D 番地にジャンプします。
1 0 1 d
d d d d
1 – – – – – 4/2(t/f)
if JF=0 then PC ← PC+d else null
ジャンプステータスフラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 5 ビットディスプレースメント d を符号拡
JRS F,$+2+d
張して (−16~+15) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
ジャンプステータスフラグが “1” のときは、何もせず次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 1 1 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
if JF=1 then PC ← PC+d else null
ジャンプステータスフラグが “1” のとき、プログラムカウンタ PC の内容 (JR 命令の置かれているアドレスの 2 番地先を示しています ) に、オブ
ジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイク
JR T,$+2+d
ル )。
ジャンプステータスフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
例 : ジャンプステータスフラグが “1” のとき、0xC134 番地に置かれた JR T, $+0xF6 命令を実行すると、0xC12A 番地にジャンプします。
1 1 0 1
1 1 1 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if JF=0 then PC ← PC+d else null
ジャンプ ステータス フラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号
JR F,$+2+d
拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル ) 。
ジャンプ ステータス フラグが “1” のときは、何もせず次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 0 0 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
if ZF=1 then PC ← PC+d else null
JR EQ,$+2+d
ゼロフラグが “1” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−
または
128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
JR Z,$+2+d
ゼロフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 0 0 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if ZF=0 then PC ← PC+d else null
JR NE,$+2+d
ゼロフラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−
または
128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
JR NZ,$+2+d
ゼロフラグが “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 0 1 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
if CF=1 then PC ← PC+d else null
JR CS,$+2+d
キャリーフラグが “1” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−
または
128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
JR LT,$+2+d
キャリーフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 0 1 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if CF=0 then PC ← PC+d else null
JR CC,$+2+d
キャリーフラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−
または
128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
JR GE,$+2+d
キャリーフラグが “1” のときは、ジャンプ ステータス フラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 1 0 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
if (CF ⏐ ZF)=1 then PC ← PC+d else null
キャリーフラグまたはゼロフラグが “1” のとき、プログラムカウンタ PC の内容にオブジェクトコード中の 8 ビットディスプレースメント d を符
JR LE,$+2+d
号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
キャリーフラグとゼロフラグがともに “0” のときは、ジャンプ ステータス フラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 0 1
1 1 0 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if (CF ⏐ ZF)=0 then PC ← PC+d else null
キャリーフラグとゼロフラグがともに “0” のとき、プログラムカウンタ PC の内容にオブジェクトコード中の 8 ビットディスプレースメント d を
JR GT,$+2+d
符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。
キャリーフラグまたはゼロフラグが “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 0 0 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
if SF=1 then PC ← PC+d else null
サインフラグが “1” のとき、プログラムカウンタ PC の内容 (JR 命令の置かれているアドレスの 3 番地先を示しています ) に、オブジェクトコー
JR M,$+3+d
ド中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
サインフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サイクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 0 0 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
if SF=0 then PC ← PC+d else null
サインフラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して (−
JR P,$+3+d
128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
サインフラグが “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サイクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 0 1 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
if (SF ^ VF)=1 then PC ← PC+d else null
サインとオーバフローフラグの排他的論理和の結果が “1” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプ
JR SLT,$+3+d レースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
サインとオーバフローフラグの排他的論理和の結果が “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サ
イクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 0 1 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
if (SF ^ VF)=0 then PC ← PC+d else null
サインとオーバフローフラグの排他的論理和の結果が “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプ
JR
レースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
SGE,$+3+d
サインとオーバフローフラグの排他的論理和の結果が “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サ
イクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 1 0 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
if ZF ⏐ (SF ^ VF)=1 then PC ← PC+d else null
サインとオーバフローフラグの排他的論理和の結果またはゼロフラグの内容が “1” のとき、プログラムカウンタ PC の内容に、オブジェクトコー
JR SLE,$+3+d ド中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
サインとオーバフローフラグの排他的論理和の結果およびゼロフラグの内容がともに “0” のときは、ジャンプステータスフラグを “1” にセットし、
次命令の実行に移ります (3 サイクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 1 0 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
if ZF⏐ (SF ^ VF)=0 then PC ← PC+d else null
サインとオーバフローフラグの排他的論理和の結果およびゼロフラグの内容がともに “0” のとき、プログラムカウンタ PC の内容に、オブジェク
JR
トコード中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
SGT,$+3+d
サインとオーバフローフラグの排他的論理和の結果またはゼロフラグの内容が “1” のときは、ジャンプステータスフラグを “1” にセットし、次命
令の実行に移ります (3 サイクル )。
ニモニック
RA001
オブジェクトコード (2 進 )
Page 53
2.5 ジャンプ
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
1 1 1 0
1 0 0 0 1 1 0 1
0 1 1 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
if VF=1 then PC ← PC+d else null
オーバフローフラグが “1” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して
JR VS,$+3+d
(−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
オーバフローフラグが “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サイクル )。
1 1 1 0
1 0 0 0 1 1 0 1
0 1 1 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
if VF=0 then PC ← PC+d else null
オーバフローフラグが “0” のとき、プログラムカウンタ PC の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を符号拡張して
JR VC,$+3+d
(−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。
オーバフローフラグが “1” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (3 サイクル )。
1 1 1 1
1 1 0 0 d d d d
d d d d
1 – – – – – 4
PC ← PC+d
プログラムカウンタ PC の内容 (JR 命令の置かれているアドレスの 2 番地先を示しています ) に、オブジェクトコード中の 8 ビットディスプレー
JR $+2+d
スメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスに無条件にジャンプします。
例 : 0xD5A7 番地に置かれた JR $+0x73 命令を実行すると、0xD61C 番地にジャンプします。
1 1 1 1
1 1 1 0 n n n n
n n n n mmmm
mmmm – – – – – – 4
PC ← mn
JP mn
オブジェクトコード中の 16 ビットデータ mn で直接指定されるアドレスに無条件にジャンプします。
1 1 1 0
1 g g g 1 1 1 1
1 1 1 0
– – – – – – 3
PC ← gg
JP gg
16 ビットレジスタ gg で指定されるアドレスに無条件にジャンプします。
例 : HL = 0xE325 のとき、JP HL 命令を実行すると、0xE325 番地にジャンプします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 1 1 0 – – – – – – 6
PC ← (x+1,x)
オブジェクトコード中の x で直接指定されるアドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリに格納されているアドレスに無条
JP (x)
件にジャンプします。
例 : 0x0085, 0x0086 番地の内容がそれぞれ 0x27, 0xC3 のとき、JP (0x85) 命令を実行すると、0xC327 番地にジャンプします。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v – – – – – – 7
PC ← (vw+1,vw)
1 1 1 1
1 1 1 0
JP (vw)
オブジェクトコード中の vw で直接指定されるアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリに格納されているアドレスに無
条件にジャンプします。
1 1 1 0
0 0 1 0 1 1 1 1
1 1 1 0
– – – – – – 5
PC ← (DE+1,DE)
JP (DE)
レジスタペア DE で指定されるアドレスから連続する 2 バイトのメモリに格納されているアドレスに無条件にジャンプします。
例 : DE = 0x0125 で、0x0125, 0x0126 番地の内容がそれぞれ 0x87, 0xE5 のとき、JP (DE) 命令を実行すると、0xE587 番地にジャンプします。
1 1 1 0
0 0 1 1 1 1 1 1
1 1 1 0
– – – – – – 5
PC ← (HL+1,HL)
JP (HL)
レジスタペア HL で指定されるアドレスから連続する 2 バイトのメモリに格納されているアドレスに無条件にジャンプします。
例 : HL= 0x0125 で、0x0125, 0x0126 番地の内容がそれぞれ 0x87, 0xE5 のとき、JP (HL) 命令を実行すると、0xE587 番地にジャンプします。
1 1 1 0
0 1 0 0 1 1 1 1
1 1 1 0
– – – – – – 5
PC ← (IX+1,IX)
JP (IX)
インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリに格納されているアドレスに無条件にジャンプします。
例 : IX = 0x0125 で、0x0125, 0x0126 番地の内容がそれぞれ 0x87, 0xE5 のとき、JP (IX) 命令を実行すると、0xE587 番地にジャンプします。
1 1 1 0
0 1 0 1 1 1 1 1
1 1 1 0
– – – – – – 5
PC ← (IY+1,IY)
JP (IY)
インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリに格納されているアドレスに無条件にジャンプします。
例 : IY = 0x0125 で、0x0125, 0x0126 番地の内容がそれぞれ 0x87, 0xE5 のとき、JP (IY) 命令を実行すると、0xE587 番地にジャンプします。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 1 1 0 – – – – – – 7
PC ← (IX+d+1,IX+d)
JP (IX+d)
インデックスレジスタ IX の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2
バイトのメモリに格納されているアドレスに無条件にジャンプします。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 1 1 0 – – – – – – 7
PC ← (IY+d+1,IY+d)
JP (IY+d)
インデックスレジスタ IY の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2
バイトのメモリに格納されているアドレスに無条件にジャンプします。
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 1 1 0 – – – – – – 7
PC ← (SP+d+1,SP+d)
JP (SP+d)
スタックポインタ SP の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイ
トのメモリに格納されているアドレスに無条件にジャンプします。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 1 1 0 – – – – – – 7
PC ← (HL+d+1,HL+d)
JP (HL+d)
レジスタペア HL の内容に、オブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトの
メモリに格納されているアドレスに無条件にジャンプします。
1 1 1 0
0 1 1 1 1 1 1 1
1 1 1 0
– – – – – – 7
PC ← (HL+C+1,HL+C)
JP (HL+C)
レジスタペア HL の内容に、C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリに格納されている
アドレスに無条件にジャンプします。
1 1 1 0
0 1 1 0 1 1 1 1
1 1 1 0
– – – – – – 6
SP ← SP+1:PC ← (SP+1,SP)
JP (+SP)
スタックポインタ SP をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメモリに格納されているアドレスに、無条件に
ジャンプします。
0 1 0 0
1 1 1 1 1 1 1 1
1 1 1 0
– – – – – – 7
PC ← (PC+A+1,PC+A)
プログラムカウンタ PC の内容 (JP 命令の置かれているアドレスの 2 番地先を示しています ) に、A レジスタの内容を符号拡張 して加算した値で
JP (PC+A) 注
指定されるアドレスから連続する 2 バイトのプログラムメモリに格納されているアドレスに無条件にジャンプします。この命令は、多方向分岐処
理に適しています。
ニモニック
オブジェクトコード (2 進 )
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 54
TLCS-870/C1
2.6 サブルーチンコール、リターン、ソフトウエア割り込み、ノーオペレー
ション
ニモニック
CALLV n
CALL mn
CALL gg
CALL (x)
CALL (vw)
CALL (DE)
CALL (HL)
CALL (IX)
CALL (IY)
CALL (IX+d)
CALL (IY+d)
RA001
フラグ
サイクル
オペレーション
J Z C H S V
(SP,SP-1)
←
NxtOp:SP ← SP-2:
0 1 1 1
n n n n
– – – – – – 7
PC ← (n × 2+ ベクタコール領域の先頭
アドレス値 +1,n × 2+ ベクタコール領
域の先頭アドレス値 )
ベクタ方式のサブルーチンコールを行います。戻り番地 NxtOp(CALLV 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順に
スタックポインタ SP で指定されるアドレスのデータメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、
オブジェクトコード中の 4 ビット即値 n (0~15) を 2 倍した値にベクタコール領域の先頭アドレス値を加えた値で指定されるアドレスから
連続する 2 バイトのプログラムメモリの内容 ( ベクタ ) をプログラムカウンタ PC に入れます。この命令は、プログラムの圧縮に便利です。
例 : SP = 0x0123 で、4 × 2+ ベクタコール領域の先頭アドレス値 +1,4 × 2+ ベクタコール領域の先頭アドレス値の内容がそれぞれ 0x45,
0xE6 のとき、0xD1A4 番地に置かれた CALLV 4H 命令を実行すると、0x0123, 0x0122 番地にそれぞれ 0xD1, 0xA5 が書き込まれ、SP =
0x0121 となり、0xE645 番地をコールします。
1 1 1 1
1 1 0 1 n n n n
n n n n mmmm
mmmm – – – – – – 6
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← mn
アブソリュート方式のサブルーチンコールを行います。戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイト
の順にスタックポインタ SP で指定されるアドレスのデータメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。
その後、オブジェクトコード中の 16 ビット絶対アドレス mn をプログラムカウンタ PC に入れます。
例 : SP = 0x0138 のとき、0xE273 番地に置かれた CALL 0xCE05 命令を実行すると、0x0138, 0x0137 番地にそれぞれ 0xE2, 0x76 が書き込
まれ、SP = 0x0136 となり、0xCE05 番地をコールします。
1 1 1 0
1 g g g 1 1 1 1
1 1 0 1
– – – – – – 6
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← gg
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、16 ビットレジスタ gg の内容をプログラムカ
ウンタ PC に入れます。
例 : SP = 0x0126, HL = 0xC8A7 のとき、0xD491 番地に置かれた CALL HL 命令を実行すると、0x0126, 0x0125 番地にそれぞれ 0xD4, 0x93
が書き込まれ、SP = 0x0124 となり、0xC8A7 番地をコールします。
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 1 0 1 – – – – – – 8
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (x+1,x)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、オブジェクトコード中の x で直接指定される
アドレス (0x0000 ~ 0x00FF 番地 ) から連続する 2 バイトのメモリ内容 ( サブルーチンのエントリーアドレス ) をプログラムカウンタ PC に
入れます。
1 1 1 0
0 0 0 1 w w w w
w w w w v v v v
v v v v – – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
1 1 1 1
1 1 0 1
PC ← (vw+1,vw)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、オブジェクトコード中の vw で直接指定され
るアドレス (0x0000 ~ 0xFFFF 番地 ) から連続する 2 バイトのメモリ内容をプログラムカウンタ PC に入れます。
1 1 1 0
0 0 1 0 1 1 1 1
1 1 0 1
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (DE+1,DE)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、レジスタペア DE の内容で指定されるアドレ
スから連続する 2 バイトのメモリ内容をプログラムカウンタ PC に入れます。
1 1 1 0
0 0 1 1 1 1 1 1
1 1 0 1
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (HL+1,HL)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、レジスタペア HL の内容で指定されるアドレ
スから連続する 2 バイトのメモリ内容をプログラムカウンタ PC に入れます。
1 1 1 0
0 1 0 0 1 1 1 1
1 1 0 1
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IX+1,IX)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、インデックスレジスタ IX の内容で指定され
るアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタ PC に入れます。
(SP,SP-1) ← NxtOp:SP ← SP-2:
1 1 1 0
0 1 0 1 1 1 1 1
1 1 0 1
– – – – – – 7
PC ← (IY+1,IY)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、インデックスレジスタ IY の内容で指定され
るアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタ PC に入れます。
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 1 0 1 – – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IX+d+1,IX+d)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、インデックスレジスタ IX の内容に、オブ
ジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカ
ウンタ PC に入れます。
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 1 0 1 – – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IY+d+1,IY+d)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、インデックスレジスタ IY の内容に、オブ
ジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカ
ウンタ PC に入れます。
オブジェクトコード (2 進 )
Page 55
2.6 サブルーチンコール、リターン、ソフトウエア割り込み、
ノーオペレーション
ニモニック
CALL (SP+d)
CALL (HL+d)
TLCS-870/C1
フラグ
サイクル
オペレーション
J Z C H S V
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 1 0 1 – – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (SP+d+1,SP+d)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、スタックポインタ SP の内容に、オブジェク
トコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタ
PC に入れます。
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 1 0 1 – – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
オブジェクトコード (2 進 )
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、レジスタペア HL の内容に、オブジェクト
コード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタ
PC に入れます。
1 1 1 0
0 1 1 0 1 1 1 1
1 1 0 1
– – – – – – 8
SP ← SP+1:(SP-1) ← NxtOpL:
PCL ← (SP):(SP) ← NxtOpH:
PCH ← (SP+1):SP ← SP-2
スタックポインタ SP の内容をインクリメントします。次に、戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) の下位バイトをス
タックポインタ SP の内容 -1 で指定されるアドレスのメモリにセーブし、スタックポインタ SP の内容で指定されるアドレスのメモリの内
容をプログラムカウンタ PC の下位バイトに入れます。さらに、戻り番地 NxtOP(CALL 命令の次の命令の先頭アドレス ) の上位バイトをス
タックポインタ SP の内容で指定されるアドレスのメモリにセーブし、スタックポインタ SP+1 の内容で指定されるアドレスのメモリの内
容をプログラムカウンタ PC の上位バイトに入れます。その後、スタックポインタ SP の内容を 2 回デクリメントします。
1 1 1 0
0 1 1 1 1 1 1 1
1 1 0 1
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (HL+C+1,HL+C)
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
CALL (HL+C)
データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、レジスタペア HL の内容に C レジスタの内容
を符号拡張 ( 最上位ビットが符号ビットです ) して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウ
ンタ PC に入れます。
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 1
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
戻り番地 NxtOp(CALL 命令の次の命令の先頭アドレス ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスの
CALL (PC+A) 注 データメモリにセーブし、スタックポインタ SP の内容を 2 回デクリメントします。その後、プログラムカウンタ PC の内容に A レジスタ
の内容を符号拡張 ( 最上位ビットが符号ビットです ) して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラ
ムカウンタ PC に入れます。
1 1 1 1
1 0 1 0
– – – – – – 6
SP ← SP+2:PC ← (SP,SP-1)
サブルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、その値で指定されるアドレス
RET
のデータメモリ内容 ( 戻り番地 ) を下位バイト、上位バイトの順にプログラムカウンタ PC にロードします。
例 : SP = 0x0123 で、0x0124, 0x0125 番地の内容がそれぞれ 0x3E, 0xC8 のとき、この命令を実行すると、SP = 0x0125 となり 0xC83E 番
地にジャンプします。
SP ← SP+2:PC ← (SP,SP-1):
1 1 1 1
1 0 1 1
* * * * * * 6
SP ← SP+1:PSW ← (SP):
IMF ← (SP).0
マスカブル割り込みサービスルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、その
RETI
値で指定されるアドレスのデータメモリ内容 ( 戻り番地 ) をプログラムカウンタ PC に入れます。その後、さらにスタックポインタ SP の
内容をインクリメントし、その値で指定されるアドレスのメモリ内容をプログラム ステータス ワード PSW および割り込みマスタ許可フラ
グ IMF に入れます ( ビット 7~1 が PSW に、ビット 0 が IMF に入ります )。
SP ← SP+2:PC ← (SP,SP-1):
1 1 1 0
1 0 0 0 1 1 1 1
1 0 1 1
* * * * * * 7
SP ← SP+1:PSW ← (SP):
IMF ← (SP).0
ノンマスカブル割り込みサービスルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、
RETN
その値で指定されるアドレスのデータメモリ内容 ( 戻り番地 ) をプログラムカウンタ PC に入れます。その後、さらにスタックポインタ SP
の内容をインクリメントし、その値で指定されるアドレスの内容をプログラム ステータス ワード PSW および割り込みマスタ許可フラグ
IMF に入れます ( ビット 7~1 が PSW に、ビット 0 が IMF に入ります )。
(SP) ← PSW:(SP).0 ← IMF:
1 1 1 1
1 1 1 1
– – – – – – 9
(SP-1,SP-2) ← NxtOp:
PC ← (SWI ベクタアドレス +1,SWI
ベクタアドレス )
ソフトウエア割り込みを行います。すなわち、プログラムステータスワード PSW および割り込みマスタ許可フラグ IMF の内容をスタック
ポインタ SP の内容で指定されるアドレスのデータメモリにセーブし (PSW の内容がメモリのビット 7~1 に、IMF の内容がメモリのビット
SWI
0 にセーブされます )、スタックポインタ SP の内容をデクリメントします。次に 戻り番地 NxtOp(SWI 命令の次の命令の先頭アドレス ) を
上位バイト、下位バイトの順にスタックポインタ SP の内容で指定されるアドレスのデータメモリにセーブし、スタックポインタ SP の内
容をさらに 2 回デクリメントします。割り込みマスタ許可フラグ IMF は “0” にクリアされます。その後、SWI ベクタアドレスと SWI ベク
タアドレス +1 のプログラムメモリの内容 ( ベクタ ) をプログラムカウンタ PC に入れます。
例 : SP = 0x0128, PSW = 0x46 で、SWI ベクタアドレスと SWI ベクタアドレス +1 の内容がそれぞれ 0x03, 0xE7 のとき、0xCA74 番地に置
かれた SWI 命令を実行すると、0x0128, 0x0127, 0x0126 番地にそれぞれ、0x46, 0x75, 0xCA が書き込まれ、SP = 0x0125, IMF = 0 となり、
0xE703 番地にジャンプします。
0 0 0 0
0 0 0 0
– – – – – – 1
no Operation
NOP
ノーオペレーション ( 何も実行せず、次の命令の実行に移ります )。
CALL (+SP)
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 56
TLCS-870/C1
第3章
TLCS-870/C1 命令一覧
3.1 転送、交換
オブジェクトコード (2 進 )
ニモニック
LD A,r
LD r,A
LD r,g
LD rr,gg
LD A,(x)
LD A,(HL)
LD r,(x)
LD r,(vw)
LD r,(DE)
LD r,(HL)
LD r,(IX)
LD r,(IY)
LD r,(IX+d)
LD r,(IY+d)
LD r,(SP+d)
LD r,(HL+d)
LD r,(HL+C)
LD r,(+SP)
LD r,(PC+A) 注
LD rr,(x)
LD rr,(vw)
LD rr,(DE)
LD rr,(HL)
LD rr,(IX)
LD rr,(IY)
LD rr,(IX+d)
LD rr,(IY+d)
LD rr,(SP+d)
LD rr,(HL+d)
LD rr,(HL+C)
LD rr,(+SP)
0
0
1
1
0
0
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
0
0
1
1
0
1
1
1
1
0
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
r
r
g
g
1
1
0
0
r
0
0
1
1
1
1
1
1
1
1
r
r
g
g
0
0
0
0
r
1
1
0
0
0
0
1
1
1
1
r
r
g
g
0
1
0
1
r
0
1
0
1
0
1
0
1
1
0
0 1 0 0
0 1 0 0
x x x x
0 r r r
1 r r r
x x x x
x x x x
w w w w
x x x x 0 1 0 0
w w w w v v v v
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0 1 0 0
1 1 1 1 0 1 0 0
0 r r r
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 0 1 0 0
w w w w v v v v
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
r
0
0
1
1
1
1
1
1
1
1
0
0
r
1
1
0
0
0
0
1
1
1
1
0
1
r
0
1
0
1
0
1
0
1
1
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
J
1
1
1
1
1
1
0 r r r 1
v v v v 1
Z
Z
Z
Z
–
Z
Z
Z
Z
1
1
1
1
1
1
1
1
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
フラグ
C H S
– – –
– – –
– – –
– – –
– – –
– – –
– – –
– – –
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
サイクル
1
1
2
2
3
2
4
5
A←r
r←A
r←g
rr ← gg
A ← (x)
A ← (HL)
r ← (x)
r ← (vw)
–
–
–
–
–
–
–
–
–
–
3
3
3
3
5
5
5
5
5
4
r ← (DE)
r ← (HL)
r ← (IX)
r ← (IY)
r ← (IX+d)
r ← (IY+d)
r ← (SP+d)
r ← (HL+d)
r ← (HL+C)
SP ← SP+1:r ← (SP)
1 Z – – – – 5
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1 r r r 1 – – – – – 5
v v v v 1 – – – – – 6
1
1
1
1
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
オペレーション
V
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
r ← (PC+A)
rr ← (x+1,x)
rr ← (vw+1,vw)
rr ← (DE+1,DE)
rr ← (HL+1,HL)
rr ← (IX+1,IX)
rr ← (IY+1,IY)
rr ← (IX+d+1,IX+d)
rr ← (IY+d+1,IY+d)
rr ← (SP+d+1,SP+d)
rr ← (HL+d+1,HL+d)
rr ← (HL+C+1,HL+C)
SP ← SP+1:rr ← (SP+1,SP)
LD rr,(PC+A) 注
LD (x),A
0 1 0 0
1 1 1 1 0 1 0 0
1 r r r
1 – – – – – 6
rr ← (PC+A+1,PC+A)
0 0 0 0
1 1 1 0 x x x x
x x x x
1 – – – – – 3
(x) ← A
LD (HL),A
0 0 0 0
1 1 1 1
1 – – – – – 2
(HL) ← A
LD (x),r
LD (vw),r
1
1
0
1
1
1
1
0
0
0
0
1
1
1
1
0
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
LD (DE),r
LD (HL),r
LD (IX),r
LD (IY),r
LD (IX+d),r
LD (IY+d),r
LD (SP+d),r
LD (HL+d),r
LD (HL+C),r
LD (SP−),r
LD (x),rr
LD (vw),rr
LD (DE),rr
LD (HL),rr
LD (IX),rr
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0
r
0
0
1
1
1
1
1
1
1
1
0
0
r
0
0
1
0
0
r
1
1
0
0
0
0
1
1
1
1
0
0
r
1
1
0
0
1
r
0
1
0
1
0
1
0
1
1
0
0
1
r
0
1
0
x x x x
w w w w
x x x x 0 1 1 1
w w w w v v v v
0
0
0
0
d
d
d
d
0
0
x
w
1
1
1
1
d
d
d
d
1
1
x
w
1
1
1
1
d
d
d
d
1
1
x
w
1
1
1
1
d
d
d
d
1
1
x
w
1
1
1
1
d
d
d
d
1
1
x
w
0 1 1 0
0 1 1 0
0 1 1 0
r
r
r
r
d
d
d
d
r
r
x
w
r
r
r
r
d
d
d
d
r
r
x
w
r
r
r
r
d
d
d
d
r
r
x
w
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0 1 1 0
v v v v
1 r r r
1 r r r
1 r r r
1 r r r 1 – – – – – 4
v v v v 1 – – – – – 5
1
1
1
1
r
r
r
r
r
r
r
r
r
r
r
r
1 r r r
v v v v
1
1
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
3
3
3
3
4
4
4
4
5
4
5
6
1 – – – – – 4
1 – – – – – 4
1 – – – – – 4
(DE) ← r
(HL) ← r
(IX) ← r
(IY) ← r
(IX+d) ← r
(IY+d) ← r
(SP+d) ← r
(HL+d) ← r
(HL+C) ← r
(SP) ← r:SP ← SP−1
(x+1,x) ← rr
(vw+1,vw) ← rr
(DE+1,DE) ← rr
(HL+1,HL) ← rr
(IX+1,IX) ← rr
(IY+1,IY) ← rr
LD (IY),rr
1 1 1 1
0 1 0 1 0 1 1 0
1 r r r
LD (IX+d),rr
LD (IY+d),rr
LD (SP+d),rr
0 1 0 1
0 1 0 1
0 1 0 1
0 1 0 0 d d d d
0 1 0 1 d d d d
0 1 1 0 d d d d
d d d d 0 1 1 0
d d d d 0 1 1 0
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
1 r r r 1 – – – – – 5
1 r r r 1 – – – – – 5
(IX+d+1,IX+d) ← rr
(IY+d+1,IY+d) ← rr
(SP+d+1,SP+d) ← rr
LD (HL+d),rr
0 1 0 1
0 1 1 1 d d d d
d d d d 0 1 1 0
1 r r r 1 – – – – – 5
(HL+d+1,HL+d) ← rr
LD (HL+C),rr
LD (SP−),rr
1 1 1 1
1 1 1 1
0 1 1 1 0 1 1 0
0 1 1 0 0 1 1 0
1 r r r
1 r r r
RA001
1 – – – – – 4
(x) ← r
(vw) ← r
1 – – – – – 6
1 – – – – – 5
Page 57
(HL+C+1,HL+C) ← rr
(SP+1,SP) ← rr:SP ← SP−1
第 3 章 TLCS-870/C1 命令一覧
3.1 転送、交換
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
PUSH rr #1
0
0
0
1
1
1
0
1
1
0
n
0
n
0
n
0
n
1
1
0
m
0
0
PUSH gg #2
1 1 1 0
1 g g g 1 1 0 1
POP rr #1
1 1 0 1
0 0 r r
POP gg #2
PUSH PSW
POP PSW
LD PSW, n
LD RBS,0
LD RBS,1
LD SP,SP+d
LD SP,SP−d
XCH r,g
XCH rr,gg
XCH r,(x)
XCH r,(vw)
1
1
1
1
1
1
0
0
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
LD r,n
LD rr,mn
LD (x),n
LD (vw),n
LD (DE),n
LD (HL),n
LD (IX),n
LD (IY),n
LD (IX+d),n
LD (IY+d),n
LD (SP+d),n
LD (HL+d),n
LD (HL+C),n
LD (SP−),n
LDW (x),mn
LDW (HL),mn
XCH r,(DE)
XCH r,(HL)
XCH r,(IX)
XCH r,(IY)
XCH r,(IX+d)
XCH r,(IY+d)
XCH r,(SP+d)
XCH r,(HL+d)
XCH r,(HL+C)
XCH r,(+SP)
XCH r,(PC+A) 注
XCH rr,(x)
XCH rr,(vw)
0
1
0
1
1
1
0
1
1
1
n
1
n
1
n
1
n
1
1
0
m
0
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
1
0
1
1
0
n
0
n
0
n
0
n
1
1
0
m
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
0
0
1
1
1
0
1
1
1
n
1
n
1
n
1
n
1
1
0
m
0
1
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0
0
1
1
1
0
1
0
1
0
0
0
n
0
n
0
n
0
n
0
0
1
m
1
0
r
r
0
0
0
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
m
0
0
g
0
0
0
0
0
1
1
g
g
0
0
r
0
0
1
1
1
1
1
1
1
1
r
r
1
0
0
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
m
0
r
g
0
0
0
0
0
1
1
g
g
0
0
r
1
1
0
0
0
0
1
1
1
1
r
r
0
1
1
0
1
0
1
0
n
1
n
0
n
1
n
1
0
0
m
1
r
g
0
0
0
1
1
1
1
g
g
0
1
r
0
1
0
1
0
1
0
1
1
0
n
n
x
w
n
1
n
1
1
d
n
n
x
w
n
1
n
1
1
d
n
n
x
w
n
1
n
1
1
d
n
n
x
w
n
1
n
1
1
d
n
n
x
w
n
1
n
1
1
d
n
n
x
w
n
0
n
0
0
d
n
n
x
w
n
0
n
0
0
d
n
n
x
w
n
1
n
1
1
d
mmmm
n n n n
v v v v
–
–
–
–
–
4
3
4
4
5
(DE) ← n
(HL) ← n
(IX) ← n
(IY) ← n
(IX+d) ← n
d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(SP+d) ← n
d d d d
d d d d 1 1 1 1
1 0 0 1 1 – – – – – 5
(HL+d) ← n
1 1 1 1
1 1 1 1
x x x x
1 0 0 1 n n n n
1 0 0 1 n n n n
x x x x n n n n
n n n n 1 – – – – – 6
n n n n 1 – – – – – 5
n n n n 1 – – – – – 6
(HL+C) ← n
(SP) ← n:SP ← SP−1
(x+1,x) ← mn
n n n n
n n n n mmmm
mmmm 1 – – – – – 5
– – – – – – 3
(HL+1,HL) ← mn
(SP, SP−1) ← rr:SP ← SP−2
1 0 0 0
1
1
1
1
0
0
d
d
0
0
x
w
1
1
1
1
0
0
d
d
1
1
x
w
0
0
0
0
0
0
d
d
1
1
x
w
1
1
1
1
0
0
d
d
1
1
x
w
1
1
1
1
0
0
d
d
0
1
x
w
0
1
1
1
0
0
d
d
r
r
x
w
0
0
0
1
0
1
d
d
r
r
x
w
1
0
1
0 n n n n
0
0
d
d
r
r
x 0 1 1 1
w v v v v
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
x x x x 1 1 0 1
w w w w v v v v
XCH rr,(DE)
XCH rr,(HL)
XCH rr,(IX)
XCH rr,(IY)
XCH rr,(IX+d)
XCH rr,(IY+d)
XCH rr,(SP+d)
XCH rr,(HL+d)
XCH rr,(HL+C)
XCH rr,(+SP)
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
XCH rr,(PC+A) 注
0 1 0 0
#1
#2
–
–
–
–
–
r←n
rr ← mn
(x) ← n
(vw) ← n
(IY+d) ← n
0 r r r
0
1
r
0
1
0
1
0
1
0
1
1
0
–
–
–
–
–
オペレーション
2
3
4
6
1 0 0 1 1 – – – – – 5
x x x x
w w w w
0
0
r
1
1
0
0
0
0
1
1
1
1
–
–
–
–
–
サイクル
V
–
–
–
–
d d d d 1 1 1 1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
r
0
0
1
1
1
1
1
1
1
1
–
–
–
–
–
フラグ
C H S
– – –
– – –
– – –
– – –
d d d d
1 1 1 1 0 1 1 1
0
0
1
0
0
0
0
1
1
1
1
0
0
n n n n 1
1
n n n n 1
n n n n 1
1 0 0 1 1
n n n n
n n n n
1 1 1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
0
0
1
1
Z
–
–
–
–
n n n n
0 1 0 0
1
1
1
1
1
1
1
1
1
1
1
1
1
J
1
mmmm 1
n n n n 1
v v v v 1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1 1 1 1 1 1 0 1
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
– – – – – – 4
(SP, SP−1) ← gg:SP ← SP−2
– – – – – – 4
SP ← SP+2:rr ← (SP, SP−1)
–
–
*
n n n n *
–
–
1
1
1
1
0 r r r 1
v v v v 1
–
–
*
*
–
–
–
–
Z
–
Z
Z
–
–
*
*
–
–
–
–
–
–
–
–
–
–
*
*
–
–
–
–
–
–
–
–
–
–
*
*
–
–
–
–
–
–
–
–
–
–
*
*
–
–
–
–
–
–
–
–
5
3
4
3
2
2
2
2
3
3
5
6
SP ← SP+2:gg ← (SP, SP−1)
(SP) ← PSW:SP ← SP−1
SP ← SP+1:PSW ← (SP)
PSW ← n
RBS ← 0
RBS ← 1
SP ← SP+d
SP ← SP−d
r↔g
rr ↔ gg
r ↔ (x)
r ↔ (vw)
1
1
1
1
1
1
1
1
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
r ↔ (DE)
r ↔ (HL)
r ↔ (IX)
r ↔ (IY)
r ↔ (IX+d)
r ↔ (IY+d)
r ↔ (SP+d)
r ↔ (HL+d)
r ↔ (HL+C)
SP ← SP+1:r ↔ (SP)
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1 Z – – – – 6
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1 r r r
1 r r r 1 – – – – – 7
v v v v 1 – – – – – 8
1
1
1
1
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
6
6
6
6
8
8
8
8
8
7
1 – – – – – 8
r ↔ (PC+A)
rr ↔ (x+1,x)
rr ↔ (vw+1,vw)
rr ↔ (DE+1,DE)
rr ↔ (HL+1,HL)
rr ↔ (IX+1,IX)
rr ↔ (IY+1,IY)
rr ↔ (IX+d+1, IX+d)
rr ↔ (IY+d+1, IY+d)
rr ↔ (SP+d+1,SP+d)
rr ↔ (HL+d+1,HL+d)
rr ↔ (HL+C+1,HL+C)
SP ← SP+1:rr ↔ (SP+1,SP)
rr ↔ (PC+A+1,PC+A)
rr は WA, BC, DE, HL のみ
gg は IX,IY のみ
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 58
TLCS-870/C1
3.2 演算
オブジェクトコード (2 進 )
ニモニック
CMP A,n
CMP g,n
CMP gg,mn
CMP r,g
CMP rr,gg
CMP r,(x)
CMP r,(vw)
CMP r,(DE)
CMP r,(HL)
CMP r,(IX)
CMP r,(IY)
CMP r,(IX+d)
CMP r,(IY+d)
CMP r,(SP+d)
CMP r,(HL+d)
CMP r,(HL+C)
CMP r,(+SP)
CMP r,(PC+A) 注
CMP (x),n
CMP (vw),n
CMP (DE),n
CMP (HL),n
CMP (IX),n
CMP (IY),n
CMP (IX+d),n
CMP (IY+d),n
CMP (SP+d),n
CMP (HL+d),n
CMP (HL+C),n
CMP (+SP),n
CMP (PC+A),n 注
CMP rr,(x)
CMP rr,(vw)
CMP rr,(DE)
CMP rr,(HL)
CMP rr,(IX)
CMP rr,(IY)
CMP rr,(IX+d)
CMP rr,(IY+d)
CMP rr,(SP+d)
CMP rr,(HL+d)
CMP rr,(HL+C)
CMP rr,(+SP)
CMP rr,(PC+A) 注
ADD A,n
ADD g,n
ADD gg,mn
ADD r,g
ADD rr,gg
ADD r,(x)
ADD r,(vw)
ADD r,(DE)
ADD r,(HL)
ADD r,(IX)
ADD r,(IY)
ADD r,(IX+d)
ADD r,(IY+d)
ADD r,(SP+d)
RA001
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
1
g
g
m
g
g
0
0
1
0
0
1
1
1
1
1
1
1
1
1
g
g
m
g
g
0
0
1
1
1
0
0
0
0
1
1
1
1
1
g
g
m
g
g
0
1
1
0
1
0
1
0
1
0
1
1
0
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
1
1
x
w
1
1
x
w
1
1
x 0 0 r r
w v v v v
Z
Z
r 1 1 1 Z
v v v v Z
Z
Z
Z
Z
C
C
C
C
H
U
H
H
S
S
S
S
V
V
V
V
2
3
4
5
r−g
rr−gg
r−(x)
r−(vw)
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
H
H
H
H
H
H
H
H
H
H
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
3
3
3
3
5
5
5
5
5
4
r−(DE)
r−(HL)
r−(IX)
r−(IY)
r−(IX+d)
r−(IY+d)
r−(SP+d)
r−(HL+d)
r−(HL+C)
SP ← SP+1:r−(SP)
1 1 1 1 0 0 r r
r 1 1 1
0
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x
w
n
0
0
0
0
d
0
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
1
0
1
0
0
1
1
1
n
1
n
1
n
1
n
1
1
1
0
1
1
1
0
0
0
n
0
n
1
n
1
n
1
1
1
1
1
0
1
0
1
0
n
1
n
0
n
1
n
1
0
オペレーション
n n n n
0 1 1 1 n n n n
1 1 1 1 n n n n
0 1 0 0
0
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
サイクル
V
V 2
A−n
V 3
g−n
V 4
gg−mn
n n n n
0 1 1 0
0 1 1 0
x
w
n
0
0
0
0
d
x
w
n
1
1
1
1
d
x
w
n
1
1
1
1
d
x
w
n
0
0
0
0
d
x
w
n
1
1
1
1
d
x
w
n
1
1
1
1
d
x
w
n
1
1
1
1
d
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
1
1
1
1
1
1
1
1
Z
Z
Z
Z
フラグ
C H S
C H S
C H S
C U S
J
Z
n n n n Z
n n n n Z
Z Z C H S V 5
r−(PC+A)
n n n n
v v v v
n n n n Z Z C H S V 4
v v v v Z Z C H S V 6
(x)−n
(vw)−n
n
n
n
n
0
n
n
n
n
0
4
4
4
4
6
(DE)−n
(HL)−n
(IX)−n
(IY)−n
(IX+d)−n
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
1
n
n
n
n
1
n
n
n
n
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
H
H
H
H
H
S
S
S
S
S
V
V
V
V
V
d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(IY+d)−n
d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(SP+d)−n
d d d d
d d d d 0 1 1 0
0 1 1 1 Z Z C H S V 6
(HL+d)−n
0 1 1 0
0 1 1 0
0 1 1 1 n n n n
0 1 1 1 n n n n
n n n n Z Z C H S V 6
n n n n Z Z C H S V 5
(HL+C)−n
SP ← SP+1:(SP)−n
0 1 0 0
1 1 1 1 0 1 1 0
0 1 1 1 n n n n
n n n n Z Z C H S V 6
(PC+A)−n
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 1 1 1 Z Z C U S V 5
v v v v Z Z C U S V 6
rr−(x)
rr−(vw)
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
1
1
1
1
1
1
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
U
U
U
U
U
U
U
U
U
U
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
4
4
4
4
6
6
6
6
6
5
rr−(DE)
rr−(HL)
rr−(IX)
rr−(IY)
rr−(IX+d)
rr−(IY+d)
rr−(SP+d)
rr−(HL+d)
rr−(HL+C)
SP ← SP+1:rr−(SP)
0 1 0 0
1 1 1 1 1 0 r r
r 1 1 1
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
n n n n
0 1 1 0
0 1 1 0
n n n n
0 0 0 1 n n n n
1 0 0 1 n n n n
Z Z C U S V 6
C Z C H S V 2
n n n n C Z C H S V 3
n n n n C Z C U S V 4
rr−(PC+A)
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
0
0
x
w
0
0
x
w
1
1
x 0 0 r r
w v v v v
C
C
r 0 0 1 C
v v v v C
Z
Z
Z
Z
C
C
C
C
H
U
H
H
S
S
S
S
V
V
V
V
2
3
4
5
r ← r+g
rr ← rr+gg
r ← r+(x)
r ← r+(vw)
0
0
0
0
d
d
d
0
0
0
0
d
d
d
r
r
r
r
d
d
d
r
r
r
r
d
d
d
r
r
r
r
d
d
d
0
0
0
0
d
d
d
0
0
0
0
d
d
d
1
1
1
1
d 0 0 r r
d 0 0 r r
d 0 0 r r
C
C
C
C
r 0 0 1 C
r 0 0 1 C
r 0 0 1 C
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
H
H
H
H
H
H
H
S
S
S
S
S
S
S
V
V
V
V
V
V
V
3
3
3
3
5
5
5
r ← r+(DE)
r ← r+(HL)
r ← r+(IX)
r ← r+(IY)
r ← r+(IX+d)
r ← r+(IY+d)
r ← r+(SP+d)
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
0
g
g
m
g
g
0
0
0
0
0
1
1
1
1
1
0
g
g
m
g
g
0
0
0
1
1
0
0
0
0
1
1
g
g
m
g
g
0
1
1
0
1
0
1
0
1
0
Page 59
A ← A+n
g ← g+n
gg ← gg+mn
3.2 演算
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
フラグ
C H S
C H S
C H S
C H S
サイクル
オペレーション
V
V 5
r ← r+(HL+d)
V 5
r ← r+(HL+C)
V 4
SP ← SP+1:r ← r+(SP)
C Z C H S V 5
r ← r+(PC+A)
Z
Z
Z
Z
ADD r,(HL+d)
ADD r,(HL+C)
ADD r,(+SP)
1 1 0 1
1 1 1 0
1 1 1 0
0 1 1 1 d d d d
0 1 1 1 0 0 r r
0 1 1 0 0 0 r r
ADD r,(PC+A) 注
ADD (x),n
0 1 0 0
1 1 1 1 0 0 r r
r 0 0 1
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x x x x
x x x x 0 1 1 0
0 0 0 1 C Z C H S V 6
(x) ← (x)+n
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v C Z C H S V 7
(vw) ← (vw)+n
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)+n
(HL) ← (HL)+n
(IX) ← (IX)+n
(IY) ← (IY)+n
(IX+d) ← (IX+d)+n
ADD (vw),n
ADD (DE),n
ADD (HL),n
ADD (IX),n
ADD (IY),n
ADD (IX+d),n
ADD (IY+d),n
ADD (SP+d),n
ADD (HL+d),n
ADD (HL+C),n
ADD (+SP),n
ADD (PC+A),n 注
ADD rr,(x)
ADD rr,(vw)
ADD rr,(DE)
ADD rr,(HL)
ADD rr,(IX)
ADD rr,(IY)
ADD rr,(IX+d)
ADD rr,(IY+d)
ADD rr,(SP+d)
ADD rr,(HL+d)
ADD rr,(HL+C)
ADD rr,(+SP)
ADD rr,(PC+A) 注
ADDC A,n
ADDC g,n
ADDC gg,mn
ADDC r,g
ADDC rr,gg
ADDC r,(x)
ADDC r,(vw)
ADDC r,(DE)
ADDC r,(HL)
ADDC r,(IX)
ADDC r,(IY)
ADDC r,(IX+d)
ADDC r,(IY+d)
ADDC r,(SP+d)
ADDC r,(HL+d)
ADDC r,(HL+C)
ADDC r,(+SP)
ADDC r,(PC+A) 注
ADDC (x),n
ADDC (vw),n
ADDC (DE),n
ADDC (HL),n
ADDC (IX),n
ADDC (IY),n
ADDC (IX+d),n
ADDC (IY+d),n
ADDC (SP+d),n
ADDC (HL+d),n
RA001
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
0
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
1
0
1
0
1
0
n
1
n
0
n
1
n
1
0
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
d d d d 0 0 r r
r 0 0 1
r 0 0 1
J
r 0 0 1 C
C
C
w
n
0
0
0
0
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
0
n
n
n
n
0
n
n
n
n
1
C
C
C
C
C
Z
Z
Z
Z
Z
C
C
C
C
C
H
H
H
H
H
S
S
S
S
S
V
V
V
V
V
d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(IY+d) ← (IY+d)+n
d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(SP+d) ← (SP+d)+n
d d d d
d d d d 0 1 1 0
0 0 0 1 C Z C H S V 7
(HL+d) ← (HL+d)+n
0 1 1 0
0 1 1 0
0 0 0 1 n n n n
0 0 0 1 n n n n
n n n n C Z C H S V 7
n n n n C Z C H S V 6
(HL+C) ← (HL+C)+n
SP ← SP+1:(SP) ← (SP)+n
0 1 0 0
1 1 1 1 0 1 1 0
0 0 0 1 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)+n
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 0 0 1 C Z C U S V 5
v v v v C Z C U S V 6
rr ← rr+(x+1, x)
rr ← rr+(vw+1, vw)
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
0
0
0
0
1
1
1
1
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
U
U
U
U
U
U
U
U
U
U
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
4
4
4
4
6
6
6
6
6
5
rr ← rr+(DE+1, DE)
rr ← rr+(HL+1, HL)
rr ← rr+(IX+1, IX)
rr ← rr+(IY+1, IY)
rr ← rr+(IX+d+1, IX+d)
rr ← rr+(IY+d+1, IY+d)
rr ← rr+(SP+d+1, SP+d)
rr ← rr+(HL+d+1, HL+d)
rr ← rr+(HL+C+1, HL+C)
SP ← SP+1:rr ← rr+(SP+1, SP)
0 1 0 0
1 1 1 1 1 0 r r
r 0 0 1
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
n n n n
0 1 1 0
0 1 1 0
n n n n
0 0 0 0 n n n n
1 0 0 0 n n n n
C Z C U S V 6
C Z C H S V 2
n n n n C Z C H S V 3
n n n n C Z C U S V 4
rr ← rr+(PC+A+1, PC+A)
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
0
0
x
w
0
0
x
w
0
0
x 0 0 r r
w v v v v
C
C
r 0 0 0 C
v v v v C
Z
Z
Z
Z
C
C
C
C
H
U
H
H
S
S
S
S
V
V
V
V
2
3
4
5
r ← r+g+CF
rr ← rr+gg+CF
r ← r+(x)+CF
r ← r+(vw)+CF
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
H
H
H
H
H
H
H
H
H
H
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
3
3
3
3
5
5
5
5
5
4
r ← r+(DE)+CF
r ← r+(HL)+CF
r ← r+(IX)+CF
r ← r+(IY)+CF
r ← r+(IX+d)+CF
r ← r+(IY+d)+CF
r ← r+(SP+d)+CF
r ← r+(HL+d)+CF
r ← r+(HL+C)+CF
SP ← SP+1:r ← r+(SP)+CF
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
0
g
g
m
g
g
0
0
0
0
0
1
1
1
1
1
1
1
1
0
g
g
m
g
g
0
0
0
1
1
0
0
0
0
1
1
1
1
0
g
g
m
g
g
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
0
0
0
0
0
0
0
0
r ← r+(PC+A)+CF
0 1 0 0
1 1 1 1 0 0 r r
r 0 0 0
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
x x x x
x x x x 0 1 1 0
0 0 0 0 C Z C H S V 6
(x) ← (x)+n+CF
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v C Z C H S V 7
(vw) ← (vw)+n+CF
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)+n+CF
(HL) ← (HL)+n+CF
(IX) ← (IX)+n+CF
(IY) ← (IY)+n+CF
(IX+d) ← (IX+d)+n+CF
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
0
n
0
0
0
0
1
1
1
n
1
n
1
n
1
0
n
0
0
1
1
0
0
0
n
0
n
1
n
1
0
n
1
0
0
1
0
1
0
n
1
n
0
n
1
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
C Z C H S V 5
A ← A+n+CF
g ← g+n+CF
gg ← gg+mn+CF
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
0
n
n
n
n
0
n
n
n
n
0
C
C
C
C
C
Z
Z
Z
Z
Z
C
C
C
C
C
H
H
H
H
H
S
S
S
S
S
V
V
V
V
V
d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(IY+d) ← (IY+d)+n+CF
d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(SP+d) ← (SP+d)+n+CF
d d d d
d d d d 0 1 1 0
0 0 0 0 C Z C H S V 7
(HL+d) ← (HL+d)+n+CF
Page 60
TLCS-870/C1
ADDC (HL+C),n
ADDC (+SP),n
ADDC (PC+A),n 注
ADDC rr,(x)
ADDC rr,(vw)
ADDC rr,(DE)
ADDC rr,(HL)
ADDC rr,(IX)
ADDC rr,(IY)
ADDC rr,(IX+d)
ADDC rr,(IY+d)
ADDC rr,(SP+d)
ADDC rr,(HL+d)
ADDC rr,(HL+C)
ADDC rr,(+SP)
ADDC rr,(PC+A) 注
SUB A,n
SUB g,n
SUB gg,mn
SUB r,g
SUB rr,gg
SUB r,(x)
SUB r,(vw)
SUB r,(DE)
SUB r,(HL)
SUB r,(IX)
SUB r,(IY)
SUB r,(IX+d)
SUB r,(IY+d)
SUB r,(SP+d)
SUB r,(HL+d)
SUB r,(HL+C)
SUB r,(+SP)
SUB r,(PC+A) 注
SUB (x),n
SUB (vw),n
SUB (DE),n
SUB (HL),n
SUB (IX),n
SUB (IY),n
SUB (IX+d),n
SUB (IY+d),n
SUB (SP+d),n
SUB (HL+d),n
SUB (HL+C),n
SUB (+SP),n
SUB (PC+A),n 注
SUB rr,(x)
SUB rr,(vw)
SUB rr,(DE)
SUB rr,(HL)
SUB rr,(IX)
SUB rr,(IY)
SUB rr,(IX+d)
SUB rr,(IY+d)
SUB rr,(SP+d)
SUB rr,(HL+d)
SUB rr,(HL+C)
SUB rr,(+SP)
SUB rr,(PC+A) 注
SUBB A,n
RA001
フラグ
サイクル
J Z C H S V
オブジェクトコード (2 進 )
ニモニック
オペレーション
n n n n
1 1 1 0
1 1 1 0
n n n n
0 1 1 1 0 1 1 0
0 1 1 0 0 1 1 0
0 0 0 0 n n n n
0 0 0 0 n n n n
n n n n C Z C H S V 7
n n n n C Z C H S V 6
0 1 0 0
1 1 1 1 0 1 1 0
0 0 0 0 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)+n+CF
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 0 0 0 C Z C U S V 5
v v v v C Z C U S V 6
rr ← rr+(x+1, x)+CF
rr ← rr+(vw+1, vw)+CF
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
0
0
0
0
0
0
0
0
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
U
U
U
U
U
U
U
U
U
U
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
4
4
4
4
6
6
6
6
6
5
(HL+C) ← (HL+C)+n+CF
SP ← SP+1:(SP) ← (SP)+n+CF
rr ← rr+(DE+1, DE)+CF
rr ← rr+(HL+1, HL)+CF
rr ← rr+(IX+1, IX)+CF
rr ← rr+(IY+1, IY)+CF
rr ← rr+(IX+d+1, IX+d)+CF
rr ← rr+(IY+d+1, IY+d)+CF
rr ← rr+(SP+d+1, SP+d)+CF
rr ← rr+(HL+d+1, HL+d)+CF
rr ← rr+(HL+C+1, HL+C)+CF
SP ← SP+1:rr ← rr+(SP+1, SP)+CF
0 1 0 0
1 1 1 1 1 0 r r
r 0 0 0
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
n n n n
0 1 1 0
0 1 1 0
n n n n
0 0 1 1 n n n n
1 0 1 1 n n n n
C Z C U S V 6
C Z C H S V 2
n n n n C Z C H S V 3
n n n n C Z C U S V 4
rr ← rr+(PC+A+1, PC+A)+CF
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
0
0
x
w
1
1
x
w
1
1
x 0 0 r r
w v v v v
C
C
r 0 1 1 C
v v v v C
Z
Z
Z
Z
C
C
C
C
H
U
H
H
S
S
S
S
V
V
V
V
2
3
4
5
r ← r-g
rr ← rr-gg
r ← r-(x)
r ← r-(vw)
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
H
H
H
H
H
H
H
H
H
H
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
3
3
3
3
5
5
5
5
5
4
r ← r-(DE)
r ← r-(HL)
r ← r-(IX)
r ← r-(IY)
r ← r-(IX+d)
r ← r-(IY+d)
r ← r-(SP+d)
r ← r-(HL+d)
r ← r-(HL+C)
SP ← SP+1:r ← r-(SP)
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
0
g
g
m
g
g
0
0
0
0
0
1
1
1
1
1
1
1
1
1
g
g
m
g
g
0
0
1
1
1
0
0
0
0
1
1
1
1
1
g
g
m
g
g
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
1
1
1
1
1
1
1
1
r ← r-(PC+A)
0 1 0 0
1 1 1 1 0 0 r r
r 0 1 1
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x x x x
x x x x 0 1 1 0
0 0 1 1 C Z C H S V 6
(x) ← (x)-n
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v C Z C H S V 7
(vw) ← (vw)-n
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)-n
(HL) ← (HL)-n
(IX) ← (IX)-n
(IY) ← (IY)-n
(IX+d) ← (IX+d)-n
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
0
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
1
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
1
0
1
0
1
0
n
1
n
0
n
1
n
1
0
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
w
n
1
1
1
1
d
C Z C H S V 5
A ← A-n
g ← g-n
gg ← gg-mn
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
0
n
n
n
n
1
n
n
n
n
1
C
C
C
C
C
Z
Z
Z
Z
Z
C
C
C
C
C
H
H
H
H
H
S
S
S
S
S
V
V
V
V
V
d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(IY+d) ← (IY+d)-n
d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(SP+d) ← (SP+d)-n
d d d d
d d d d 0 1 1 0
0 0 1 1 C Z C H S V 7
(HL+d) ← (HL+d)-n
0 1 1 0
0 1 1 0
0 0 1 1 n n n n
0 0 1 1 n n n n
n n n n C Z C H S V 7
n n n n C Z C H S V 6
(HL+C) ← (HL+C)-n
SP ← SP+1:(SP) ← (SP)-n
0 1 0 0
1 1 1 1 0 1 1 0
0 0 1 1 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)-n
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 0 1 1 C Z C U S V 5
v v v v C Z C U S V 6
rr ← rr-(x+1, x)
rr ← rr-(vw+1, vw)
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0 1 0 0
1 1 1 1 1 0 r r
r 0 1 1
0 1 1 0
0 0 1 0 n n n n
n n n n
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
1
1
1
1
1
1
1
1
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
U
U
U
U
U
U
U
U
U
U
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
4
4
4
4
6
6
6
6
6
5
C Z C U S V 6
C Z C H S V 2
Page 61
rr ← rr-(DE+1, DE)
rr ← rr-(HL+1, HL)
rr ← rr-(IX+1, IX)
rr ← rr-(IY+1, IY)
rr ← rr-(IX+d+1, IX+d)
rr ← rr-(IY+d+1, IY+d)
rr ← rr-(SP+d+1, SP+d)
rr ← rr-(HL+d+1, HL+d)
rr ← rr-(HL+C+1, HL+C)
SP ← SP+1:rr ← rr-(SP+1, SP)
rr ← rr-(PC+A+1, PC+A)
A ← A-n-CF
3.2 演算
TLCS-870/C1
SUBB g,n
SUBB gg,mn
SUBB r,g
SUBB rr,gg
SUBB r,(x)
SUBB r,(vw)
SUBB r,(DE)
SUBB r,(HL)
SUBB r,(IX)
SUBB r,(IY)
SUBB r,(IX+d)
SUBB r,(IY+d)
SUBB r,(SP+d)
SUBB r,(HL+d)
SUBB r,(HL+C)
SUBB r,(+SP)
SUBB r,(PC+A) 注
SUBB (x),n
SUBB (vw),n
SUBB (DE),n
SUBB (HL),n
SUBB (IX),n
SUBB (IY),n
SUBB (IX+d),n
SUBB (IY+d),n
SUBB (SP+d),n
SUBB (HL+d),n
SUBB (HL+C),n
SUBB (+SP),n
SUBB (PC+A),n 注
SUBB rr,(x)
SUBB rr,(vw)
SUBB rr,(DE)
SUBB rr,(HL)
SUBB rr,(IX)
SUBB rr,(IY)
SUBB rr,(IX+d)
SUBB rr,(IY+d)
SUBB rr,(SP+d)
SUBB rr,(HL+d)
SUBB rr,(HL+C)
SUBB rr,(+SP)
0 1 1 0
0 1 1 0
0 0 1 0 n n n n
1 0 1 0 n n n n
フラグ
サイクル
オペレーション
J Z C H S V
n n n n C Z C H S V 3
g ← g-n-CF
n n n n C Z C U S V 4
gg ← gg-mn-CF
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
0
0
x
w
1
1
x
w
0
0
x 0 0 r r
w v v v v
C
C
r 0 1 0 C
v v v v C
Z
Z
Z
Z
C
C
C
C
H
U
H
H
S
S
S
S
V
V
V
V
2
3
4
5
r ← r-g-CF
rr ← rr-gg-CF
r ← r-(x)-CF
r ← r-(vw)-CF
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
H
H
H
H
H
H
H
H
H
H
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
3
3
3
3
5
5
5
5
5
4
r ← r-(DE)-CF
r ← r-(HL)-CF
r ← r-(IX)-CF
r ← r-(IY)-CF
r ← r-(IX+d)-CF
r ← r-(IY+d)-CF
r ← r-(SP+d)-CF
r ← r-(HL+d)-CF
r ← r-(HL+C)-CF
SP ← SP+1:r ← r-(SP)-CF
オブジェクトコード (2 進 )
ニモニック
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
g
g
m
g
g
0
0
0
0
0
1
1
1
1
1
1
1
1
g
g
m
g
g
0
0
1
1
1
0
0
0
0
1
1
1
1
g
g
m
g
g
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
1
1
1
1
0
0
0
0
1 1 1 1 0 0 r r
r 0 1 0
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x x x x
x x x x 0 1 1 0
0 0 1 0 C Z C H S V 6
(x) ← (x)-n-CF
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v C Z C H S V 7
(vw) ← (vw)-n-CF
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)-n-CF
(HL) ← (HL)-n-CF
(IX) ← (IX)-n-CF
(IY) ← (IY)-n-CF
(IX+d) ← (IX+d)-n-CF
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
0
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
1
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
0
0
1
0
1
0
n
1
n
0
n
1
n
1
0
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
C Z C H S V 5
r ← r-(PC+A)-CF
0 1 0 0
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
0
n
n
n
n
1
n
n
n
n
0
C
C
C
C
C
Z
Z
Z
Z
Z
C
C
C
C
C
H
H
H
H
H
S
S
S
S
S
V
V
V
V
V
d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(IY+d) ← (IY+d)-n-CF
d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(SP+d) ← (SP+d)-n-CF
d d d d
d d d d 0 1 1 0
0 0 1 0 C Z C H S V 7
(HL+d) ← (HL+d)-n-CF
0 1 1 0
0 1 1 0
0 0 1 0 n n n n
0 0 1 0 n n n n
n n n n C Z C H S V 7
n n n n C Z C H S V 6
(HL+C) ← (HL+C)-n-CF
SP ← SP+1:(SP) ← (SP)-n-CF
0 1 0 0
1 1 1 1 0 1 1 0
0 0 1 0 n n n n
n n n n C Z C H S V 7
(PC+A) ← (PC+A)-n-CF
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 0 1 0 C Z C U S V 5
v v v v C Z C U S V 6
rr ← rr-(x+1, x)-CF
rr ← rr-(vw+1,vw)-CF
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
0
0
0
0
1
1
1
1
0
0
0
0
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C
C
C
C
C
C
C
C
U
U
U
U
U
U
U
U
U
U
S
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
4
4
4
4
6
6
6
6
6
5
rr ← rr-(DE+1, DE)-CF
rr ← rr-(HL+1, HL)-CF
rr ← rr-(IX+1, IX)-CF
rr ← rr-(IY+1, IY+d)-CF
rr ← rr-(IX+d+1, IX+d)-CF
rr ← rr-(IY+d+1, IY+d)-CF
rr ← rr-(SP+d+1, SP+d)-CF
rr ← rr-(HL+d+1, HL+d)-CF
rr ← rr-(HL+C+1, HL+C)-CF
SP ← SP+1:rr ← rr-(SP+1, SP)-CF
0 1 0 0
1 1 1 1 1 0 r r
r 0 1 0
n n n n
0 1 1 0
0 1 1 0
n n n n
0 1 0 0 n n n n
1 1 0 0 n n n n
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
1
1
x
w
0
0
x
w
0
0
x 0 0 r r
w v v v v
Z
Z
r 1 0 0 Z
v v v v Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
2
3
4
5
r ← r&g
rr ← rr&gg
r ← r&(x)
r ← r&(vw)
AND r,(DE)
AND r,(HL)
AND r,(IX)
AND r,(IY)
AND r,(IX+d)
AND r,(IY+d)
AND r,(SP+d)
AND r,(HL+d)
AND r,(HL+C)
AND r,(+SP)
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
C Z C U S V 6
Z Z – – – – 2
n n n n Z Z – – – – 3
n n n n Z Z – – – – 4
rr ← rr-(PC+A+1, PC+A)-CF
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
3
3
3
3
5
5
5
5
5
4
r ← r&(DE)
r ← r&(HL)
r ← r&(IX)
r ← r&(IY)
r ← r&(IX+d)
r ← r&(IY+d)
r ← r&(SP+d)
r ← r&(HL+d)
r ← r&(HL+C)
SP ← SP+1:r ← r&(SP)
AND r,(PC+A) 注
0 1 0 0
SUBB rr,(PC+A) 注
AND A,n
AND g,n
AND gg,mn
AND r,g
AND rr,gg
AND r,(x)
AND r,(vw)
RA001
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
1
g
g
m
g
g
0
0
1
0
0
1
1
1
1
1
1
1
1
0
g
g
m
g
g
0
0
0
1
1
0
0
0
0
1
1
1
1
0
g
g
m
g
g
0
1
0
0
1
0
1
0
1
0
1
1
0
1 1 1 1 0 0 r r
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r 1 0 0
r
r
r
r
1
1
1
1
0
0
0
0
0
0
0
0
Z Z – – – – 5
Page 62
A ← A&n
g ← g&n
gg ← gg&mn
r ← r&(PC+A)
TLCS-870/C1
AND (x),n
AND (vw),n
AND (DE),n
AND (HL),n
AND (IX),n
AND (IY),n
AND (IX+d),n
AND (IY+d),n
AND (SP+d),n
AND (HL+d),n
AND (HL+C),n
AND (+SP),n
AND (PC+A),n 注
AND rr,(x)
AND rr,(vw)
AND rr,(DE)
AND rr,(HL)
AND rr,(IX)
AND rr,(IY)
AND rr,(IX+d)
AND rr,(IY+d)
AND rr,(SP+d)
AND rr,(HL+d)
AND rr,(HL+C)
AND rr,(+SP)
AND rr,(PC+A) 注
OR A,n
OR g,n
OR gg,mn
OR r,g
OR rr,gg
OR r,(x)
OR r,(vw)
OR r,(DE)
OR r,(HL)
OR r,(IX)
OR r,(IY)
OR r,(IX+d)
OR r,(IY+d)
OR r,(SP+d)
OR r,(HL+d)
OR r,(HL+C)
OR r,(+SP)
OR r,(PC+A) 注
OR (x),n
OR (vw),n
OR (DE),n
OR (HL),n
OR (IX),n
OR (IY),n
OR (IX+d),n
OR (IY+d),n
OR (SP+d),n
OR (HL+d),n
OR (HL+C),n
OR (+SP),n
RA001
フラグ
サイクル
J Z C H S V
オブジェクトコード (2 進 )
ニモニック
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
0
n
0
1
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
0
0
1
0
1
0
n
1
n
0
n
1
n
1
0
オペレーション
x x x x
x x x x 0 1 1 0
0 1 0 0 Z Z – – – – 6
(x) ← (x)&n
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v Z Z – – – – 7
(vw) ← (vw)&n
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)&n
(HL) ← (HL)&n
(IX) ← (IX)&n
(IY) ← (IY)&n
(IX+d) ← (IX+d)&n
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
0
0
0
0
d
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
1
n
n
n
n
0
n
n
n
n
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(IY+d) ← (IY+d)&n
d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(SP+d) ← (SP+d)&n
d d d d
d d d d 0 1 1 0
0 1 0 0 Z Z – – – – 7
(HL+d) ← (HL+d)&n
0 1 1 0
0 1 1 0
0 1 0 0 n n n n
0 1 0 0 n n n n
n n n n Z Z – – – – 7
n n n n Z Z – – – – 6
(HL+C) ← (HL+C)&n
SP ← SP+1:(SP) ← (SP)&n
0 1 0 0
1 1 1 1 0 1 1 0
0 1 0 0 n n n n
n n n n Z Z – – – – 7
(PC+A) ← (PC+A)&n
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 1 0 0 Z Z – – – – 5
v v v v Z Z – – – – 6
rr ← rr&(x+1,x)
rr ← rr&(vw+1,vw)
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
0
0
0
0
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
rr ← rr&(DE+1,DE)
rr ← rr&(HL+1,HL)
rr ← rr&(IX+1,IX)
rr ← rr&(IY+1,IY)
rr ← rr&(IX+d+1,IX+d)
rr ← rr&(IY+d+1,IY+d)
rr ← rr&(SP+d+1,SP+d)
rr ← rr&(HL+d+1,HL+d)
rr ← rr&(HL+C+1,HL+C)
SP ← SP+1:rr ← rr&(SP+1,SP)
0 1 0 0
1 1 1 1 1 0 r r
r 1 0 0
0 1 1 0 n n n n
1 g g g 0 1 1 0
1 g g g 0 1 1 0
n n n n
0 1 1 0 n n n n
1 1 1 0 n n n n
Z Z – – – – 6
Z Z – – – – 2
n n n n Z Z – – – – 3
n n n n Z Z – – – – 4
rr ← rr&(PC+A+1,PC+A)
0 1 1 0
1 1 1 0
1 1 1 0
m m mm
mmmm
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
Z
Z
r 1 1 0 Z
v v v v Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
2
3
4
5
r ← r⏐g
rr ← rr⏐gg
r ← r⏐(x)
r ← r⏐(vw)
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
3
3
3
3
5
5
5
5
5
4
r ← r⏐(DE)
r ← r⏐(HL)
r ← r⏐(IX)
r ← r⏐(IY)
r ← r⏐(IX+d)
r ← r⏐(IY+d)
r ← r⏐(SP+d)
r ← r⏐(HL+d)
r ← r⏐(HL+C)
SP ← SP+1:r ← r⏐(SP)
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
g
g
0
0
1
0
0
1
1
1
1
1
1
1
1
g
g
0
0
1
1
1
0
0
0
0
1
1
1
1
g
g
0
1
0
0
1
0
1
0
1
0
1
1
0
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
1
1
x
w
1
1
x
w
0
0
x 0 0 r r
w v v v v
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
1
1
1
1
0
0
0
0
r ← r⏐(PC+A)
0 1 0 0
1 1 1 1 0 0 r r
r 1 1 0
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x x x x
x x x x 0 1 1 0
0 1 1 0 Z Z – – – – 6
(x) ← (x)⏐n
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v Z Z – – – – 7
(vw) ← (vw)⏐n
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE)⏐n
(HL) ← (HL)⏐n
(IX) ← (IX)⏐n
(IY) ← (IY)⏐n
(IX+d) ← (IX+d)⏐n
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
1
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
1
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
0
0
1
0
1
0
n
1
n
0
n
1
n
1
0
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
Z Z – – – – 5
A ← A⏐n
g ← g⏐n
gg ← gg⏐mn
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(IY+d) ← (IY+d)⏐n
d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(SP+d) ← (SP+d)⏐n
d d d d
d d d d 0 1 1 0
0 1 1 0 Z Z – – – – 7
(HL+d) ← (HL+d)⏐n
0 1 1 0
0 1 1 0
0 1 1 0 n n n n
0 1 1 0 n n n n
n n n n Z Z – – – – 7
n n n n Z Z – – – – 6
(HL+C) ← (HL+C)⏐n
SP ← SP+1:(SP) ← (SP)⏐n
Page 63
3.2 演算
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
OR (PC+A),n 注
OR rr,(x)
OR rr,(vw)
OR rr,(DE)
OR rr,(HL)
OR rr,(IX)
OR rr,(IY)
OR rr,(IX+d)
OR rr,(IY+d)
OR rr,(SP+d)
OR rr,(HL+d)
OR rr,(HL+C)
OR rr,(+SP)
OR rr,(PC+A) 注
XOR A,n
XOR g,n
XOR gg,mn
XOR r,g
XOR rr,gg
XOR r,(x)
XOR r,(vw)
XOR r,(DE)
XOR r,(HL)
XOR r,(IX)
XOR r,(IY)
XOR r,(IX+d)
XOR r,(IY+d)
XOR r,(SP+d)
XOR r,(HL+d)
XOR r,(HL+C)
XOR r,(+SP)
XOR r,(PC+A) 注
XOR (x),n
XOR (vw),n
XOR (DE),n
XOR (HL),n
XOR (IX),n
XOR (IY),n
XOR (IX+d),n
0 1 0 0
1 1 1 1 0 1 1 0
0 1 1 0 n n n n
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
フラグ
サイクル
オペレーション
J Z C H S V
n n n n Z Z – – – – 7
(PC+A) ← (PC+A)⏐n
r 1 1 0 Z Z – – – – 5
rr ← rr⏐(x+1,x)
v v v v Z Z – – – – 6
rr ← rr⏐(vw+1,vw)
r
r
r
r
1
1
1
1
1
1
1
1
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
rr ← rr⏐(DE+1,DE)
rr ← rr⏐(HL+1,HL)
rr ← rr⏐(IX+1,IX)
rr ← rr⏐(IY+1,IY)
rr ← rr⏐(IX+d+1,IX+d)
rr ← rr⏐(IY+d+1,IY+d)
rr ← rr⏐(SP+d+1,SP+d)
rr ← rr⏐(HL+d+1,HL+d)
rr ← rr⏐(HL+C+1,HL+C)
SP ← SP+1:rr ← rr⏐(SP+1,SP)
0 1 0 0
1 1 1 1 1 0 r r
r 1 1 0
0
1
1
m
1
1
0
0
r
0
0
0
0
0
0
0
0
0
0
n n n n
0 1 1 0
0 1 1 0
n n n n
0 1 0 1 n n n n
1 1 0 1 n n n n
Z Z – – – – 6
Z Z – – – – 2
n n n n Z Z – – – – 3
n n n n Z Z – – – – 4
rr ← rr⏐(PC+A+1,PC+A)
0
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
x
w
0
0
x
w
r
r
x
w
r
r
x
w
r
r
x
w
1
1
x
w
0
0
x
w
1
1
x 0 0 r r
w v v v v
Z
Z
r 1 0 1 Z
v v v v Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
2
3
4
5
r←r^g
rr ← rr ^ gg
r ← r ^ (x)
r ← r ^ (vw)
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
3
3
3
3
5
5
5
5
5
4
r ← r ^ (DE)
r ← r ^(HL)
r ← r ^ (IX)
r ← r ^ (IY)
r ← r ^ (IX+d)
r ← r ^ (IY+d)
r ← r ^ (SP+d)
r ← r ^ (HL+d)
r ← r ^ (HL+C)
SP ← SP+1:r ← r ^ (SP)
1
1
1
m
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
m
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
0
m
0
0
0
0
r
0
0
0
0
1
1
1
1
0
0
1
g
g
m
g
g
0
0
1
0
0
1
1
1
1
1
1
1
1
0
g
g
m
g
g
0
0
0
1
1
0
0
0
0
1
1
1
1
1
g
g
m
g
g
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
r
r
r
r
r
r
r
r
r
r
r
r
1
1
1
1
0
0
0
0
1
1
1
1
r ← r ^ (PC+A)
0 1 0 0
1 1 1 1 0 0 r r
r 1 0 1
1
n
1
0
1
1
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
0
0
0
0
0
n
0
n
0
n
0
n
0
0
x x x x
x x x x 0 1 1 0
0 1 0 1 Z Z – – – – 6
(x) ← (x) ^ n
w
n
0
0
0
0
d
w
n
0
0
0
0
d
v v v v
v v v v Z Z – – – – 7
(vw) ← (vw) ^ n
n
n
n
n
0
n
n
n
n
0
5
5
5
5
7
(DE) ← (DE) ^ n
(HL) ← (HL) ^ n
(IX) ← (IX) ^ n
(IY) ← (IY) ^ n
(IX+d) ← (IX+d) ^ n
1
n
1
1
1
1
1
1
1
n
1
n
1
n
1
n
1
1
1
n
1
1
1
1
1
1
0
n
0
n
0
n
0
n
1
1
0
n
0
0
0
0
0
0
1
n
1
n
1
n
1
n
0
0
0
n
0
1
0
0
1
1
1
n
1
n
1
n
1
n
1
1
0
n
0
0
1
1
0
0
0
n
0
n
1
n
1
n
1
1
0
n
1
1
0
1
0
1
0
n
1
n
0
n
1
n
1
0
w
n
1
1
1
1
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
w
n
0
0
0
0
d
w
n
1
1
1
1
d
Z Z – – – – 5
A←A^n
g←g^n
gg ← gg ^ mn
n
n
n
n
1
n
n
n
n
1
n
n
n
n
0
n
n
n
n
1
n
n
n
n
0
n
n
n
n
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(IY+d) ← (IY+d) ^ n
d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(SP+d) ← (SP+d) ^n
d d d d
d d d d 0 1 1 0
0 1 0 1 Z Z – – – – 7
(HL+d) ← (HL+d) ^ n
0 1 1 0
0 1 1 0
0 1 0 1 n n n n
0 1 0 1 n n n n
n n n n Z Z – – – – 7
n n n n Z Z – – – – 6
(HL+C) ← (HL+C) ^n
SP ← SP+1:(SP) ← (SP) ^n
0 1 0 0
1 1 1 1 0 1 1 0
0 1 0 1 n n n n
n n n n Z Z – – – – 7
(PC+A) ← (PC+A) ^ n
0
0
r
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 0 r r
w w w w v v v v
r 1 0 1 Z Z – – – – 5
v v v v Z Z – – – – 6
rr ← rr ^ (x+1,x)
rr ← rr ^ (vw+1,vw)
XOR rr,(DE)
XOR rr,(HL)
XOR rr,(IX)
XOR rr,(IY)
XOR rr,(IX+d)
XOR rr,(IY+d)
XOR rr,(SP+d)
XOR rr,(HL+d)
XOR rr,(HL+C)
XOR rr,(+SP)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
d
d
d
d
1
1
r
r
r
r
d
d
d
d
r
r
XOR rr,(PC+A) 注
INC r
INC rr
INC (x)
0 1 0 0
1 1 1 1 1 0 r r
0 0 1 0
0 0 1 1
1 1 1 0
0 r r r
0 r r r
0 0 0 0 x x x x
XOR (IY+d),n
XOR (SP+d),n
XOR (HL+d),n
XOR (HL+C),n
XOR (+SP),n
XOR (PC+A),n 注
XOR rr,(x)
XOR rr,(vw)
RA001
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
r
1
1
1
1
0
0
0
0
1
1
0
0
r
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
d
d
d
d
0
0
r
r
r
r
d
d
d
d
r
r
r
r
r
r
d
d
d
d
r
r
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
0
0
0
0
r
r
r
r
r
r
r
r
r 1 0 1
x x x x 1 1 1 1
Page 64
r
r
r
r
1
1
1
1
0
0
0
0
1
1
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
Z Z – – – – 6
C Z – – – – 1
C Z – – – – 2
0 0 0 0 C Z – – – – 5
rr ← rr ^ (DE+1,DE)
rr ← rr ^ (HL+1,HL)
rr ← rr ^(IX+1,IX)
rr ← rr ^ (IY+1,IY)
rr ← rr ^ (IX+d+1,IX+d)
rr ← rr ^ (IY+d+1,IY+d)
rr ← rr ^ (SP+d+1,SP+d)
rr ← rr ^ (HL+d+1,HL+d)
rr ← rr ^ (HL+C+1,HL+C)
SP ← SP+1:rr ← rr ^ (SP+1,SP)
rr ← rr ^ (PC+A+1,PC+A)
r ← r+1
rr ← rr+1
(x) ← (x)+1
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
INC (vw)
INC (DE)
INC (HL)
INC (IX)
INC (IY)
INC (IX+d)
INC (IY+d)
INC (SP+d)
INC (HL+d)
INC (HL+C)
INC (+SP)
INC (PC+A) 注
DEC r
DEC rr
DEC (x)
DEC (vw)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
0
0
0
0
1
1
1
1
1
0
0
1
0
1
0
1
0
1
1
0
w w w w
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
フラグ
サイクル
オペレーション
J Z C H S V
v v v v C Z – – – – 6
(vw) ← (vw)+1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
(PC+A) ← (PC+A)+1
1 1 1 1 1 1 1 1
DEC (DE)
DEC (HL)
DEC (IX)
DEC (IY)
DEC (IX+d)
DEC (IY+d)
DEC (SP+d)
DEC (HL+d)
DEC (HL+C)
DEC (+SP)
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
DEC (PC+A) 注
DAA g
DAS g
MUL W,A
MUL B,C
MUL D,E
MUL H,L
DIV WA,C
DIV DE,C
DIV HL,C
NEG CS,gg
0 1 0 0
1 1 1 1 1 1 1 1
1 0 0 0
C Z – – – – 6
(PC+A) ← (PC+A)−1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
1
C
C
Z
Z
Z
Z
Z
Z
Z
1
g を十進補正 ( 加算後 )
g を十進補正 ( 減算後 )
WA ← W × A
BC ← B × C
DE ← D × E
HL ← H × L
A ← WA ÷ C,W ← 余り
E ← DE ÷ C,D ← 余り
L ← HL ÷ C,H ← 余り
if CF = 1 then gg ← 0-gg else null
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
r
r
0
0
0
0
0
1
1
1
1
1
1
1
1
g
g
0
0
0
0
0
0
0
g
r
r
0
0
0
1
1
0
0
0
0
1
1
1
1
g
g
0
0
1
1
0
1
1
g
r
r
0
1
0
0
1
0
1
0
1
0
1
1
0
g
g
0
1
0
1
0
0
1
g
C Z – – – – 6
(DE) ← (DE)+1
(HL) ← (HL)+1
(IX) ← (IX)+1
(IY) ← (IY)+1
(IX+d) ← (IX+d)+1
(IY+d) ← (IY+d)+1
(SP+d) ← (SP+d)+1
(HL+d) ← (HL+d)+1
(HL+C) ← (HL+C)+1
SP ← SP+1:(SP) ← (SP)+1
0 1 0 0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0 0 0 0
C
C
C
C
C
C
C
C
C
C
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
d
d
d
d
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
C
C
1 0 0 0 C
v v v v C
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
1
2
5
6
r ← r−1
rr ← rr−1
(x) ← (x)−1
(vw) ← (vw)−1
C
C
C
C
C
C
C
C
C
C
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
(DE) ← (DE)−1
(HL) ← (HL)−1
(IX) ← (IX)−1
(IY) ← (IY)−1
(IX+d) ← (IX+d)−1
(IY+d) ← (IY+d)−1
(SP+d) ← (SP+d)−1
(HL+d) ← (HL+d)−1
(HL+C) ← (HL+C)−1
SP ← SP+1:(SP) ← (SP)−1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
–
C
C
–
–
–
–
C
C
C
–
H
H
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
2
2
13
13
13
13
13
13
13
3
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 65
3.2 演算
TLCS-870/C1
RA001
Page 66
TLCS-870/C1
3.3 シフト、ローテート、ニブル処理
フラグ
サイ
J Z C H S V クル
オブジェクトコード (2 進 )
ニモニック
SHLC g
1 1 1 0
1 g g g 1 1 1 1
0 1 0 0
C Z * – – – 2
SHRC g
1 1 1 0
1 g g g 1 1 1 1
0 1 0 1
C Z * – – – 2
ROLC g
1 1 1 0
1 g g g 1 1 1 1
0 1 1 0
C Z * – – – 2
RORC g
1 1 1 0
1 g g g 1 1 1 1
0 1 1 1
C Z * – – – 2
SHLCA gg
1 1 1 0
1 g g g 1 1 1 1
0 0 0 0
C Z * – S V 3
オペレーション
7654321 0
CF
0
7654321 0
0
CF
CF
7654321 0
7654321 0
CF
gg
0
CF
SHRCA gg
1 1 1 0
1 g g g 1 1 1 1
0 0 0 1
C Z * – S 0 3
SWAP g
1 1 1 0
1 g g g 1 1 1 1
1 1 1 1
1 – – – – – 7
gg
CF
7654321 0
(
ROLD A,(x)
ROLD A,(vw)
1
1
1
1
1
1
1
1
1
1
1
1
1
ROLD A,(DE)
ROLD A,(HL)
ROLD A,(IX)
ROLD A,(IY)
ROLD A,(IX+d)
ROLD A,(IY+d)
ROLD A,(SP+d)
ROLD A,(HL+d)
ROLD A,(HL+C)
ROLD A,(+SP)
ROLD A,(PC+A) 注
RORD A,(x)
RORD A,(vw)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0 1 0 0
1 1 1 1 1 1 1 1
0 1 1 0
x x x x 1 1 1 1
w w w w v v v v
RORD A,(DE)
RORD A,(HL)
RORD A,(IX)
RORD A,(IY)
RORD A,(IX+d)
RORD A,(IY+d)
RORD A,(SP+d)
RORD A,(HL+d)
RORD A,(HL+C)
RORD A,(+SP)
0
0
0
0
0
0
0
0
0
0
0
0
0
RORD A,(PC+A) 注
0 1 0 0
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
x x x x
w w w w
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
8
8
8
8
10
10
10
10
10
9
1 – – – – – 10
0 1 1 1 1 – – – – – 9
v v v v 1 – – – – – 10
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1 1 1 1 1 1 1 1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
8
8
8
8
10
10
10
10
10
9
)
(Memory)
7654321 0
(4
)
) (+SP)
SP
SP + 1
A
(Memory)
7654321 0
1
1
1
1
d
d
d
d
1
1
4
A
7654321 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0 1 1 0 1 – – – – – 9
v v v v 1 – – – – – 10
4
7654321 0
(4
)
) (+SP)
SP
SP + 1
1 – – – – – 10
0 1 1 1
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 67
3.3 シフト、ローテート、ニブル処理
RA001
TLCS-870/C1
Page 68
TLCS-870/C1
3.4 ビット操作、フラグ操作
オブジェクトコード (2 進 )
ニモニック
SET g.b
SET (x).b
SET (vw).b
SET (DE).b
SET (HL).b
SET (IX).b
SET (IY).b
SET (IX+d).b
SET (IY+d).b
SET (SP+d).b
SET (HL+d).b
SET (HL+C).b
SET (+SP).b
SET (PC+A).b 注
SET (x).A
SET (vw).A
SET (DE).A
SET (HL).A
SET (IX).A
SET (IY).A
SET (IX+d).A
SET (IY+d).A
SET (SP+d).A
SET (HL+d).A
SET (HL+C).A
SET (+SP).A
SET (PC+A).A 注
CLR g.b
CLR (x).b
CLR (vw).b
CLR (DE).b
CLR (HL).b
CLR (IX).b
CLR (IY).b
CLR (IX+d).b
CLR (IY+d).b
CLR (SP+d).b
CLR (HL+d).b
CLR (HL+C).b
CLR (+SP).b
CLR (PC+A).b 注
CLR (x).A
CLR (vw).A
CLR (DE).A
CLR (HL).A
CLR (IX).A
CLR (IY).A
CLR (IX+d).A
CLR (IY+d).A
CLR (SP+d).A
CLR (HL+d).A
CLR (HL+C).A
CLR (+SP).A
CLR (PC+A).A 注
LD CF,g.b
LD CF,(x).b
LD CF,(vw).b
LD CF,(DE).b
LD CF,(HL).b
LD CF,(IX).b
LD CF,(IY).b
LD CF,(IX+d).b
RA001
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
g
b
0
b
0
0
1
1
1
1
1
1
1
1
g
b
0
b
1
1
0
0
0
0
1
1
1
1
g
b
1
b
0
1
0
1
0
1
0
1
1
0
1 1 0 0
x x x x
w w w w
0 b b b
x x x x
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0 1 0 0
1 1 1 1 1 1 0 0
0 b b b
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 1 1 1 1 1 1 1
0 0 1 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
0
0
0
0
0
0
0
0
1 1 0 0
x x x x
w w w w
1 b b b
x x x x
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
0
1
0
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
g
b
0
b
0
0
1
1
1
1
1
1
1
1
g
b
0
b
1
1
0
0
0
0
1
1
1
1
g
b
1
b
0
1
0
1
0
1
0
1
1
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1 1 1 1 1 1 0 0
1 b b b
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
0
0
1
0
1
0
1
0
1
1
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
0
0
0
0
b
b
b
b
b
b
b
b
b
b
b
b
フラグ
C H S
– – –
– – –
– – –
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
サイクル
オペレーション
V
– 3
ZF ← g.b:g.b ← 1
– 4
ZF ← (x).b:(x).b ← 1
– 6
ZF ← (vw).b:(vw).b ← 1
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
0 0 1 0 Z * – – – – 5
v v v v Z * – – – – 6
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
Z * – – – – 6
0 1 0 0
1
1
1
1
1
1
1
1
1
1
1
1
1
Z
*
*
*
Z * – – – – 6
0 1 0 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
J
Z
Z
v v v v Z
Z * – – – – 3
Z * – – – – 4
v v v v Z * – – – – 6
1
1
1
1
b
b
b
b
b
b
b
b
b
b
b
b
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
Z * – – – – 6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 0 1 0 Z * – – – – 5
v v v v Z * – – – – 6
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
ZF ← (DE).b:(DE).b ← 1
ZF ← (HL).b:(HL).b ← 1
ZF ← (IX).b:(IX).b ← 1
ZF ← (IY).b:(IY).b ← 1
ZF ← (IX+d).b:(IX+d).b ← 1
ZF ← (IY+d).b:(IY+d).b ← 1
ZF ← (SP+d).b:(SP+d).b ← 1
ZF ← (HL+d).b:(HL+d).b ← 1
ZF ← (HL+C).b:(HL+C).b ← 1
SP ← SP+1:ZF ← (SP).b:(SP).b ← 1
ZF ← (PC+A).b:(PC+A).b ← 1
ZF ← (x).A:(x).A ← 1
ZF ← (vw).A:(vw).A ← 1
ZF ← (DE).A:(DE).A ← 1
ZF ← (HL).A:(HL).A ← 1
ZF ← (IX).A:(IX).A ← 1
ZF ← (IY).A:(IY).A ← 1
ZF ← (IX+d).A:(IX+d).A ← 1
ZF ← (IY+d).A:(IY+d).A ← 1
ZF ← (SP+d).A:(SP+d).A ← 1
ZF ← (HL+d).A:(HL+d).A ← 1
ZF ← (HL+C).A:(HL+C).A ← 1
SP ← SP+1:ZF ← (SP).A:(SP).A ← 1
ZF ← (PC+A).A:(PC+A).A ← 1
ZF ← g.b:g.b ← 0
ZF ← (x).b:(x).b ← 0
ZF ← (vw).b:(vw).b ← 0
ZF ← (DE).b:(DE).b ← 0
ZF ← (HL).b:(HL).b ← 0
ZF ← (IX).b:(IX).b ← 0
ZF ← (IY).b:(IY).b ← 0
ZF ← (IX+d).b:(IX+d).b ← 0
ZF ← (IY+d).b:(IY+d).b ← 0
ZF ← (SP+d).b:(SP+d).b ← 0
ZF ← (HL+d).b:(HL+d).b ← 0
ZF ← (HL+C).b:(HL+C).b ← 0
SP ← SP+1:ZF ← (SP).b:(SP).b ← 0
ZF ← (PC+A).b:(PC+A).b ← 0
ZF ← (x).A:(x).A ← 0
ZF ← (vw).A:(vw).A ← 0
ZF ← (DE).A:(DE).A ← 0
ZF ← (HL).A:(HL).A ← 0
ZF ← (IX).A:(IX).A ← 0
ZF ← (IY).A:(IY).A ← 0
ZF ← (IX+d).A:(IX+d).A ← 0
ZF ← (IY+d).A:(IY+d).A ← 0
ZF ← (SP+d).A:(SP+d).A ← 0
ZF ← (HL+d).A:(HL+d).A ← 0
ZF ← (HL+C).A:(HL+C).A ← 0
SP ← SP+1:ZF ← (SP).A:(SP).A ← 0
0 1 0 0
1 1 1 1 1 1 1 1
1 0 1 0
Z * – – – – 6
ZF ← (PC+A).A:(PC+A).A ← 0
1
0
1
0
1
1
1
1
1
1
1
0
1
0
0
0
0
0
0 1 0 1
x x x x
w w w w
1 b b b
x x x x
w w w w v v v v
C – * – – – 2
CF ← g.b
CF ← (x).b
CF ← (vw).b
0
0
0
0
d
1
1
1
1
d
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
1
0
0
1
0
1
0
0
0
0
1
g
b
0
b
0
0
1
1
1
g
b
0
b
1
1
0
0
0
g
b
1
b
0
1
0
1
0
1
1
1
1
d
0
0
0
0
d
1
1
1
1
d
b
b
b
b
d
b
b
b
b
d
b
b
b
b
d 0 1 0 1
Page 69
C – * – – – 3
v v v v C – * – – – 5
C – * – – – 3
C – * – – – 3
C – * – – – 3
C – * – – – 3
1 b b b C – * – – – 5
CF ← (DE).b
CF ← (HL).b
CF ← (IX).b
CF ← (IY).b
CF ← (IX+d).b
3.4 ビット操作、フラグ操作
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
1 1 1 1 0 1 0 1
1 b b b
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
LD CF,(DE).A
LD CF,(HL).A
LD CF,(IX).A
LD CF,(IY).A
LD CF,(IX+d).A
LD CF,(IY+d).A
LD CF,(SP+d).A
LD CF,(HL+d).A
LD CF,(HL+C).A
LD CF,(+SP).A
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
LD CF,(PC+A).A 注
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 0
C – * – – – 5
TEST g.b#1
1 1 1 0
1 g g g 0 1 0 1
1 b b b
TEST (x).b#1
0 1 0 1
1 b b b x x x x
x x x x
TEST (vw).b#1
1 1 1 0
0 1 0 1
0 0 0 1 w w w w
1 b b b
w w w w v v v v
* – J – – – 2
* – J – – – 3
v v v v * – J – – – 5
TEST (DE).b#1
1 1 1 0
0 0 1 0 0 1 0 1
1 b b b
* – J – – – 3
JF ← (DE).b
TEST (HL).b#1
1 1 1 0
0 0 1 1 0 1 0 1
1 b b b
JF ← (HL).b
TEST (IX).b#1
1 1 1 0
0 1 0 0 0 1 0 1
1 b b b
* – J – – – 3
* – J – – – 3
TEST (IY).b#1
1 1 1 0
0 1 0 1 0 1 0 1
1 b b b
JF ← (IY).b
TEST (IX+d).b#1
1 1 0 1
0 1 0 0 d d d d
d d d d 0 1 0 1
* – J – – – 3
1 b b b * – J – – – 5
TEST (IY+d).b#1
1 1 0 1
0 1 0 1 d d d d
d d d d 0 1 0 1
JF ← (IY+d).b
TEST (SP+d).b#1
1 1 0 1
0 1 1 0 d d d d
d d d d 0 1 0 1
1 b b b * – J – – – 5
1 b b b * – J – – – 5
TEST (HL+d).b#1
1 1 0 1
0 1 1 1 d d d d
d d d d 0 1 0 1
JF ← (HL+d).b
TEST (HL+C).b#1
1 1 1 0
0 1 1 1 0 1 0 1
1 b b b
1 b b b * – J – – – 5
* – J – – – 5
TEST (+SP).b#1
1 1 1 0
0 1 1 0 0 1 0 1
1 b b b
* – J – – – 4
SP ← SP+1:JF ← (SP).b
TEST (PC+A).b#1 注 0 1 0 0
1 1 1 0
TEST (x).A#1
1 1 1 1 0 1 0 1
1 b b b
* – J – – – 5
JF ← (PC+A).b
0 0 0 0 x x x x
x x x x 1 1 1 1
TEST (vw).A#1
0 0 0 1 w w w w
1 1 0 0
0 0 1 0 1 1 1 1
w w w w v v v v
TEST (DE).A#1
1 1 1 0
1 1 1 1
1 1 1 0
TEST (HL).A#1
1 1 1 0
0 0 1 1 1 1 1 1
1 1 0 0
TEST (IX).A#1
1 1 1 0
0 1 0 0 1 1 1 1
1 1 0 0
TEST (IY).A#1
1 1 1 0
0 1 0 1 1 1 1 1
1 1 0 0
TEST (IX+d).A#1
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
TEST (IY+d).A#1
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
TEST (SP+d).A#1
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
TEST (HL+d).A#1
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
TEST (HL+C).A#1
1 1 1 0
0 1 1 1 1 1 1 1
1 1 0 0
TEST (+SP).A#1
1 1 1 0
0 1 1 0 1 1 1 1
1 1 0 0
TEST (PC+A).A#1 注
LD g.b,CF
LD (x).b,CF
LD (vw).b,CF
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1 1 1 0
x x x x
w w w w
1 b b b
x x x x 1 1 1 0
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
LD (PC+A).b,CF 注
LD (x).A,CF
LD (vw).A,CF
LD (DE).A,CF
RA001
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
g
0
0
b
0
0
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
0
1
1
0
0
0
0
1
1
1
1
g
0
0
b
1
1
0
0
0
0
1
1
1
1
1
0
1
1
0
0
1
0
0
1
0
1
0
1
0
1
1
0
g
0
1
b
0
1
0
1
0
1
0
1
1
0
d
d
d
0
0
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
d
d
d
1
1
d
d
d
b
b
1
1
1
1
d
d
d
d
1
1
d
d
d
b
b
0
0
0
0
d
d
d
d
0
0
d 0 1 0 1
d 0 1 0 1
d 0 1 0 1
b
b
CF ← (IY+d).b
CF ← (SP+d).b
CF ← (HL+d).b
CF ← (HL+C).b
SP ← SP+1:CF ← (SP).b
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
オペレーション
0 1 0 0
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
サイクル
LD CF,(PC+A).b 注
LD CF,(x).A
LD CF,(vw).A
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
V
–
–
–
–
–
LD CF,(IY+d).b
LD CF,(SP+d).b
LD CF,(HL+d).b
LD CF,(HL+C).b
LD CF,(+SP).b
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
フラグ
C H S
* – –
* – –
* – –
* – –
* – –
1
1
1
1
1
LD (DE).b,CF
LD (HL).b,CF
LD (IX).b,CF
LD (IY).b,CF
LD (IX+d).b,CF
LD (IY+d).b,CF
LD (SP+d).b,CF
LD (HL+d).b,CF
LD (HL+C).b,CF
LD (+SP).b,CF
1
1
1
1
1
J Z
1 b b b C –
1 b b b C –
1 b b b C –
C –
C –
0
0
0
0
d
d
d
d
0
0
C – * – – – 5
C – * – – – 3
C – * – – – 3
C – * – – – 3
C – * – – – 3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1 1 1 1 1 1 1 0
1 b b b
0
0
0
0
x x x x 1 1 1 1
w w w w v v v v
0
0
1
0
0
0
0
0
0
0
1
1
0 x x x x
1 w w w w
1
0 1 1 1 1
1
1
1
1
0
0
0
0
0
0
0
0
C – * – – – 5
C – * – – – 5
C – * – – – 5
C – * – – – 5
C – * – – – 4
1
1
1
1
1
1
1
1
1
1
1
1
C – * – – – 5
0 1 0 0
1
1
1
1
1 1 0 0 C – * – – – 4
v v v v C – * – – – 5
1 1 0 0 * – J – – – 4
v v v v * – J – – – 5
1 1 0 0
b
b
b
b
d
d
d
d
b
b
5
5
5
5
4
Page 70
CF ← (x).A
CF ← (vw).A
CF ← (DE).A
CF ← (HL).A
CF ← (IX).A
CF ← (IY).A
CF ← (IX+d).A
CF ← (IY+d).A
CF ← (SP+d).A
CF ← (HL+d).A
CF ← (HL+C).A
SP ← SP+1:CF ← (SP).A
CF ← (PC+A).A
JF ← g.b
JF ← (x).b
JF ← (vw).b
JF ← (IX).b
JF ← (IX+d).b
JF ← (SP+d).b
JF ← (HL+C).b
JF ← (x).A
JF ← (vw).A
* – J – – – 3
* – J – – – 3
JF ← (DE).A
* – J – – – 3
* – J – – – 3
JF ← (IX).A
JF ← (HL).A
JF ← (IY).A
1 1 0 0 * – J – – – 5
1 1 0 0 * – J – – – 5
JF ← (IX+d).A
1 1 0 0 * – J – – – 5
1 1 0 0 * – J – – – 5
JF ← (SP+d).A
* – J – – – 5
* – J – – – 4
JF ← (HL+C).A
* – J
1 – –
1 b b b 1 – –
v v v v 1 – –
1
1
1
1
b
b
b
b
b
b
b
b
b
b
b
b
1
1
1
1
1
1
1
1
1
1
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
JF ← (IY+d).A
JF ← (HL+d).A
SP ← SP+1:JF ← (SP).A
– – – 5
JF ← (PC+A).A
– – – 2
– – – 5
– – – 6
g.b ← CF
(x).b ← CF
(vw).b ← CF
–
–
–
–
–
–
–
–
–
–
(DE).b ← CF
(HL).b ← CF
(IX).b ← CF
(IY).b ← CF
(IX+d).b ← CF
(IY+d).b ← CF
(SP+d).b ← CF
(HL+d).b ← CF
(HL+C).b ← CF
SP ← SP+1:(SP).b ← CF
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
1 – – – – – 6
0 0 1 1
CF ← (PC+A).b
(PC+A).b ← CF
0 0 1 1 1 – – – – – 5
v v v v 1 – – – – – 6
(x).A ← CF
(vw).A ← CF
1 – – – – – 4
(DE).A ← CF
TLCS-870/C1
オブジェクトコード (2 進 )
ニモニック
LD (HL).A,CF
LD (IX).A,CF
LD (IY).A,CF
LD (IX+d).A,CF
LD (IY+d).A,CF
LD (SP+d).A,CF
LD (HL+d).A,CF
LD (HL+C).A,CF
LD (+SP).A,CF
1
1
1
1
1
1
1
1
1
LD (PC+A).A,CF 注
CPL g.b
CPL (x).b
CPL (vw).b
0 1 0 0
1 1 1 1 1 1 1 1
0 0 1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1 1 1 0
x x x x
w w w w
0 b b b
x x x x 1 1 1 0
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
CPL (DE).b
CPL (HL).b
CPL (IX).b
CPL (IY).b
CPL (IX+d).b
CPL (IY+d).b
CPL (SP+d).b
CPL (HL+d).b
CPL (HL+C).b
CPL (+SP).b
CPL (PC+A).b 注
CPL (x).A
CPL (vw).A
CPL (DE).A
CPL (HL).A
CPL (IX).A
CPL (IY).A
CPL (IX+d).A
CPL (IY+d).A
CPL (SP+d).A
CPL (HL+d).A
CPL (HL+C).A
CPL (+SP).A
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
g
0
0
b
0
0
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
g
0
0
b
1
1
0
0
0
0
1
1
1
1
1
0
1
0
1
0
1
1
0
g
0
1
b
0
1
0
1
0
1
0
1
1
0
1
1
1
d
d
d
d
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
d
d
d
d
0
0
0
0
0
d
d
d
d
0
0
b
b
b
b
d
d
d
d
b
b
1
1
1
d
d
d
d
1
1
b
b
b
b
d
d
d
d
b
b
1
1
1
d
d
d
d
1
1
b
b
b
b
d
d
d
d
b
b
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0 1 0 0
1 1 1 1 1 1 1 0
0 b b b
0
0
1
0
0
0
0
0
0
0
0
0
0
x x x x
w w w w
x x x x 1 1 1 1
w w w w v v v v
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
1
0
1
1
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
1
1
1
1
1
1
1
1
Z
–
–
–
–
–
–
–
–
–
フラグ
C H S
– – –
– – –
– – –
– – –
– – –
– – –
– – –
– – –
– – –
V
–
–
–
–
–
–
–
–
–
サイクル
4
4
4
6
6
6
6
6
5
1 – – – – – 6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
J
1
1
1
1
1
1
1
1
1
Z * – – – – 3
0 b b b Z * – – – – 5
v v v v Z * – – – – 6
0
0
0
0
b
b
b
b
b
b
b
b
b
b
b
b
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
4
4
4
4
6
6
6
6
6
5
Z * – – – – 6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 0 1 1 Z * – – – – 5
v v v v Z * – – – – 6
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
*
*
*
*
*
*
*
*
*
*
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
オペレーション
(HL).A ← CF
(IX).A ← CF
(IY).A ← CF
(IX+d).A ← CF
(IY+d).A ← CF
(SP+d).A ← CF
(HL+d).A ← CF
(HL+C).A ← CF
SP ← SP+1:(SP).A ← CF
(PC+A).A ← CF
ZF ← g.b:g.b ← g.b
ZF ← (x).b:(x).b ← (x).b
ZF ← (vw).b:(vw).b ← (vw).b
ZF ← (DE).b:(DE).b ← (DE).b
ZF ← (HL).b:(HL).b ← (HL).b
ZF ← (IX).b:(IX).b ← (IX).b
ZF ← (IY).b:(IY).b ← (IY).b
ZF ← (IX+d).b:(IX+d).b ← (IX+d).b
ZF ← (IY+d).b:(IY+d).b ← (IY+d).b
ZF ← (SP+d).b:(SP+d).b ← (SP+d).b
ZF ← (HL+d).b:(HL+d).b ← (HL+d).b
ZF ← (HL+C).b:(HL+C).b ← (HL+C).b
SP ← SP+1:ZF ← (SP).b:
(SP).b ← (SP).b
ZF ← (PC+A).b:(PC+A).b ← (PC+A).b
ZF ← (x).A:(x).A ← (x).A
ZF ← (vw).A:(vw).A ← (vw).A
4
4
4
4
6
6
6
6
6
5
ZF ← (DE).A:(DE).A ← (DE).A
ZF ← (HL).A:(HL).A ← (HL).A
ZF ← (IX).A:(IX).A ← (IX).A
ZF ← (IY).A:(IY).A ← (IY).A
ZF ← (IX+d).A:(IX+d).A ← (IX+d).A
ZF ← (IY+d).A:(IY+d).A ← (IY+d).A
ZF ← (SP+d).A:(SP+d).A ← (SP+d).A
ZF ← (HL+d).A:(HL+d).A ← (HL+d).A
ZF ← (HL+C).A:(HL+C).A ← (HL+C).A
SP ← SP+1:ZF ← (SP).A:
(SP).A ← (SP).A
0 1 0 0
1 1 1 1 1 1 1 1
1 0 1 1
Z * – – – – 6
ZF ← (PC+A).A:(PC+A).A ← (PC+A).A
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0 1 0 1
x x x x
w w w w
0 b b b
x x x x 0 1 0 1
w w w w v v v v
C – * – – – 2
CF ← CF ^ g.b
CF ← CF ^ (x).b
CF ← CF ^ (vw).b
XOR CF,(DE).b
XOR CF,(HL).b
XOR CF,(IX).b
XOR CF,(IY).b
XOR CF,(IX+d).b
XOR CF,(IY+d).b
XOR CF,(SP+d).b
XOR CF,(HL+d).b
XOR CF,(HL+C).b
XOR CF,(+SP).b
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
d
d
d
d
0
0
0
0
0
0
d
d
d
d
0
0
XOR CF,(PC+A).b 注
0 1 0 0
1 1 1 1 0 1 0 1
SET CF
CLR CF
CPL CF
DI#1
0
0
0
1
0
0
0
1
EI#1
1 1 0 0
CPL (PC+A).A 注
XOR CF,g.b
XOR CF,(x).b
XOR CF,(vw).b
#1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
1
1
0
1
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
g
0
0
b
0
0
1
1
1
1
1
1
1
1
g
0
0
b
1
1
0
0
0
0
1
1
1
1
g
0
1
b
0
1
0
1
0
1
0
1
1
0
0 b b b C – * – – – 4
v v v v C – * – – – 5
C – * – – – 4
CF ← CF ^ (DE).b
CF ← CF ^ (HL).b
CF ← CF ^ (IX).b
CF ← CF ^ (IY).b
CF ← CF ^ (IX+d).b
CF ← CF ^ (IY+d).b
CF ← CF ^ (SP+d).b
CF ← CF ^ (HL+d).b
CF ← CF ^ (HL+C).b
SP ← SP+1:CF ← CF ^ (SP).b
0 b b b
C – * – – – 5
CF ← CF ^ (PC+A).b
1
0
0
0 0 0 1 1
1 0 1 0
0
1
*
Z
CF ← 1
CF ← 0
JF ← CF:CF ← CF
ZF ← IMF:IMF ← 0
0 0 0 0 0 0 1 1
1 0 1 0
1
1
1
0
0
0
1
0
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1
1
1
1
d
d
d
d
1
1
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
b
b
b
b
d
d
d
d
b
b
C – * – – – 3
C – * – – – 3
C – * – – – 3
C – * – – – 3
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
b
b
b
b
b
b
b
b
b
b
b
b
C – * – – – 5
C – * – – – 5
C – * – – – 5
C – * – – – 5
C – * – – – 5
–
–
–
*
1
0
*
–
–
–
–
–
–
–
–
–
–
–
–
–
1
1
1
4
Z * – – – – 4
ZF ← IMF:IMF ← 1
アセンブラ用拡張命令
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 71
3.4 ビット操作、フラグ操作
RA001
TLCS-870/C1
Page 72
TLCS-870/C1
3.5 ジャンプ
オブジェクトコード (2 進 )
ニモニック
オペレーション
d d d d
d d d d
d d d d
if JF = 1 then PC ← PC+d else null
if JF = 0 then PC ← PC+d else null
if JF = 1 then PC ← PC+d else null
if JF = 0 then PC ← PC+d else null
if ZF = 1 then PC ← PC+d else null
1 0 0 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if ZF = 0 then PC ← PC+d else null
1 1 0 1
1 0 1 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
if CF = 1 then PC ← PC+d else null
1 1 0 1
1 0 1 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
if CF = 0 then PC ← PC+d else null
1 1 0 1
1 1 0 0 d d d d
d d d d
1 – – – – – 4/2(t/f)
JR GT,$+2+d
1 1 0 1
1 1 0 1 d d d d
d d d d
1 – – – – – 4/2(t/f)
JR M,$+3+d
JR P,$+3+d
1 1 1 0
1 1 1 0
1 0 0 0 1 1 0 1
1 0 0 0 1 1 0 1
0 0 0 0 d d d d
0 0 0 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
d d d d 1 – – – – – 5/3(t/f)
JR SLT,$+3+d
1 1 1 0
1 0 0 0 1 1 0 1
0 0 1 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
JR SGE,$+3+d
1 1 1 0
1 0 0 0 1 1 0 1
0 0 1 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
JR SLE,$+3+d
1 1 1 0
1 0 0 0 1 1 0 1
0 1 0 0 d d d d
d d d d 1 – – – – – 5/3(t/f)
JR SGT,$+3+d
1 1 1 0
1 0 0 0 1 1 0 1
0 1 0 1 d d d d
d d d d 1 – – – – – 5/3(t/f)
JR VS,$+3+d
JR VC,$+3+d
JR $+2+d
JP mn
JP gg
JP (x)
JP (vw)
1
1
1
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
d d d d 1
d d d d 1
1
mmmm –
–
1 1 1 0 –
v v v v –
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
5/3(t/f)
5/3(t/f)
4
4
3
6
7
JP (DE)
JP (HL)
JP (IX)
JP (IY)
JP (IX+d)
JP (IY+d)
JP (SP+d)
JP (HL+d)
JP (HL+C)
JP (+SP)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
if (CF⏐ZF) = 1 then PC ← PC+d
else null
if (CF⏐ZF) = 0 then PC ← PC+d
else null
if SF = 1 then PC ← PC+d else null
if SF = 0 then PC ← PC+d else null
if (SF ^ VF) = 1 then PC ← PC+d
else null
if (SF ^ VF) = 0 then PC ← PC+d
else null
if ZF⏐ (SF ^ VF) = 1 then PC ←
PC+d else null
if ZF⏐ (SF ^ VF) = 0 then PC ←
PC+d else null
if VF = 1 then PC ← PC+d else null
if VF = 0 then PC ← PC+d else null
PC ← PC+d
PC ← mn
PC ← gg
PC ← (x+1,x)
PC ← (vw+1,vw)
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
5
5
5
5
7
7
7
7
7
6
PC ← (DE+1,DE)
PC ← (HL+1,HL)
PC ← (IX+1,IX)
PC ← (IY+1,IY)
PC ← (IX+d+1,IX+d)
PC ← (IY+d+1,IY+d)
PC ← (SP+d+1,SP+d)
PC ← (HL+d+1,HL+d)
PC ← (HL+C+1,HL+C)
SP ← SP+1:PC ← (SP+1,SP)
JP (PC+A) 注
0 1 0 0
1
1
1
1
1
0
0
1
1
1
d
d
0 d d d d
1 d d d d
0 d d d d
1 1 0 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
d
d
1
1
1
0
0
1
1
0
0
0
1
0
0
0
0
1
1
1
1
0
0
d
d
1
1
1
d
d
1
1
0
0
0
1
1
g
0
0
1
0
0
1
1
1
1
1
1
1
1
d
d
1
1
0
0
0
0
1
g
0
0
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
g
0
1
0
0
1
0
1
0
1
0
1
1
0
1
1
d
n
1
x
w
1
1
d
n
1
x
w
0
0
d
n
1
x
w
1
1
d
n
1
x
w
0
0
d
n
1
x
w
1
1
d
n
1
x
w
1
1
d
n
1
x
w
0
1
d
n
0
x
w
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
1
1
1
1
d
d
d
d
1
1
0
0
0
0
d
d
d
d
0
0
1 1 1 1 1 1 1 1
d d d d
d d d d
mmmm
1 1 1 1
v v v v
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 1 1 0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
V
–
–
–
–
–
サイクル
4/2(t/f)
4/2(t/f)
4/2(t/f)
4/2(t/f)
4/2(t/f)
JRS T,$+2+d
JRS F,$+2+d
JR T,$+2+d
JR F,$+2+d
JR EQ,$+2+d
JR Z,$+2+d
JR NE,$+2+d
JR NZ,$+2+d
JR CS,$+2+d
JR LT,$+2+d
JR CC,$+2+d
JR GE,$+2+d
JR LE,$+2+d
Z
–
–
–
–
–
フラグ
C H S
– – –
– – –
– – –
– – –
– – –
J
1
1
1
1
1
– – – – – – 7
PC ← (PC+A+1,PC+A)
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 73
3.5 ジャンプ
RA001
TLCS-870/C1
Page 74
TLCS-870/C1
3.6 サブルーチンコール、リターン、ソフトウエア割り込み、ノーオペレー
ション
オブジェクトコード (2 進 )
ニモニック
CALLV n
0 1 1 1
n n n n
CALL mn
1 1 1 1
1 1 0 1 n n n n
n n n n mmmm
CALL gg
1 1 1 0
1 g g g 1 1 1 1
1 1 0 1
CALL (x)
1 1 1 0
0 0 0 0 x x x x
x x x x 1 1 1 1
1 1 0 1
CALL (vw)
0 0 0 1 w w w w
1 1 0 1
0 0 1 0 1 1 1 1
w w w w v v v v
v v v v
CALL (DE)
1 1 1 0
1 1 1 1
1 1 1 0
CALL (HL)
1 1 1 0
0 0 1 1 1 1 1 1
1 1 0 1
CALL (IX)
1 1 1 0
0 1 0 0 1 1 1 1
1 1 0 1
CALL (IY)
1 1 1 0
0 1 0 1 1 1 1 1
1 1 0 1
CALL (IX+d)
1 1 0 1
0 1 0 0 d d d d
d d d d 1 1 1 1
1 1 0 1
CALL (IY+d)
1 1 0 1
0 1 0 1 d d d d
d d d d 1 1 1 1
1 1 0 1
CALL (SP+d)
1 1 0 1
0 1 1 0 d d d d
d d d d 1 1 1 1
1 1 0 1
CALL (HL+d)
1 1 0 1
0 1 1 1 d d d d
d d d d 1 1 1 1
1 1 0 1
CALL (+SP)
1 1 1 0
0 1 1 0 1 1 1 1
1 1 0 1
mmmm
1 1 0 1
フラグ
サイ
オペレーション
J Z C H S V クル
– – – – – – 7
(SP,SP-1) ← NxtOp: SP ← SP-2:
PC ← (n × 2+ ベクタコール領域の先頭ア
ドレス値 +1,n × 2+ ベクタコール領域の
先頭アドレス値 )
– – – – – – 6
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← mn
– – – – – – 6
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← gg
– – – – – – 8
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (x+1,x)
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (vw+1,vw)
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (DE+1,DE)
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (HL+1,HL)
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IX+1,IX)
– – – – – – 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IY+1,IY)
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IX+d+1,IX+d)
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (IY+d+1,IY+d)
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (SP+d+1,SP+d)
– – – – – – 9
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (HL+d+1,HL+d)
SP ← SP+1: (SP-1) ← NxtOPL:
– – – – – – 8
PCL ← (SP): (SP) ← NxtOpH:
PCH ← (SP+1): SP ← SP-2
CALL (HL+C)
1 1 1 0
0 1 1 1 1 1 1 1
1 1 0 1
– – – – – – 9
CALL (PC+A) 注
0 1 0 0
1 1 1 1 1 1 1 1
1 1 0 1
– – – – – – 9
RET
RETI
1 1 1 1
1 1 1 1
1 0 1 0
1 0 1 1
– – – – – – 6
* * * * * * 6
RETN
1 1 1 0
1 0 0 0 1 1 1 1
SWI
1 1 1 1
1 1 1 1
– – – – – – 9
NOP
0 0 0 0
0 0 0 0
– – – – – – 1
1 0 1 1
* * * * * * 7
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (HL+C+1,HL+C)
(SP,SP-1) ← NxtOp:SP ← SP-2:
PC ← (PC+A+1,PC+A)
SP ← SP+2:PC ← (SP,SP-1)
SP ← SP+2:PC ← (SP,SP-1):
SP ← SP+1: PSW ← (SP):
IMF ← (SP).0
SP ← SP+2:PC ← (SP,SP-1):
SP ← SP+1: PSW ← (SP):
IMF ← (SP).0
(SP) ← PSW:(SP).0 ← IMF:
(SP-1,SP-2) ← NxtOp:
PC ← (SWI ベクタアドレス +1,SWI ベク
タアドレス )
ノーオペレーション
注 ) (PC+A) を使用した命令には制限があります。詳細は、TLCS-870/C1 シリーズ 命令セット 1.4 アドレッシングモードを参
照してください。
RA001
Page 75
3.6 サブルーチンコール、リターン、ソフトウエア割り込み、
ノーオペレーション
RA001
TLCS-870/C1
Page 76
TLCS-870/C1
第4章
TLCS-870/C1 命令コードマップ
4.1 第 1 オペコード
下位
上位
0
1
2
3
NOP
4
5
6
7
8
CLR CF
SET CF
CPL CF
CMP
9
A
B
C
D
E
F
LD (mem), n
LD A, (mem)
LD (mem), A
(x), n
(x)
(HL)
(x)
(HL)
(x)
(HL)
(x)
(HL)
E
D
L
H
E
D
L
H
IX
IY
SP
SP,SP-d
LDW (mem), mn
0
LD A,r
LD r,n
1
A
W
C
B
A
W
C
B
E
D
L
H
A
W
C
B
E
D
L
H
A
W
C
B
SP
SP,SP+d
INC r
DEC r
2
INC rr
WA
BC
DE
DEC rr
LD
3
HL
IX
IY
WA
BC
DE
LD r,A
HL
LD
LD rr,mn
(src)
4
A
W
C
B
E
D
PUSH rr ( 注 4)
L
H
WA
BC
DE
HL
(dst)
IX
IY
SP
(PC+A)
5
6
7
4
5
6
7
LE
GT
T
F
LD CF,(x).b
5
WA
BC
DE
HL
(IX+d)
(IY+d)
ADDC
ADD
SUBB
SUB
AND
A, n
A, n
A, n
A, n
A, n
(SP+d)
(HL+d)
XOR
OR
CMP
A, n
A, n
A, n
0
1
2
3
1
2
3
4
6
7
CALLV n
8
JRS T,a
9
A
JRS F,a
B
SET (x).b
CLR (x).b
C
0
1
2
3
4
5
POP rr ( 注 4)
6
7
0
(src)
JR cc, a
D
WA
BC
DE
(x)
(vw)
(DE)
HL
(IX+d)
(IY+d)
(SP+d)
(HL+d)
EQ/Z
NE/NZ
LT/CS
(+SP)
(HL+C)
A/WA
W/BC
C/DE
B/HL
E/IX
D/IY
L/SP
H/HL
LD
RET
RETI
JR a
CALL
JP mn
SWI
source memory prefix: (src)
GE/CC
register prefix: g/gg
E
(HL)
(IX)
(IY)
destination memory prefix: (dst)
F
(x)
RA001
(vw)
(DE)
(HL)
(IX)
(IY)
(SP-)
(HL+C)
RBS,0
or 1
mn
注 1)
網掛け位置のコードは未定義です。
注 2)
register prefix 命令 (0xE8 ~ 0xEF) は、次のページの 1.7 (2) が第 2 オペコードです。
注 3)
source/destination prefix 命令 (0xE0 ~ 0xE7 / 0xF0 ~ 0xF7 / 0x54~0x57 / 0xD4 ~ 0xD7 / 0x4F) は、1.7 (3) が第 2 オペコード
です。
注 4)
PUSH rr/POP rr 命令に使用できるレジスタ (rr) は、WA, BC, DE, HL のみです。
Page 77
第 4 章 TLCS-870/C1 命令コードマップ
4.2 第 2 オペコード ( レジスタプリフィックス )
TLCS-870/C1
4.2 第 2 オペコード ( レジスタプリフィックス )
下位
上位
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
A, g
A, g
A, g
A, g
A, g
A, g
A, g
A, g
W, g
W, g
W, g
W, g
W, g
W, g
W, g
W, g
C, g
C, g
C, g
C, g
C, g
C, g
C, g
C, g
B, g
B, g
B, g
B, g
B, g
B, g
B, g
B, g
E, g
E, g
E, g
E, g
E, g
E, g
E, g
E, g
D, g
D, g
D, g
D, g
D, g
D, g
D, g
D, g
L, g
L, g
L, g
L, g
L, g
L, g
L, g
L, g
H, g
H, g
H, g
H, g
H, g
H, g
H, g
H, g
IX
IY
SP
0
1
2
3
LD r, g
LD rr, gg
4
A
W
C
B
0
1
2
3
ADDC
ADD
SUBB
g, n
g, n
g, n
E
D
L
H
WA
BC
DE
HL
4
5
6
7
0
1
2
3
4
5
6
7
SUB
AND
XOR
OR
CMP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
g, n
g, n
g, n
g, n
g, n
gg, mn
gg, mn
gg, mn
gg, mn
gg, mn
gg, mn
gg, mn
gg, mn
XOR CF, g.b
LD CF, g.b
5
6
XCH r, g
XCH rr, gg
7
A
W
C
B
E
D
L
H
WA
BC
DE
HL
IX
IY
SP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
WA, gg
WA, gg
WA, gg
WA, gg
WA, gg
WA, gg
WA, gg
WA, gg
BC, gg
BC, gg
BC, gg
BC, gg
BC, gg
BC, gg
BC, gg
BC, gg
DE, gg
DE, gg
DE, gg
DE, gg
DE, gg
DE, gg
DE, gg
DE, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
IX, gg
IX, gg
IX, gg
IX, gg
IX, gg
IX, gg
IX, gg
IX, gg
IY, gg
IY, gg
IY, gg
IY, gg
IY, gg
IY, gg
IY, gg
IY, gg
SP, gg
SP, gg
SP, gg
SP, gg
SP, gg
SP, gg
SP, gg
SP, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
HL, gg
7
8
9
A
B
SET g.b
CLR g.b
C
0
1
2
3
4
5
6
7
JR cc, a
0
1
2
3
4
5
6
PUSH
POP
DAA
DAS
PUSH
POP
LD
g
PSW
PSW
PSW, n
5
6
7
CALL
JP
SWAP
gg
gg
g
D
M
P
SLT
SGE
0
1
2
3
SHLCA
SHRCA
MUL
gg
gg
ggH, ggL
SLE
SGT
VS
VC
gg
gg
g
4
5
6
7
0
1
2
3
DIV
SHLC
SHRC
ROLC
RORC
NEG
RETN
gg, C
g
g
g
g
CS, gg
CPL g.b
LD g.b, CF
E
4
F
注 1)
RA001
網掛け位置のコードは未定義です。
Page 78
TLCS-870/C1
4.3 第 2 オペコード ( メモリプリフィックス )
下位
上位
0
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
A, (src)
A, (src)
A, (src)
A, (src)
A, (src)
A, (src)
A, (src)
A, (src)
W, (src)
W, (src)
W, (src)
W, (src)
W, (src)
W, (src)
W, (src)
W, (src)
C, (src)
C, (src)
C, (src)
C, (src)
C, (src)
C, (src)
C, (src)
C, (src)
B, (src)
B, (src)
B, (src)
B, (src)
B, (src)
B, (src)
B, (src)
B, (src)
E, (src)
E, (src)
E, (src)
E, (src)
E, (src)
E, (src)
E, (src)
E, (src)
D, (src)
D, (src)
D, (src)
D, (src)
D, (src)
D, (src)
D, (src)
D, (src)
L, (src)
L, (src)
L, (src)
L, (src)
L, (src)
L, (src)
L, (src)
L, (src)
H, (src)
H, (src)
H, (src)
H, (src)
H, (src)
H, (src)
H, (src)
H, (src)
A
W
C
B
D
L
H
WA
IX
IY
SP
4
5
6
IX
IY
SP
1
2
3
LD r, (src)
LD rr, (src)
4
E
BC
DE
XOR CF, (src).b
HL
LD CF, (src).b
5
0
1
2
3
4
5
6
7
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
(src), n
(src), n
(src), n
(src), n
(src), n
(src), n
(src), n
(src), n
0
1
2
WA
BC
DE
3
7
LD (dst), rr
6
XCH r, (src)
HL
LD (dst), r
7
8
A
W
C
B
E
D
L
H
A
W
C
B
E
D
L
H
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
ADDC
ADD
SUBB
SUB
AND
XOR
OR
CMP
WA, (src)
WA, (src)
WA, (src)
WA, (src)
WA, (src)
WA, (src)
WA, (src)
WA, (src)
BC, (src)
BC, (src)
BC, (src)
BC, (src)
BC, (src)
BC, (src)
BC, (src)
BC, (src)
DE, (src)
DE, (src)
DE, (src)
DE, (src)
DE, (src)
DE, (src)
DE, (src)
DE, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
IX, (src)
IX, (src)
IX, (src)
IX, (src)
IX, (src)
IX, (src)
IX, (src)
IX, (src)
IY, (src)
IY, (src)
IY, (src)
IY, (src)
IY, (src)
IY, (src)
IY, (src)
IY, (src)
SP, (src)
SP, (src)
SP, (src)
SP, (src)
SP, (src)
SP, (src)
SP, (src)
SP, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
HL, (src)
5
6
7
IY
SP
HL
7
9
A
B
SET (src).b
CLR (src).b
C
0
1
2
3
4
5
6
7
0
1
2
3
WA
BC
DE
HL
4
XCH rr, (src)
D
CPL (src).b
IX
LD (src).b, CF
E
2
3
6
7
0
1
2
3
4
5
6
INC
0
1
SET
LD
4
5
ROLD
RORD
DEC
LD
CLR
CPL
LD
CALL
JP
(src)
(src). A
(src).A, CF
A,(src)
A,(src)
(src)
(dst), n
(src).A
(src).A
CF, (src).A
(src)
(src)
F
注 1)
RA001
網掛け位置のコードは未定義です。
Page 79
第 4 章 TLCS-870/C1 命令コードマップ
4.3 第 2 オペコード ( メモリプリフィックス )
TLCS-870/C1
注 ) レジスタプリフィックスの第 1 オペコードは、以下のとおりです。
g
第 1 オペコード
gg
第 1 オペコード
A
E8
WA
E8
W
E9
BC
E9
C
EA
DE
EA
B
EB
HL
EB
E
EC
IX
EC
D
ED
IY
ED
L
EE
SP
EE
H
EF
HL
EF
注 ) メモリプリフィックスの第 1 オペコードは、以下のとおりです。
RA001
(src)
第 1 オペコード
(dst)
第 1 オペコード
(x)
E0
(x)
F0
(vw)
E1
(vw)
F1
(DE)
E2
(DE)
F2
(HL)
E3
(HL)
F3
(IX)
E4
(IX)
F4
(IY)
E5
(IY)
F5
(+SP)
E6
(SP-)
F6
(HL+C)
E7
(HL+C)
F7
(IX+d)
D4
(IX+d)
54
(IY+d)
D5
(IY+d)
55
(SP+d)
D6
(SP+d)
56
(HL+d)
D7
(HL+d)
57
(PC+A)
4F
Page 80
TLCS-870/C1
第5章
修正履歴
5.1 修正履歴
Rev
修正内容
16 進数の表記を H から 0x に、2 進数の表記を B から 0y に修正しました。
RA001
LD RBS,n の記述を LD RBS,0、LD RBS,1 記述に変更しました。
RA001
Page 81
第 5 章 修正履歴
5.1 修正履歴
RA001
TLCS-870/C1
Page 82