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