第 4 章 TLCS-870/C シリーズ 命令セット セミコンダクター社 TLCS-870/C 1. 概要 TLCS-870/C シリーズの基本機械命令は、132 種 731 命令で、下表に命令の分類を示します。TLCS-870/ C シリーズには、1 バイト長から最長 5 バイト長の命令があります。使用頻度の高い命令は、オブジェク トコードを短くしており、メモリ効率の良いプログラムを組むことができます。 また、TLCS-870/C シリーズは、メモリマップド I/O 方式の採用によりシンプルな命令体系で、ニモニッ クは 42 種類でありながら、18 種類におよぶアドレッシングモードにより強力なメモリ操作が可能です。 基本機械命令のほかに、コーディング効率の向上を図るためアセンブラによる拡張機械命令が用意され ています。 表 1-1 命令セット 転送 / 交換 8 ビットデータ転送 / 交換 7種 49 命令 16 ビットデータ転送 / 交換 7 43 フラグ操作 4 4 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 132 種 731 命令 分岐 その他 計 表 1-2 アドレッシングモード(1 / 2) 7種 レジスタ間接 ダイレクト 2 レジスタ 1 イミディエート 1 Page 1 1. 概要 1.1 記号の説明 TLCS-870/C 表 1-2 アドレッシングモード(2 / 2) リラティブ 2 アブソリュート 1 ベクタ 1 直接ビット 2 レジスタ間接ビット 1 計 18 1.1 記号の説明 以下の命令 / アドレッシングモードの説明では、次の記号を使用します。 記号 説明 記号 説明 A A レジスタ (8 ビットアキュムレータ ) 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 ビットダイレクトアドレス (0000H~00FFH) H H レジスタ vw, uz 16 ビットダイレクトアドレス (0000H~FFFFH) L L レジスタ (XX) XX で指定されるアドレスのメモリの内容 WA WA レジスタペア (16 ビットアキュムレータ ) (XX + 1, XX) ント (−16~+15/−128~+127) XX で指定されるアドレスから連続する 2 バイトの メモリの内容 BC BC レジスタペア b ビット番号 (0~7) DE DE レジスタペア .b b で指定されるビットの内容 HL HL レジスタペア ← 転送 IX IX レジスタ ↔ 交換 IY IY レジスタ + 加算 PC プログラムカウンタ − 減算 SP スタックポインタ × 乗算 PSW プログラムステータスワード ÷ 除算 JF ジャンプステータスフラグ & ビットごとの論理積 ZF ゼロフラグ ビットごとの論理和 CF キャリーフラグ (1 ビットアキュムレータ ) ^ ビットごとの排他的論理和 HF ハーフキャリーフラグ null ノーオペレーション ( 何も実行せず、次のアドレス の命令に移ります。) SF サインフラグ $ 命令の先頭アドレス ( 命令実行中のプログラムカウ ンタの内容は、$ + 2 または $ + 3 になります。) VF オーバフローフラグ (src) ソースメモリ CF キャリーフラグの内容の反転 (dst) デスティネーションメモリ IMF 割り込みマスタ許可フラグ Page 2 TLCS-870/C 表 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 ビットのソースデータが 00H のとき、“1” がセットされます。00H 以外のときは “0” がセットさ れます。 • 交換 交換前の g または (src) の内容が 00H のとき “1” がセットされます。00H 以外のときは “0” がセッ トされます。 • 演算 演算結果が 00H (8 ビット演算 ), 0000H (16 ビット演算 ) のとき “1” がセットされます。それ以外 のときは “0” がセットされます。 ただし、乗算のときは積の上位 8 ビットが、除算のときは余りが、それぞれ 00H のとき “1” に セットされます。00H 以外のときは “0” がセットされます。 • シフト / ローテート シフト / ローテート後のレジスタの内容が 00H のとき “1” がセットされます。00H 以外のときは “0” がセットされます。 • C その他 JF の欄に Z とある場合は、ZF にセットされる値が JF にもセットされることを示します。 キャリー情報がセットされます。 • 加算 最上位ビットからキャリー ( 桁上げ ) がセットされます。 • 減算 最上位ビットへのボロー ( 桁借り ) がセットされます。 • 除算 除数が 00H のときまたは商が 100H 以上のとき “1” がセットされます。それ以外のときは “0” が • その他 JF の欄に C とある場合は、CF にセットされる値が JF にもセットされることを示します。 セットされます。 C CF にセットされる値の反転値がセットされます。 H ハーフキャリー情報がセットされます。 S • 加算 ビット 3 からのキャリー ( 桁上げ ) がセットされます。 • 減算 ビット 3 へのボロー ( 桁借り ) がセットされます。 サイン情報 ( データの最上位ビット ) がセットされます。 V オーバフロー情報がセットされます。 J JF にセットされる値の反転値がセットされます。 1 “1” がセットされます。 0 “0” がセットされます。 U 不定値がセットされます。 − フラグは変化せず、命令実行前の値が保持されます。 Page 3 1. 概要 1.2 ニモニック TLCS-870/C 1.2 ニモニック TLCS-870/C シリーズの命令のニモニックの規則は、以下のとおりです。 ニモニックは、オペコードとオペランドから構成されています ( オペランドのない命令もあります )。 オペコードの次に 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) ニモニック 機能 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/C 表 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/C シリーズは、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 オペコードは、指定レジスタの内容を無視します。 Page 5 1. 概要 1.4 アドレッシングモード TLCS-870/C ① 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/C シリーズには、17 種類のアドレッシングモード ( アドレス指定の方法 ) があります。なお、 命令によっては、複数のアドレッシングモードが組み合わさることもあります。 1.4.1 レジスタ間接 1.4.1.1 レジスタ間接 (HL), (DE), (IX), (IY) 16 ビットレジスタ HL, DE, IX, IY の内容で指定されるアドレス。 1: HL LD A, (HL) 01 23 0123H 5F 5F A HL レジスタの内容で指定されるアドレスすなわち 0123H 番地のメモリの内容 5FH が A レジ スタにロードされます。 2: IX LD 01 A, (IX) 23 0123H 75 75 A IX レジスタの内容で指定されるアドレスすなわち 0123H 番地のメモリの内容 75H が A レジ スタにロードされます。 Page 6 TLCS-870/C 3: IY LD A, (IY) 01 23 0123H 9B 9B A IY レジスタの内容で指定されるアドレスすなわち 0123H 番地のメモリの内容 9BH が A レジ スタにロードされます。 1.4.1.2 8 ビットディスプレースメント オフセット付きレジスタ間接 (HL + d), (IX + d), (IY + d) 16 ビットレジスタ HL, IX, IY の内容にオブジェクトコード中の 8 ビットディスプレイスメン ト d を符号拡張 ( 下表参照 ) して加算した値で指定されるアドレス。なお、16 ビットレジスタ HL, IX, IY の内容は変化しません。 ディスプレースメント d 符号拡張した値 00H~7FH 0000H~007FH (0~+127) 80H~FFH FF80H~FFFFH (−128~−1) d 1 1: LD 2 A, (HL + 12H) D7 12 HL 01 23 + 00 01 12 35 0135H C4 C4 A HL レジスタの内容 (0123H) にディスプレースメント (12H) を符号拡張して (0012H) 加算した 値で指定されるアドレスすなわち 0135H 番地のメモリの内容 C4H が A レジスタにロードされ ます。 2: LD A, (IX + 0D6H) D4 D6 IX + 1 01 23 FF D6 00 F9 00F9H Page 7 27 27 A 1. 概要 1.4 アドレッシングモード TLCS-870/C IX レジスタの内容 (0123H) にディスプレースメント (D6H) を符号拡張して (FFD6H) 加算した 値で指定されるアドレスすなわち 00F9H 番地のメモリの内容 27H が A レジスタにロードされま す。 1.4.1.3 レジスタインデックス (HL + C) HL レジスタの内容に C レジスタの内容を符号拡張 ( 下表参照 ) して、加算した値で指定され るアドレス。なお、HL レジスタ , C レジスタの内容は変化しません。 C C レジスタ 符号拡張した値 00H~7FH 0000H~007FH (0~+127) 80H~FFH FF80H~FFFFH (−128~−1) : LD HL 01 23 FF F5 01 18 F5 A, (HL + C) + 1 0118H 36 A 36 HL レジスタの内容 (0123H) に C レジスタの内容 (F5H) を符号拡張して (FFF5H) 加算した値で 指定されるアドレスすなわち 0118H 番地のメモリの内容 36H が A レジスタにロードされます。 1.4.1.4 スタックポインタ間接オートプリインクリメント (+SP) まず、SP の内容をインクリメントします。実効アドレスはインクリメントされた SP の内容 となります。SP のインクリメントによるフラグ変化はありません。 このアドレッシングモードは、ソース ( 転送元 ) メモリのアドレス指定にのみ使用できます。 : LD A, (+SP) SP ( ) 4 3 1 F SP ( ) 4 3 2 0 4320H B7 B7 A SP の内容にインクリメントし、その値で指定されるアドレスすなわち 4320H 番地のメモリの 内容 B7H が A レジスタにロードされます。 1.4.1.5 スタックポインタ間接オートポストデクリメント (SP−) 実効アドレスは SP の内容となります。データ処理後、SP の内容は自動的にデクリメントさ れます。SP のデクリメントによるフラグ変化はありません。 このアドレッシングモードは、デスティネーション ( 転送元 ) メモリのアドレス指定にのみ使 用できます。 Page 8 TLCS-870/C : LD (SP ), A SP ( ) 3 0 0 0 SP ( ) 2 F F F 1C 3000H 1C A SP の内容で指定されるアドレスすなわち 3000H 番地のメモリに A レジスタの内容 1CH がス トアされます。その後、SP はデクリメントされ、2FFFH となります。 1.4.1.6 8 ビットディスプレースメントオフセット付きスタックポインタ間接 (SP + d) スタックポインタ SP の内容に、オブジェクトコード中の 8 ビットディスプレースメント d を 符号拡張 ( 下表参照 ) して、加算した値が実効アドレスとなります。なお、SP の内容は変化し ません。 ディスプレースメント d 符号拡張した値 00H~7FH 0000H~007FH (0~+127) 80H~FFH FF80H~FFFFH (−128~−1) d 1 : LD 2 WA, (SP + 0D6H) D6 D6 48 SP 12 34 + FF D6 12 0A 1 120AH 120BH 27 4E 4E 27 WA SP の内容 (1234H) にディスプレースメント (D6H) を符号拡張して (FFD6H) 加算した値で指定 されるアドレスすなわち 120AH 番地から連続する 2 バイトのメモリの内容 4E27H が WA レジ スタにロードされます。 1.4.1.7 レジスタオフセットリラティブインデックス (PC + A) プログラムカウンタの内容 ( 実行命令の先頭アドレス +2) に A レジスタの内容を符号拡張 ( 下 表参照 ) して加算した値で指定されるアドレス。このアドレッシングモードは、ソース ( 転送元 ) アドレスの指定にのみ使用できます。このアドレッシングモードを使用することにより、BCD コード → 7 セグメントコードなどのコード変換 , テーブルルックアップ , テーブルサーチや n 通 りの多方向分岐処理などを容易にプログラムすることができます。 Page 9 1. 概要 1.4 アドレッシングモード TLCS-870/C 1: LD アキュムレータ 符号拡張した値 00H~7FH 0000H~007FH (0~+127) 80H~FFH FF80H~FFFFH (−128~−1) A, (PC + A) +2 PC A( ) 07 C5 38 00 07 C5 3F C536H C537H 3F 40 C53FH D8 LD A, (PC + A) + A( ) D8 プログラムカウンタの内容 (C538H) に A レジスタの内容 (07H) を符号拡張して (0007H) 加算 した値で指定されるアドレスすなわち C53FH 番地のメモリの内容 D8H が A レジスタにロード されます。 2: JP (PC + A) +2 PC A 16 C1 74 00 16 C1 8A C172H 3F FE C18AH C18BH 4B D0 JP (PC + A) + D0 4B PC プログラムカウンタの内容 (C174H) に A レジスタの内容 (16H) を符号拡張して (0016H) 加算 した値で指定されるアドレスすなわち C18AH 番地から連続する 2 バイトのメモリ内容 D04BH がプログラムカウンタにロードされます。すなわち D04BH 番地にジャンプします。 1.4.2 ダイレクト 1.4.2.1 8 ビットダイレクト (x) オブジェクトコード中の 8 ビット値 x で直接指定される 0000H~00FFH 番地のアドレス。 Page 10 TLCS-870/C : LD A, (87H) x 0087H 19 0C 87 19 A LD A, (87H) オブジェクトコードの x (87H) で直接指定されるアドレスすなわち 0087H 番地の内容 19H が A レジスタにロードされます。 1.4.2.2 16 ビットダイレクト (vw) オブジェクトコード中の 16 ビット値 vw で直接指定される 0000H~FFFFH 番地のアドレス。 : LD A, (5678H) E1/F1 5678H 24 24 w A 1 E1 78 56 40 56 v 1 LD 78 オブジェクトコードの vw (5678H) で直接指定されるアドレスすなわち 5678H 番地の内容 24H が A レジスタにロードされます。 1.4.3 レジスタ r または rr オブジェクトコード ( オペコード ) 中のレジスタ指定フィールドにより指定されるレジスタが操作 対象となります。 1: LD 0001 A, B 2: 0011 INC 0011 011 → B DE 1010 010 → DE Page 11 1. 概要 1.4 アドレッシングモード TLCS-870/C 1.4.4 イミディエート n または mn オブジェクトコード中の即値 ( イミディエートデータ ) が操作対象となります。なお、16 ビット 即値の場合、若いアドレスの方から下位 8 ビット → 上位 8 ビットの順にメモリに格納します。 1: LD A, 53H n C000H C001H 2: LD 18 53 53 A WA, 1234H n C000H C001H C002H m 48 34 12 12 W 34 A 注 ) アセンブラソースプログラム記述上、即値をカッコで囲むことはできません。カッコで囲んだ場合はダイレ クトアドレッシングモードと見なされます。 1.4.5 リラティブ ( 相対 ) 1.4.5.1 8 ビットディスプレースメントリラティブ プログラムカウンタの内容 ( 実行命令の先頭アドレス +2 または +3) に、オブジェクトコード 中の 8 ビットディスプレースメント値 d を符号拡張 ( 下表参照 ) して、加算した値で指定される アドレス。このアドレッシングモードを持つ命令は、JR 命令のみです。 ディスプレースメント d 符号拡張した値 00H~7FH 0000H~007FH (0~+127) 80H~FFH FF80H~FFFFH (−128~−1) d Page 12 TLCS-870/C 1: JR $ + 2 + 35H JR 0D578H +2 PC D5 43 + 00 35 D5 78 D541H FC 35 JR D578H プログラムカウンタの内容 (D543H) にディスプレースメント値 35H を符号拡張して加算した 値で指定されるアドレスすなわち D578H 番地にジャンプします。 注 ) $: 実行命令の先頭アドレス 2: JR M, $ + 3 + 35H JR +3 PC D5 44 + 00 35 D5 79 M, 0D579H E8 D0 35 D541H JR M, a D579H サインフラグが “1” なら、 プログラムカウンタの内容 (D544H) にディスプレースメント値 35H を符号拡張して加算した値で指定されるアドレスすなわち D579H 番地にジャンプします。 注 ) $: 実行命令の先頭アドレス 1.4.5.2 5 ビットディスプレースメントリラティブ プログラムカウンタの内容 ( 実行命令の先頭アドレス +2) に、オペコード中の 5 ビットディス プレースメント値 d を符号拡張 ( 下表参照 ) して、加算した値で指定されるアドレス。このアド レッシングモードを持つ命令は、JRS 命令のみです。 ディスプレースメント d 符号拡張した値 00H~0FH 0000H~000FH (0~+15) 10H~1FH FFF0H~FFFFH (−16~−1) 7 6 5 4 3 2 1 d Page 13 0 1. 概要 1.4 アドレッシングモード TLCS-870/C : JRS T, $ + 2 + 14H JRS T, 0E859H E859H +2 PC E8 65 + FF F4 E8 59 1 E863H 94 JRS ジャンプステータスフラグが “1” なら、 プログラムカウンタの内容 (E865H) にディスプレース メント値 14H を符号拡張して (FFF4H) 加算した値で指定されるアドレスすなわち E859H 番地に ジャンプします。 注 ) $: 実行命令の先頭アドレス 1.4.6 アブソリュート ( 絶対 ) オブジェクトコード中の 16 ビット値 ( 下位 8 ビット → 上位 8 ビットの順に格納される ) で指定さ れるアドレス。 : JP 0F1A3H m C075H PC F1 A3 FE A3 F1 JP F1A3H オペランドで指定されるアドレスすなわち F1A3H 番地にジャンプします。 1.4.7 ベクタ オペコード中の 4 ビットデータ n を 2 倍し、FFC0H を加えた値をアドレスとするメモリから読み 出した 16 ビットデータ ( ベクタアドレス ) で指定されるアドレス。このアドレッシングモードを持 つ命令は、CALLV 命令のみです。 Page 14 TLCS-870/C : CALLV 9H 7 D201H n= + 9 2 12 FF C0 FF D2 79 6 CALLV 5 4 3 2 1 0 n E073H FFD2H FFD3H 73 E0 E0 73 PC オペコード中の n (9H) を 2 倍して FFC0H を加算した値 FFD2H 番地から連続する 2 バイトの内容 E073H 番地をコールします。 1.4.8 直接ビット レジスタビット 1.4.8.1 オペコード中のレジスタ指定フィールド、ビット指定フィールドで指定されるレジスタの ビットが操作対象となります。 : SET A.3 A "1" 1110 3 A 1100 = 000 1 1.4.8.2 1000 0011 011 = 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 + 57H). 6 例 3: SET (0058H). 3 レジスタ間接ビット メモリアドレッシングモード (HL), (DE), (IX), (IY), (HL + d), (IX + d), (IY + d), (HL + C), (+SP), (SP + d), (PC + A), (x), (vw) で指定されるアドレスの、A レジスタの下位 3 ビットの内容で指定されるビッ トが操作対象となります。 Page 15 1. 概要 1.4 アドレッシングモード TLCS-870/C : SET (HL). A 7 6 5 4 3 21 0 9C A 4 HL 01 23 0123H 1 1 0 0 0 11 0 1 HL レジスタの内容 (0123H) で指定されるアドレスの内容 (11000110B) の A レジスタの下位 3 ビッ トの内容 (100B) で指定されるビット 4 が "1" にセットされ 11010110B となります。 1110 1 0011 1111 0010 2 (HL) SET (mem). A 1001 1100 100 = Page 16 4 TLCS-870/C 命令の説明 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) フラグ サイクル オペレーション J Z C H S V 0 0 0 1 0 r r r 1 Z – – – – 1 A←r 8 ビットレジスタ r の内容をアキュムレータにロードします。ゼロフラグは、r = 00H のとき “1” にセットされ、r ≠ 00H のとき “0” にク リアされます。 0 1 0 0 0 r r r 1 Z – – – – 1 r←A アキュムレータの内容を 8 ビットレジスタ r にロードします。ゼロフラグは、A = 00H のとき “1” にセットされ、A ≠ 00H のとき “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 = 00H のとき “1” にセットされ、g ≠ 00H のとき “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 = 1234H のとき、LD HL, DE 命令を実行すると、HL = 1234H となります。 0 0 0 0 1 1 0 0 x x x x x x x x 1 Z – – – – 3 A ← (x) オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容をアキュムレータにロードします。アキュム レータに転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 0 0 0 0 1 1 0 1 1 Z – – – – 2 A ← (HL) HL レジスタペアで指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容をアキュムレータにロードします。アキュムレータに転送さ れるデータが 00H のとき、ゼロフラグが “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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジ スタ r に転送されるデータが 00H のとき、ゼロフラグが “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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジ スタ r に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 0 0 1 0 0 1 0 0 0 r r r 1 Z – – – – 3 r ← (DE) レジスタペア DE で指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転送さ れるデータが 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 0 0 1 1 0 1 0 0 0 r r r 1 Z – – – – 3 r ← (HL) レジスタペア HL で指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転送さ れるデータが 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 0 1 0 0 0 1 0 0 0 r r r 1 Z – – – – 3 r ← (IX) インデックスレジスタ IX で指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 0 1 0 1 0 1 0 0 0 r r r 1 Z – – – – 3 r ← (IY) インデックスレジスタ IY で指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “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) スタックポインタの内容にオブジェクト中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8 ビッ トレジスタ r にロードします。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “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) スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容を 8 ビットレジスタ r にロードします。レジス タ r に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。この命令は 8 ビットデータのスタックからのポップ処理に 使います。 0 1 0 1 1 1 1 1 0 1 0 0 0 r r r 1 Z – – – – 5 r ← (PC+A) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容を 8 ビットレジスタ r にロードします。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。 例 : 0072H, 0073H 番地がそれぞれ 8EH, 59H のとき、LD WA, (72H) 命令を実行すると、W = 59H, A = 8EH となります。 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。vw として 0FFFH 番地を指定した場合、レジスタの上位バイトには 1000H 番地のメモリ内容がロードされます。 オブジェクトコード (2 進 ) Page 17 2. 命令の説明 2.1 転送、交換 TLCS-870/C ニモニック 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 フラグ サイクル オペレーション 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 r – – – – – 6 rr ← (SP+d+1, SP+d) スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr にロードします。 例 :SP = 51E4H で 5216H, 5217H 番地のメモリ内容がそれぞれ 9FH, C3H のとき、LD WA, (SP + 32H) 命令を実行すると、A = 9FH, W = C3H となります。 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) スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 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) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内 容を 16 ビットレジスタ rr にロードします。 0 0 0 0 1 1 1 0 x x x x x x x x 1 – – – – – 3 (x) ← A オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリにアキュムレータの内容をストアします。 0 0 0 0 1 1 1 1 1 – – – – – 2 (HL) ← A HL レジスタペアで指定されるアドレス (0000H~FFFFH 番地 ) のメモリにアキュムレータの内容をストアします。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリに 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。 1 1 1 1 0 0 1 0 0 1 1 1 1 r r r 1 – – – – – 3 (DE) ← r レジスタペア DE で指定されるアドレス (0000H~FFFFH 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。 1 1 1 1 0 0 1 1 0 1 1 1 1 r r r 1 – – – – – 3 (HL) ← r レジスタペア HL で指定されるアドレス (0000H~FFFFH 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。 1 1 1 1 0 1 0 0 0 1 1 1 1 r r r 1 – – – – – 3 (IX) ← r インデックスレジスタ IX で指定されるアドレス (0000H~FFFFH 番地 ) のメモリに 8 ビットレジスタ r の内容をストアします。 1 1 1 1 0 1 0 1 0 1 1 1 1 r r r 1 – – – – – 3 (IY) ← r インデックスレジスタ IY で指定されるアドレス (0000H~FFFFH 番地 ) のメモリに 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 – – – – – 5 (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 – – – – – 5 (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 – – – – – 5 (SP+d) ← r スタックポインタの内容にオブジェクトコード中の 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 – – – – – 5 (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 スタックポインタで指定されるアドレスのメモリに 8 ビットレジスタ r の内容をストアします。その後、スタックポインタの内容をデク リメントします。この命令は 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 で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 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/C ニモニック 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 フラグ サイクル オペレーション 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 – – – – – 6 (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 – – – – – 6 (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 – – – – – 6 (SP+d+1, SP+d) ← rr スタックポインタの内容にオブジェクトコード中の 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 – – – – – 6 (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 スタックポインタで指定されるアドレスから連続する 2 バイトのメモリに 16 ビットレジスタ rr の内容をストアします。その後、スタッ クポインタの内容をデクリメントします。この命令は 16 ビットレジスタのスタックへのプッシュ処理に使います。 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, 53H 命令を実行すると、A = 53H となります。 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, 1234H 命令を実行すると、A = 34H, W = 12H となります。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリにオブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリにオブジェクトコード中の即値 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 – – – – – 6 (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 – – – – – 6 (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 – – – – – 6 (SP+d) ← n n n n n n n n n スタックポインタの内容にオブジェクトコード中の 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 – – – – – 6 (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 をスタックポインタで指定されるアドレスのメモリにストアします。その後、スタックポインタの内容 をデクリメントします。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) から連続 する 2 バイトのメモリに下位 n、上位 m の順にストアします。 例 : LDW (73H),1234H を実行すると、0073H 番地には、34H が、0074H 番地には、12H が書き込まれます。 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 転送、交換 TLCS-870/C ニモニック PUSH rr#1 PUSH gg POP rr#1 POP gg PUSH PSW POP PSW LD PSW,n 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) XCH r,(IY+d) XCH r,(SP+d) フラグ サイクル オペレーション J Z C H S V 0 1 0 1 0 0 r r – – – – – – 3 (SP, SP−1) ← rr:SP ← SP−2 スタックポインタで指定されるアドレスのメモリにレジスタ rr の上位 8 ビットの内容を、前記アドレスから 1 を引いた値で指定される アドレスのメモリにレジスタ rr の下位 8 ビットの内容を、それぞれストアします。その後、スタックポインタの内容から 2 を減じます。 rr としては、WA, BC, DE, HL のみ指定可能です。 例 : SP = 013FH、WA = 1234H のとき、PUSH WA 命令を実行すると、013FH, 013EH 番地の内容は 12H, 34H となります。また、SP = 013DH になります。 1 1 1 0 1 g g g 1 1 0 1 1 0 0 0 – – – – – – 4 (SP, SP−1) ← gg:SP ← SP−2 スタックポインタで指定されるアドレスのメモリにレジスタ gg の上位 8 ビットの内容を、前記アドレスから 1 を引いた値で指定される アドレスのメモリにレジスタ gg の下位 8 ビットの内容を、それぞれストアします。その後、スタックポインタの内容から 2 を減じま す。 例 : SP = 013FH, IX = 1234H のとき、PUSH IX 命令を実行すると、013FH, 013EH 番地の内容は 12H, 34H となります。また、SP = 013DH になります。 1 1 0 1 0 0 r r – – – – – – 4 SP ← SP+2:rr ← (SP, SP−1) スタックポインタの内容に 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) スタックポインタの内容に 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 スタックポインタで指定されるアドレスのメモリにプログラムステータスワード PSW の内容をストアし、その後、スタックポインタの 内容をデクリメントします。 例 : SP = 2345H, PSW = 63H (JF = HF = SF = VF = 0, ZF = CF = 1) のとき、PUSH PSW 命令を実行すると、2345H 番地の内容は 63H となります。また、SP = 2344H になります。 1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 1 SP ← SP+1:PSW ← (SP) * * * * * * 4 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容をプログラムステータスワード PSW にロード します。 例 : 0137H 番地のメモリ内容がそれぞれ 63H で、SP = 0136H のとき、POP PSW 命令を実行すると、SP = 0137H, PSW = 63H (JF = HF = SF = VF = 0, ZF = CF = 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 プログラムステータスワード PSW に、オブジェクトコード中の即値 n をストアします。即値 n は最上位ビットから JF, ZF, CF, HF, SF, VF に対応し、最下位の 2 ビットは無視されます。 例 : LD FLAG, 00110100B 命令を実行すると、JF = 0, ZF = 0, CF = 1, HF = 1, SF = 0, VF = 1 となります。 0 0 1 1 0 1 1 1 d d d d d d d d 1 – – – – – 3 SP ← SP+d スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を加算した値がスタックポインタにロードされます。従って、こ の命令はスタックポインタの即値加算命令になります。 例 : SP = 2345H のとき、LD SP, SP + 4 を実行すると、SP = 2349H, JF = 1 となります。 0 0 1 1 1 1 1 1 d d d d d d d d 1 – – – – – 3 SP ← SP−d スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を減算した値がスタックポインタにロードされます。従って、こ の命令はスタックポインタの即値減算命令になります。 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 の内容が 00H のとき “1” にセット され、00H 以外のとき “1” にクリアされます。 例 : A = 3CH, B = 5FH のとき、XCH A, B 命令を実行すると、A = 5FH, B = 3CH, 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 = 0123H, DE = 9587H のとき、XCH HL, DE 命令を実行すると、HL = 9587H, DE = 0123H となります。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容と 8 ビットレジスタ r の内容とを交換します。 レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容と 8 ビットレジスタ r の内容を交換します。 レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータ が 00H のとき、ゼロフラグが “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 に転送されるデータ が 00H のとき、ゼロフラグが “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 に転送されるデー タが 00H のとき、ゼロフラグが “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 に転送されるデー タが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 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 に転送されるデータが 00H のとき、ゼロフラグが “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) スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 オブジェクトコード (2 進 ) Page 20 TLCS-870/C ニモニック 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 フラグ サイクル オペレーション J Z C H S V 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 に転送されるデータが 00H のとき、ゼロフラグが “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 に転送されるデータが 00H のとき、ゼロフラグが “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) スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換します。 レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “1” にセットされます。 0 1 0 0 1 1 1 1 0 1 1 1 0 r r r 1 Z – – – – 6 r ↔ (PC+A) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 8 ビットレジスタ r の内容とを交換します。レジスタ r に転送されるデータが 00H のとき、ゼロフラグが “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 で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 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) スタックポインタの内容にオブジェクトコード中の 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) スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 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) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内 容と 16 ビットレジスタ rr の内容とを交換します。 オブジェクトコード (2 進 ) rr は WA, BC, DE, HL のみ Page 21 2.2 演算 TLCS-870/C 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 フラグ サイクル オペレーション 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 アキュムレータの内容をオブジェクトコード中の即値 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 0 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 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容と 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容と 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) スタックポインタの内容にオブジェクトコード中の 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) スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容と 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) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容をオブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容をオブジェクトコード中の即値 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 と比較します。 1 1 0 1 0 1 0 1 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 n n n n n n n n インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスのメモリ 内容をオブジェクトコード中の即値 n と比較します。 オブジェクトコード (2 進 ) Page 22 TLCS-870/C 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) フラグ サイクル オペレーション J Z C H S V 0 1 1 1 Z Z C H S V 6 (SP+d)–n オブジェクトコード (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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容をオブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をオブジェクトコード 中の即値 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 6 rr–(x) オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 7 rr–(vw) 1 0 r r r 1 1 1 オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 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 5 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 5 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 5 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 5 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 7 rr–(IX+d) CMP rr,(IX+d) インデックスレジスタ IX にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。 CMP rr,(IY+d) インデックスレジスタ IY にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。 CMP rr,(SP+d) スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。 CMP rr,(HL+d) HL レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バ イトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。 CMP rr,(HL+C) HL レジスタペアの内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容を 16 ビットレジスタ rr の内容と比較します。 CMP rr,(+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 7 rr–(PC+A) CMP rr,(PC+A) プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内 容を 16 ビットレジスタ rr の内容と比較します。 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 ADD A,n ADD g,n ADD gg,mn ADD r,g ADD rr,gg ADD r,(x) ADD r,(vw) 0 1 1 0 0 1 0 1 d d d d 0 1 1 0 d d d d 0 1 1 1 d d d d 0 1 1 1 1 0 r r 0 1 1 0 1 0 r r 0 0 0 1 n n n n d d d d 1 0 r r d d d d 1 0 r r d d d d 1 0 r r r 1 1 1 r 1 1 1 Z Z C U S V 7 r 1 1 1 Z Z C U S V 7 r 1 1 1 Z Z C U S V 7 Z Z C U S V 7 r 1 1 1 Z Z C U S V 6 n n n n C Z C H S V 2 rr–(IY+d) rr–(SP+d) rr–(HL+d) rr–(HL+C) SP ← SP+1:rr–(SP) A ← A+n アキュムレータの内容に、オブジェクトコード中の即値 n を加算し、結果をアキュムレータに入れます。 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 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容を加算し、結果 をレジスタ 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を加算し、結 果をレジスタ r に入れます。 Page 23 2.2 演算 TLCS-870/C ニモニック 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) フラグ サイクル オペレーション 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 の内容に、スタックポインタの内容にオブジェクトコード中の 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 の内容に、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容を加算し、結果 をレジスタ 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 の内容に、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメ モリ内容を加算し、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容に、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容に、オブジェクトコード中の即値 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容にオブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクトコー ド中の即値 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 6 rr ← rr+(x+1, x) 16 ビットレジスタ rr の内容に、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 2 バイトのメ モリ内容を加算し、結果をレジスタ rr に入れます。 オブジェクトコード (2 進 ) Page 24 TLCS-870/C ニモニック 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) フラグ サイクル オペレーション J Z C H S V v v v v C Z C U S V 7 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトの メモリ内容を加算し、結果を前記のアドレスに入れます。 1 1 1 0 0 0 1 0 1 0 r r r 0 0 1 C Z C U S V 5 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 5 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 5 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 5 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 7 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 7 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 7 rr ← rr+(SP+d+1, SP+d) 16 ビットレジスタ rr の内容に、スタックポインタの内容にオブジェクトコード中の 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 7 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 7 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 6 SP ← SP+1:rr ← rr+(SP+1, SP) 16 ビットレジスタ rr の内容に、スタックポインタの内容をインクリメントしその値で指定されるアドレスのメモリ内容を加算し、結果 をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 0 0 1 C Z C U S V 7 rr ← rr+(PC+A+1, PC+A) 16 ビットレジスタ rr の内容に、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスか ら連続する 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 アキュムレータの内容に、オブジェクトコード中の即値 n およびキャリーフラグの内容を加算し、結果をアキュムレータに入れます。 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 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容およびキャリー フラグの内容を加算し、結果をレジスタ 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容およびキャ リーフラグの内容を加算し、結果をレジスタ 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 の内容に、スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ れるアドレスのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ r に入れます。 Page 25 2.2 演算 TLCS-870/C ニモニック ADDC r,(HL+d) ADDC r,(HL+C) ADDC r,(+SP) フラグ サイクル オペレーション 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 の内容に、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容およびキャリー フラグの内容を加算し、結果をレジスタ r に入れます。 オブジェクトコード (2 進 ) 0 1 0 0 ADDC r,(PC+A) ADDC (x),n ADDC (vw),n 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 の内容に、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメ モリ内容およびキャリーフラグの内容を加算し、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容に、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容に、オブジェクトコード中の即値 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 ADDC (DE),n レジスタペア 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 ADDC (HL),n レジスタペア 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 ADDC (IX),n インデックスレジスタ 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 ADDC (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 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 0 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 およびキャリーフラグの内容を加算し、結果を前記のアドレスに入れます。 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 スタックポインタの内容に、オブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容に、オブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容に、オブジェクトコー ド中の即値 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 6 rr ← rr+(x+1, x)+CF 16 ビットレジスタ rr の内容に、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 7 rr ← rr+(vw+1, vw) 1 0 r r r 0 0 0 16 ビットレジスタ rr の内容に、オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトの メモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 0 0 0 C Z C U S V 5 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 0 C Z C U S V 5 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 0 C Z C U S V 5 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 0 C Z C U S V 5 rr ← rr+(IY+1,IY) 16 ビットレジスタ rr の内容に、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフ ラグの内容を加算し、結果をレジスタ rr に入れます。 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) Page 26 TLCS-870/C ニモニック ADDC rr,(IX+d) ADDC rr,(IY+d) フラグ サイクル オペレーション 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 7 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 0 C Z C U S V 7 rr ← rr+(IY+d+1, IY+d) 16 ビットレジスタ rr の内容に、インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した 値で指定されるアドレスから連続する 2 バイトのメモリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。 オブジェクトコード (2 進 ) 1 1 0 1 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 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 7 rr ← rr+(SP+d+1, SP+d) 16 ビットレジスタ rr の内容に、スタックポインタの内容にオブジェクトコード中の 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 7 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 0 C Z C U S V 7 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 0 C Z C U S V 6 SP ← SP+1:rr ← rr+(SP+1, SP) 16 ビットレジスタ rr の内容に、スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメ モリ内容およびキャリーフラグの内容を加算し、結果をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 0 0 0 C Z C U S V 7 rr ← rr+(PC+A+1, PC+A) 16 ビットレジスタ rr の内容に、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスか ら連続する 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 アキュムレータの内容から、オブジェクトコード中の即値 n を引き、結果をアキュムレータに入れます。 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 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容を引き、結果 をレジスタ 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容を引き、結 果をレジスタ 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 の内容から、スタックポインタの内容にオブジェクトコード中の 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 の内容から、スタックポインタの内容をインクリメントしその値で指定されるアドレスのメモリ内容を引き、結果を レジスタ 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 の内容から、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの メモリ内容を引き、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容から、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容から、オブジェクトコード中の即値 n を引 き、結果を前記のアドレスに入れます。 Page 27 2.2 演算 TLCS-870/C ニモニック 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 フラグ サイクル オペレーション 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容からオブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクト コード中の即値 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 6 rr ← rr–(x+1, x) 16 ビットレジスタ rr の内容から、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 7 rr ← rr–(vw+1, vw) 1 0 r r r 0 1 1 16 ビットレジスタ rr の内容から、オブジェクトコード中の x で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトの メモリ内容を引き、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 0 1 1 C Z C U S V 5 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 5 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 5 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 5 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 7 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 7 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 7 rr ← rr–(SP+d+1, SP+d) 16 ビットレジスタ rr の内容から、スタックポインタの内容にオブジェクトコード中の 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 7 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 7 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 6 SP ← SP+1:rr ← rr–(SP+1, SP) 16 ビットレジスタ rr の内容から、スタックポインタの内容をインクリメントしその値で指定されるアドレスから連続する 2 バイトのメ モリ内容を引き、結果をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 0 1 1 C Z C U S V 7 rr ← rr–(PC+A+1, PC+A) 16 ビットレジスタ rr の内容から、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレス から連続する 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 アキュムレータの内容から、オブジェクトコード中の即値 n およびキャリーフラグの内容を引き、結果をアキュムレータに入れます。 オブジェクトコード (2 進 ) Page 28 TLCS-870/C ニモニック 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 フラグ サイクル オペレーション 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 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容およびキャ リーフラグの内容を引き、結果をレジスタ 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容およびキャ リーフラグの内容を引き、結果をレジスタ 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 の内容から、スタックポインタの内容にオブジェクトコード中の 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 の内容から、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容およびキャ リーフラグの内容を引き、結果をレジスタ 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 の内容から、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの メモリ内容およびキャリーフラグの内容を引き、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容から、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容から、オブジェクトコード中の即値 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 29 2.2 演算 TLCS-870/C ニモニック 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) AND r,(DE) フラグ サイクル オペレーション 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されたアドレスのメモリ内容からオブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容から、オブジェクト コード中の即値 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 6 rr ← rr–(x+1, x) 16 ビットレジスタ rr の内容から、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 7 rr ← rr–(vw+1, vw) 1 0 r r r 0 1 0 16 ビットレジスタ rr の内容から、オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイト のメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 0 1 0 C Z C U S V 5 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 0 C Z C U S V 5 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 0 C Z C U S V 5 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 0 C Z C U S V 5 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 0 C Z C U S V 7 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 0 C Z C U S V 7 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 0 C Z C U S V 7 rr ← rr–(SP+d+1, SP+d) 16 ビットレジスタ rr の内容から、スタックポインタの内容にオブジェクトコード中の 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 7 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 0 C Z C U S V 7 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 0 C Z C U S V 6 SP ← SP+1:rr ← rr–(SP+1, SP) 16 ビットレジスタ rr の内容から、スタックポインタの内容をインクリメントしその値で指定されるアドレスから連続する 2 バイトのメ モリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 0 1 0 C Z C U S V 7 rr ← rr–(PC+A+1, PC+A) 16 ビットレジスタ rr の内容から、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレス のメモリ内容およびキャリーフラグの内容を引き、結果をレジスタ rr に入れます。 0 1 1 0 0 1 0 0 n n n n n n n n Z Z – – – – 2 A ← A&n アキュムレータの内容と、オブジェクトコード中の即値 n とでビットごとの論理積を取り、結果をアキュムレータに入れます。 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 – – – – 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容とでビット ごとの論理積を取り、結果をレジスタ 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) 8 ビットレジスタ r の内容と、オブジェクトコード中の即値 vw で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容とでビッ トごとの論理積を取り、結果をレジスタ r に入れます。 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 に入れます。 Page 30 TLCS-870/C ニモニック 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 AND rr,(x) フラグ サイクル オペレーション J Z C H S V 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 の内容と、スタックポインタの内容にオブジェクトコード中の 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 の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビットごと の論理積を取り、結果をレジスタ 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 の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメ モリ内容とでビットごとの論理積を取り、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコー ド中の即値 n とでビットごとの論理積を取り、結果を前記のアドレスに入れます。 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 – – – – 6 rr ← rr&(x) 16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 2 バイトのメ モリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。 オブジェクトコード (2 進 ) Page 31 2.2 演算 TLCS-870/C ニモニック 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) フラグ サイクル オペレーション J Z C H S V v v v v Z Z – – – – 7 rr ← rr&(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 1 0 0 16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトのメ モリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 1 0 0 Z Z – – – – 5 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 – – – – 5 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 – – – – 5 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 – – – – 5 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 – – – – 7 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 – – – – 7 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 – – – – 7 rr ← rr&(SP+d) 16 ビットレジスタ rr の内容と、スタックポインタの内容にオブジェクトコード中の 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 – – – – 7 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 – – – – 7 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 – – – – 6 SP ← SP+1:rr ← rr&(SP) 16 ビットレジスタ rr の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメ モリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 1 0 0 Z Z – – – – 7 rr ← rr&(PC+A) 16 ビットレジスタ rr の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスか ら連続する 2 バイトのメモリ内容とでビットごとの論理積を取り、結果をレジスタ rr に入れます。 0 1 1 0 0 1 1 0 n n n n n n n n Z Z – – – – 2 A ← An アキュムレータの内容と、オブジェクトコード中の即値 n とでビットごとの論理和を取り、結果をアキュムレータに入れます。 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 ← gn 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 ← ggmn 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 ← rg 8 ビットレジスタ r の内容と、8 ビットレジスタ g の内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。 1 1 1 0 1 g g g 1 0 r r r 1 1 0 Z Z – – – – 4 rr ← rrgg 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容とでビットごと の論理和を取り、結果をレジスタ 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 の内容と、オブジェクトコード中の x で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容とでビットごと の論理和を取り、結果をレジスタ 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 に入れます。 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 の内容と、スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定さ れるアドレスのメモリ内容とでビットごとの論理和を取り、結果をレジスタ r に入れます。 Page 32 TLCS-870/C ニモニック 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) OR rr,(IY) フラグ サイクル オペレーション 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 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 の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビットごと の論理和を取り、結果をレジスタ 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 の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメ モリ内容とでビットごとの論理和を取り、結果をレジスタ 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 とでビットごとの論理和を取り、結果を前記のアドレスに入れます。 1 1 0 1 0 1 0 1 d d d d d d d d 0 1 1 0 0 1 1 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 1 0 Z Z – – – – 7 (SP+d) ← (SP+d)n n n n n n n n n スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコー ド中の即値 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 – – – – 6 rr ← rr(x) 16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 – – – – 7 rr ← rr(vw) 1 0 r r r 1 1 0 16 ビットレジスタ rr の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトの メモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 1 1 0 Z Z – – – – 5 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 – – – – 5 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 – – – – 5 rr ← rr(IX) 16 ビットレジスタ rr の内容と、インデックスレジスタ IX で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの 論理和を取り、結果をレジスタ rr に入れます。 1 1 1 0 0 1 0 1 1 0 r r r 1 1 0 Z Z – – – – 5 rr ← rr(IY) 16 ビットレジスタ rr の内容と、インデックスレジスタ IY で指定されるアドレスから連続する 2 バイトのメモリ内容とでビットごとの 論理和を取り、結果をレジスタ rr に入れます。 オブジェクトコード (2 進 ) Page 33 2.2 演算 TLCS-870/C ニモニック 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) フラグ サイクル オペレーション 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 1 1 0 Z Z – – – – 7 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 – – – – 7 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 – – – – 7 rr ← rr(SP+d) 16 ビットレジスタ rr の内容と、スタックポインタの内容にオブジェクトコード中の 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 – – – – 7 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 1 0 Z Z – – – – 7 rr ← 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 – – – – 6 SP ← SP+1:rr ← rr(SP) 16 ビットレジスタ rr の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメ モリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。 0 1 0 0 1 1 1 1 1 0 r r r 1 1 0 Z Z – – – – 7 rr ← rr(PC+A) 16 ビットレジスタ rr の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスか ら連続する 2 バイトのメモリ内容とでビットごとの論理和を取り、結果をレジスタ rr に入れます。 0 1 1 0 0 1 0 1 n n n n n n n n Z Z – – – – 2 A ←A^n アキュムレータの内容と、オブジェクトコード中の即値 n とでビットごとの排他的論理和を取り、結果をアキュムレータに入れます。n = FFH のときは、1 の補数 ( データ反転 ) 命令になります。 例 : A = 69H のとき、XOR A, 0FFH 命令を実行すると、A = 96H, 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 = FFH のときは、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 = FFFFH のときは、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 – – – – 4 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容とでビットごと の排他的論理和を取り、結果をレジスタ 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容とでビットご との排他的論理和を取り、結果をレジスタ 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 の内容と、スタックポインタの内容にオブジェクトコード中の 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 の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容とでビットごと の排他的論理和を取り、結果をレジスタ r に入れます。 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 の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメ モリ内容とでビットごとの排他的論理和を取り、結果をレジスタ r に入れます。 オブジェクトコード (2 進 ) Page 34 TLCS-870/C ニモニック 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) XOR rr,(HL+d) フラグ サイクル オペレーション J Z C H S V 0 1 0 1 Z Z – – – – 6 (x) ← (x)^n オブジェクトコード (2 進 ) 1 1 1 0 0 0 0 0 x x x x x x x x 0 1 1 0 n n n n n n n n オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容と、オブジェクトコード中の即値 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容と、オブジェクトコード中の即値 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容と、オブジェクトコー ド中の即値 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 – – – – 6 rr ← rr^(x) 16 ビットレジスタ rr の内容と、オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 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 – – – – 7 rr ← rr^(vw) 1 0 r r r 1 0 1 16 ビットレジスタ rr の内容と、オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 2 バイトの メモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。 1 1 1 0 0 0 1 0 1 0 r r r 1 0 1 Z Z – – – – 5 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 – – – – 5 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 – – – – 5 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 – – – – 5 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 – – – – 7 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 – – – – 7 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 – – – – 7 rr ← rr^(SP+d) 16 ビットレジスタ rr の内容と、スタックポインタの内容にオブジェクトコード中の 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 1 Z Z – – – – 7 rr ← rr^(HL+d) 16 ビットレジスタ rr の内容と、レジスタペア HL にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定される アドレスから連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。 Page 35 2.2 演算 TLCS-870/C ニモニック 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) DEC (DE) DEC (HL) フラグ サイクル オペレーション J Z C H S V 1 1 1 0 0 1 1 1 1 0 r r r 1 0 1 Z Z – – – – 7 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 1 Z Z – – – – 6 SP ← SP+1:rr ← rr^(SP) 16 ビットレジスタ rr の内容と、スタックポインタの内容をインクリメントし、その値で指定されるアドレスから連続する 2 バイトのメ モリ内容とでビットごとの排他的論理和を取り、結果をレジスタに入れます。 0 1 0 0 1 1 1 1 1 0 r r r 1 0 1 Z Z – – – – 7 rr ← rr^(PC+A) 16 ビットレジスタ rr の内容と、プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスか ら連続する 2 バイトのメモリ内容とでビットごとの排他的論理和を取り、結果をレジスタ rr に入れます。 0 0 1 0 0 r r r C Z – – – – 1 r ← r+1 8 ビットレジスタ r の内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセッ トされます。キャリーフラグは変化しません。 例 : L = FFH のとき、INC L 命令を実行すると、L = 00H, ZF = 1, JF = 1 となります。 0 0 1 1 0 r r r C Z – – – – 2 rr ← rr+1 16 ビットレジスタ rr の内容をインクリメントします。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセッ トされます。 例 : HL = 1234H のとき、INC HL 命令を実行すると、HL = 1235H, 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容をインクリメントします。オーバフローする とジャンプ ステータス フラグ , ゼロフラグがともに “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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容をインクリメントします。オーバフローす るとジャンプ ステータス フラグ , ゼロフラグがともに “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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスのメモリ内容をインクリメントします。メモリの内容がオー バフローするとジャンプ ステータス フラグ , ゼロフラグがともに “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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をインクリメントしま す。オーバフローするとジャンプ ステータス フラグ , ゼロフラグがともに “1” にセットされます。 0 0 1 0 1 r r r C Z – – – – 1 r ← r–1 8 ビットレジスタ r の内容をデクリメントします。アンダーフローする ( 結果が FFH となる ) とジャンプ ステータス フラグが “1” に セットされます。キャリーフラグは変化しません。 例 : L = 00H のとき、DEC L 命令を実行すると、L = FFH, ZF = 0, JF = 1 となります。 0 0 1 1 1 r r r C Z – – – – 2 rr ← rr–1 16 ビットレジスタ rr の内容をデクリメントします。アンダーフローする ( 結果が FFFFH となる ) とジャンプ ステータス フラグが “1” にセットされます。 例 : HL = 8765H のとき、DEC HL 命令を実行すると、HL = 8764H, 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 で直接指定されるアドレス (0000H~00FFH 番地 ) のメモリ内容をデクリメントします。アンダーフローする とジャンプ ステータス フラグが “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 で直接指定されるアドレス (0000H~FFFFH 番地 ) のメモリ内容をデクリメントします。アンダーフローす るとジャンプ ステータス フラグが “1” にセットされます。 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” に セットされます。 オブジェクトコード (2 進 ) Page 36 TLCS-870/C ニモニック 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 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をデクリメントし、その値で指定されるアドレスの内容をデクリメントします。アンダーフローするとジャンプ ステータス フラグが “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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスのメモリ内容をデクリメントしま す。アンダーフローするとジャンプ ステータス フラグが “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 = 26H, B = 57H のとき、ADD A, B 命令を実行すると、A = 7DH, CF = 0, HF = 0 となり、この状態で、DAA A 命令を実行すると、 A = 83H, 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 MUL W,A MUL B,C 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 = 87H, B = 39H のとき、SUB A, B 命令を実行すると、A = 4EH, CF = 0, HF = 1 となり、この状態で、DAS A 命令を実行すると、 A = 48H, CF = 0 となります。 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 Z Z – – – – 8 WA ← W×A W レジスタの内容 ( 符号なし整数 ) にアキュムレータの内容 ( 符号なし整数 ) を掛け、結果を 16 ビットアキュムレータに入れます。ゼ ロフラグは、結果の上位 8 ビット (W レジスタに格納される値 ) が 00H のとき “1” にセットされ、00H 以外のとき “0” にクリアされます。 例 1: W = 87H, A = F2H のとき、この命令を実行すると、WA = 7F9EH, ZF = 0 となります。 例 2: W = 16H, A = 05H のとき、この命令を実行すると、WA = 006EH, ZF = 1 となります。 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 Z Z – – – – 8 BC ← B×C B レジスタの内容 ( 符号なし整数 ) に C レジスタの内容 ( 符号なし整数 ) を掛け、結果を BC レジスタペアに入れます。結果の上位 8 ビット (B レジスタに格納される値 ) が 00H のとき、ゼロフラグが “1” にセットされます。 Page 37 2.2 演算 TLCS-870/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 1 0 1 1 1 1 0 0 1 0 Z Z – – – – 8 DE ← D×E D レジスタの内容 ( 符号なし整数 ) に E レジスタの内容 ( 符号なし整数 ) を掛け、結果を DE レジスタペアに入れます。結果の上位 8 ビット (D レジスタに格納される値 ) が 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 Z Z – – – – 8 HL ← H×L H レジスタの内容 ( 符号なし整数 ) に L レジスタの内容 ( 符号なし整数 ) を掛け、結果を HL レジスタペアに入れます。結果の上位 8 ビット (H レジスタに格納される値 ) が 00H のとき、ゼロフラグが “1” にセットされます。 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 Z Z C – – – 8 A ← WA÷C, W ← 余り 16 ビットアキュムレータの内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商をアキュムレータに、余りを W レジ スタにそれぞれ入れます。除数 (C レジスタの内容 ) が 00H のとき、または商が 100H 以上のときキャリーフラグは “1” にセットされ ( この場合、アキュムレータおよび W レジスタの内容は不定になります ) 、それ以外のときキャリーフラグは “0” にクリアされます。また、 ゼロフラグは、余りが 00H のとき “1” にセットされ、00H 以外のとき “0” にクリアされます。なお、C レジスタの内容は変化しません。 例 1: WA = 1234H, C = 56H のとき、この命令を実行すると、 A = 36H, W = 10H, CF = 0, ZF = 0 となります。 例 2: WA = 4830H, C = 9AH のとき、この命令を実行すると、 A = 78H, W = 00H, CF = 0, ZF = 1 となります。 例 3: WA = 3210H, C = 27H のとき、この命令を実行すると、 A = 48H, W = 18H, CF = 1, ZF = 0 となります。 1 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 Z Z C – – – 8 E ← DE÷C, D ← 余り DE レジスタペアの内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商の下位 8 ビットを E レジスタに、余りを D レ ジスタにそれぞれ入れます。除数 (C レジスタの内容 ) が 00H のとき、または商が 100H 以上のとき、キャリーフラグが “1” にセットさ れます ( この場合、DE レジスタペアの内容は不定になります ) 。また、余りが 00H のとき、ゼロフラグが “1” にセットされます。なお、 C レジスタの内容は変化しません。 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 Z Z C – – – 8 L ← HL÷C, H ← 余り HL レジスタペアの内容 ( 符号なし整数 ) を C レジスタの内容 ( 符号なし整数 ) で割り、商の下位 8 ビットを L レジスタに、余りを H レ ジスタにそれぞれ入れます。除数 (C レジスタの内容 ) が 00H のとき、または商が 100H 以上のとき、キャリーフラグが “1” にセットさ れます ( この場合、HL レジスタペアの内容は不定になります ) 。また、余りが 00H のとき、ゼロフラグが “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 = 5678H, CF = 1H のとき、NEG CS, HL 命令を実行すると、HL = A988H, CF = 1 となります。 例 2: DE = 89ABH, CF = 0H のとき、NEG CS, DE 命令を実行すると、DE = 89ABH, CF = 0 となります。 オブジェクトコード (2 進 ) Page 38 TLCS-870/C 2.3 シフト、ローテート、ニブル処理 フラグ サイ J Z C H S V クル オブジェクトコード (2 進 ) ニモニック 1 1 1 0 1 g g g 1 1 1 1 0 1 0 0 オペレーション C Z * – – – 2 7654321 0 CF 0 SHLC g 8 ビットレジスタ g の内容を左へ 1 ビットずつ論理シフトします ( レジスタ g の最下位ビットには “0” が入ります。キャリーフラグに は、レジスタ g の最上位ビットの内容が入ります ) 。シフト後のレジスタ g の内容が 00H のとき、ゼロフラグが “1” にセットされます。 例 : A = 00111011B, CF = 1 のとき、この命令を実行すると、A = 01110110B, CF = 0, ZF = 0 となります。 SHRC g 8 ビットレジスタ g の内容を右へ 1 ビットずつ論理シフトします ( レジスタ g の最上位ビットには “0” が入ります。キャリーフラグに は、レジスタ g の最下位ビットの内容が入ります ) 。シフト後のレジスタ g の内容が 00H のとき、ゼロフラグが “1” にセットされます。 例 : A = 01011101B, CF = 0 のとき、この命令を実行すると、A = 00101110B, CF = 1, ZF = 0 となります。 1 1 1 0 1 1 1 0 ROLC g 1 g g g 1 1 1 1 0 1 0 1 C Z * – – – 2 0 1 1 0 7654321 0 0 C Z * – – – 2 CF CF 7654321 0 8 ビットレジスタ g とキャリーフラグの内容を左へ 1 ビットずつローテーションします。ローテーション後のレジスタ g の内容が 00H のとき、ゼロフラグが “1” にセットされます。 例 1: A = 10010110B, CF = 0 のとき、この命令を実行すると、A = 00101100B, CF = 1, JF = 1, ZF = 0 となります。 例 2: A = 10000000B, CF = 0 のとき、この命令を実行すると、A = 00000000B, CF = 1, JF = 1, ZF = 1 となります。 1 1 1 0 RORC g 1 g g g 1 1 1 1 1 g g g 1 1 1 1 0 1 1 1 C Z * – – – 2 7654321 0 CF 8 ビットレジスタ g とキャリーフラグの内容を右へ 1 ビットずつローテーションします。ローテーション後のレジスタ g の内容が 00H のとき、ゼロフラグが “1” にセットされます。 例 : A = 01101101B, CF = 1 のとき、この命令を実行すると、A = 10110110B, 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 の内容が 0000H のとき、ゼロフラグが “1” にセットされ ます。レジスタ gg の最上位ビットの内容がシフトで変化するとオーバフローフラグが “1” にセットされます。 例 : HL = 3456H, CF = 1 のとき、SHLCA HL 命令を実行すると、HL = 68ACH, CF = 0, JF = 0, ZF = 0, SF = 0, VF = 0 となります。 1 1 1 0 SHRCA gg 1 g g g 1 1 1 1 0 0 0 1 gg C Z * – S 0 3 CF 16 ビットレジスタ gg の内容を右へ 1 ビットずつ算術シフトします ( レジスタの最上位ビットには “0” は変化しません。キャリーフラ グには、レジスタ gg の最下位ビットの内容が入ります )。シフト後のレジスタ gg の内容が 0000H のとき、ゼロフラグが “1” にセット されます。 例 : DE = 89ABH, CF = 0 のとき、SHRCA DE 命令を実行すると、DE = C4D5H, 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 – – – – – 4 SWAP g ( 4 4 ) 8 ビットレジスタ g の上位 4 ビットと下位 4 ビットの内容を交換します。 例 : A = 25H のとき、この命令を実行すると、A = 52H となります。 A 1 1 1 0 ROLD A,(x) 0 0 0 0 x x x x x x x x 1 1 1 1 0 1 1 0 1 – – – – – 8 (x) 7654321 0 (4 ) オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の内容と、アキュムレータの下位 4 ビットの内容を連結し た 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 例 : アキュムレータが 12H, 0087H 番地の内容が 56H のとき、ROLD A, (87H) 命令を実行すると、 アキュムレータが 15H, 0087H 番地の内容が 62H となります。 A ROLD A,(vw) 7654321 0 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 (vw) v v v v 1 – – – – – 9 7654321 0 7654321 0 (4 ) オブジェクトコード中の vw で直接指定されるアドレスの (0000H~FFFFH 番地 ) 内容と、アキュムレータの下位 4 ビットの内容を連結 した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 – – – – – 7 (DE) 7654321 0 ROLD A,(DE) 7654321 0 (4 ) レジスタペア DE で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット 単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 – – – – – 7 (HL) 7654321 0 ROLD A,(HL) 7654321 0 (4 ) レジスタペア HL で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単 位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 – – – – – 7 ROLD A,(IX) (IX) 7654321 0 (4 7654321 0 ) インデックスレジスタ IX で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 Page 39 2.3 シフト、ローテート、ニブル処理 TLCS-870/C フラグ サイ J Z C H S V クル オブジェクトコード (2 進 ) ニモニック オペレーション A 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 – – – – – 7 (IY) 7654321 0 ROLD A,(IY) 7654321 0 (4 ) インデックスレジスタ IY で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 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 – – – – – 9 (IX + d) 7654321 0 ROLD A,(IX+d) 7654321 0 (4 ) インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容 と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュム レータの上位 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 – – – – – 9 (IY + d) 7654321 0 ROLD A,(IY+d) 7654321 0 (4 ) インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容 と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュム レータの上位 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 – – – – – 9 (SP + d) 7654321 0 ROLD A,(SP+d) 7654321 0 (4 ) スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、ア キュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータ の上位 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 – – – – – 9 (HL + d) 7654321 0 ROLD A,(HL+d) 7654321 0 (4 ) HL レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、ア キュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータ の上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 0 1 – – – – – 9 (HL + C) 7654321 0 ROLD A,(HL+C) 7654321 0 (4 ) HL レジスタペアの内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、アキュムレータの下位 4 ビッ トの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変 化しません。 A 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 – – – – – 8 (+SP) 7654321 0 ROLD A,(+SP) 7654321 0 (4 ) スタックポインタをインクリメントし、その値で指定されるアドレスのメモリ内容とアキュムレータの下位 4 ビットの内容を連結し た 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 – – – – – 9 (PC + A) 7654321 0 ROLD A,(PC+A) 7654321 0 (4 ) プログラムカウンタの内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを左へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容 は変化しません。 A 1 1 1 0 RORD A,(x) 0 0 0 0 x x x x x x x x 1 1 1 1 0 1 1 1 1 – – – – – 8 (x) 7654321 0 (4 ) オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の内容と、アキュムレータの下位 4 ビットの内容を連結し た 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 例 : アキュムレータが 12H, 0087H 番地の内容が 56H のとき、RORD A, (87H) 命令を実行すると、 アキュムレータが 16H, 0087H 番地の内容が 25H となります。 A RORD A,(vw) 7654321 0 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 (vw) v v v v 1 – – – – – 9 7654321 0 7654321 0 (4 ) オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) の内容と、アキュムレータの下位 4 ビットの内容を連結 した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 – – – – – 7 RORD A,(DE) (DE) 7654321 0 (4 7654321 0 ) レジスタペア DE で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット 単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 Page 40 TLCS-870/C フラグ サイ J Z C H S V クル オブジェクトコード (2 進 ) ニモニック オペレーション A 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 – – – – – 7 (HL) 7654321 0 RORD A,(HL) 7654321 0 (4 ) レジスタペア HL で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単 位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 – – – – – 7 (IX) 7654321 0 RORD A,(IX) 7654321 0 (4 ) インデックスレジスタ IX で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 – – – – – 7 (IY) 7654321 0 RORD A,(IY) 7654321 0 (4 ) インデックスレジスタ IY で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 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 – – – – – 9 (IX + d) 7654321 0 RORD A,(IX+d) 7654321 0 (4 ) インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容 と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュム レータの上位 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 – – – – – 9 (IY + d) 7654321 0 RORD A,(IY+d) 7654321 0 (4 ) インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容 と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュム レータの上位 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 – – – – – 9 (SP + d) 7654321 0 RORD A,(SP+d) 7654321 0 (4 ) スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、ア キュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータ の上位 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 – – – – – 9 (HL + d) 7654321 0 RORD A,(HL+d) 7654321 0 (4 ) HL レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの内容と、ア キュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータ の上位 4 ビットの内容は変化しません。 A 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 – – – – – 9 (HL + C) 7654321 0 RORD A,(HL+C) 7654321 0 (4 ) HL レジスタペアの内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、アキュムレータの下位 4 ビッ トの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変 化しません。 A 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 – – – – – 8 (+SP) 7654321 0 RORD A,(+SP) 7654321 0 (4 ) スタックポイントをインクリメントし、その値で指定されるアドレスのメモリの内容と、アキュムレータの下位 4 ビットの内容を連結 した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容は変化しません。 A 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 – – – – – 9 RORD A,(PC+A) (PC + A) 7654321 0 (4 7654321 0 ) プログラムカウンタの内容に A レジスタの内容を符号拡張して加算した値で指定されるアドレスの内容と、アキュムレータの下位 4 ビットの内容を連結した 12 ビットデータを右へ 4 ビット単位にローテーションします。なお、アキュムレータの上位 4 ビットの内容 は変化しません。 Page 41 2.4 ビット操作、フラグ操作 TLCS-870/C 2.4 ビット操作、フラグ操作 1 1 1 0 SET g.b SET (x).b SET (vw).b フラグ サイクル オペレーション J Z C H S V Z * – – – – 3 ZF ← g.b:g.b ← 1 オブジェクトコード (2 進 ) ニモニック 1 g g g 1 1 0 0 0 b b b 8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “1” に セットします。 例 : A = 3CH のとき、SET A.7 命令を実行すると、ZF = 1, A = BCH となります。 1 1 0 0 0 b b b x x x x x x x x Z * – – – – 5 ZF ← (x).b:(x).b ← 1 オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~00FFH 番地 ) の、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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、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” にセットします。 Page 42 TLCS-870/C オブジェクトコード (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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、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 CLR (x).b CLR (vw).b 8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を “0” に クリアします。 例 : A = 3CH のとき、CLR A.2 命令を実行すると、ZF = 0, A = 38H となります。 1 1 0 0 1 b b b x x x x x x x x Z * – – – – 5 ZF ← (x).b:(x).b ← 0 オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の 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 プログラムカウンタの内容に、アキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~00FFH 番地 ) の、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 CLR (DE).A オブジェクトコード中の vw で直接指定されるアドレス (0000H~00FFH 番地 ) の、A レジスタの下位 3 ビットで指定されるビットの内容の反 転値をゼロフラグに入れた後、そのビットの内容を “0” にクリアします。 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 Z * – – – – 4 ZF ← (DE).A:(DE).A ← 0 レジスタペア DE で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をゼロフラグに入れた後、その ビットの内容を “0” にクリアします。 Page 43 2.4 ビット操作、フラグ操作 TLCS-870/C フラグ サイクル オペレーション J Z C H S V Z * – – – – 4 ZF ← (HL).A:(HL).A ← 0 オブジェクトコード (2 進 ) ニモニック 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 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 スタックポインタの内容にオブジェクトコード中の 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 プログラムカウンタの内容に、アキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、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 = 01101101B のとき、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 – * – – – 4 LD CF,(x).b オブジェクトコード中の x で直接 指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の 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 スタックポインタの内容にオブジェクトコード中の 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 で指定されるビットの内容をキャリーフラグにロードします。 1 1 1 0 0 1 1 1 0 1 0 1 1 b b b CF ← (HL+C).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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容をキャ リーフラグにロードします。 CF ← (PC+A).b 0 1 0 0 1 1 1 1 0 1 0 1 1 b b b C – * – – – 5 LD CF,(PC+A).b プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定さ れるビットの内容をキャリーフラグにロードします。 Page 44 TLCS-870/C 1 1 1 0 LD CF,(x).A LD CF,(vw).A LD CF,(DE).A LD CF,(HL).A LD CF,(IX).A LD CF,(IY).A フラグ サイクル J Z C H S V オブジェクトコード (2 進 ) ニモニック 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 オブジェクトコード中の x で直接 指定されるアドレス (0000H~00FFH 番地 ) の、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 C – * – – – 5 CF ← (vw).A 1 1 1 1 1 1 0 0 オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) の、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 1 0 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 ビットで指定されるビットの内容をキャリーフラグにロードします。 LD CF,(IY+d).A インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジス タの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。 LD CF,(SP+d).A スタックポインタの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。 1 1 1 0 0 1 1 1 d d d d d d d d 1 1 1 1 1 1 0 0 C – * – – – 5 CF ← (HL+d).A LD CF,(HL+d).A HL レジスタペアの内容にオブジェクトコード中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャリーフラグにロードします。 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 CF ← (HL+C).A C – * – – – 5 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、A レジスタの下位 3 ビットで指定されるビットの内容をキャ リーフラグにロードします。 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 CF ← (PC+A).A C – * – – – 5 LD CF,(PC+A).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 = 01011100B のとき、TEST A. 5 命令を実行すると、JF = 1, CF = 0 となります。 0 1 0 1 1 b b b x x x x x x x x * – J – – – 4 JF ← (x).b TEST (x).b#1 オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 1 1 1 0 1 1 1 0 TEST (vw).b#1 0 1 0 1 d d d d 0 1 1 0 d d d d d d d d 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 ← (IY+d).A CF ← (SP+d).A オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) の内容の、オブジェクトコード中の 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 で指定されるビットの内容の反転値をジャンプ ステー タス フラグに入れます。 TEST (IX+d).b#1 インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、オブジェク トコード中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。 TEST (IY+d).b#1 インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、オブジェク トコード中の 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 * – J – – – 5 JF ← (SP+d).b TEST (SP+d).b#1 スタックポインタの内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、オブジェクトコード 中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。 1 1 0 1 1 1 0 1 0 1 0 0 d d d d 0 1 0 1 d d d d d d d d 0 1 0 1 d d d d 0 1 0 1 1 b b b * – J – – – 5 1 b b b * – J – – – 5 Page 45 JF ← (IX+d).b JF ← (IY+d).b 2.4 ビット操作、フラグ操作 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 1 1 0 1 TEST (HL+d).b#1 0 1 1 1 d d d d d d d d 0 1 0 1 フラグ サイクル オペレーション J Z C H S V 1 b b b * – J – – – 5 JF ← (HL+d).b HL レジスタペアの内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、オブジェクトコード 中の b で指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。 1 1 1 0 0 1 1 1 0 1 0 1 1 b b b * – J – – – 5 JF ← (HL+C).b TEST (HL+C).b#1 HL レジスタペアの内容に C レジスタの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定される ビットの反転値をジャンプ ステータス フラグに入れます。 1 1 1 0 TEST (+SP).b#1 0 1 1 0 0 1 0 1 1 b b b * – J – – – 4 SP ← SP+1:JF ← (SP).b スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の 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 JF ← (x).A TEST (x).A#1 TEST (vw).A#1 オブジェクトコード中の x で直接指定されるアドレス (0000H~00FFH 番地 ) の、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 * – J – – – 5 JF ← (vw).A 1 1 1 1 1 1 0 0 オブジェクトコード中の vw で直接指定されるアドレス (0000H~FFFFH 番地 ) の内容の、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 ビットで指定されるビットの内容の反転値をジャンプ ステー タス フラグに入れます。 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 * – J – – – 3 JF ← (IY).A TEST (IY).A#1 インデックスレジスタ IY で指定されるアドレスの内容の、A レジスタの下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステー タス フラグに入れます。 TEST (IX+d).A#1 インデックスレジスタ IX の内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、A レジスタ の下位 3 ビットで指定されるビットの内容の反転値をジャンプ ステータス フラグに入れます。 TEST (IY+d).A#1 インデックスレジスタ IY の内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、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 0 1 1 1 0 1 0 1 0 0 d d d d 0 1 0 1 d d d d d d d d 1 1 1 1 d d d d 1 1 1 1 1 1 0 0 * – J – – – 5 1 1 0 0 * – J – – – 5 JF ← (IX+d).A JF ← (IY+d).A TEST (SP+d).A#1 スタックポインタの内容にオブジェクトコード中の 8 ビットデータを符号拡張して加算した値で指定されるアドレスの、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 ビットデータを符号拡張して加算した値で指定されるアドレスの、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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ れるビットの内容の反転値をジャンプ ステータス フラグに入れます。 1 1 1 0 1 g g g 1 1 1 0 1 b b b 1 – – – – – 2 g.b ← CF LD g.b,CF LD (x).b,CF LD (vw).b,CF LD (DE).b,CF LD (HL).b,CF LD (IX).b,CF 8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容を入れます。 例 1: A = 15H, CF = 1 のとき、LD A.5, CF 命令を実行すると、A = 35H, CF = 1 となります。 例 2: B = 7EH, CF = 0 のとき、LD B.2, CF 命令を実行すると、B = 7AH, 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 で指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の 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 で指定されるビットにキャリーフラグの内容をストアします。 1 1 1 0 0 1 0 0 1 1 1 0 1 b b b 1 – – – – – 4 (IX).b ← CF インデックスレジスタ IX で指定されるアドレスの、オブジェクトコード中の b で指定されるビットにキャリーフラグの内容をストアします。 Page 46 TLCS-870/C LD (IY).b,CF フラグ サイクル オペレーション J Z C H S V 1 – – – – – 4 (IY).b ← CF オブジェクトコード (2 進 ) ニモニック 1 1 1 0 0 1 0 1 1 1 1 0 1 b b b インデックスレジスタ 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコードの 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の 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 で指定されるアドレス (0000H~00FFH 番地 ) の、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 1 – – – – – 6 (vw).A ← CF 1 1 1 1 0 0 1 1 LD (vw).A,CF LD (DE).A,CF LD (HL).A,CF LD (IX).A,CF LD (IY).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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、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 8 ビットレジスタ g の、オブジェクトコード中の b で指定されるビットの内容の反転値をゼロフラグに入れた後、そのビットの内容を反転し ます。 例 : A = 3CH のとき、CPL A.3 命令を実行すると、ZF = 0, A = 34H となります。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) の、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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の b で指定されるビットの内容の反 転値をゼロフラグに入れた後、そのビットの内容を反転します。 Page 47 2.4 ビット操作、フラグ操作 TLCS-870/C フラグ サイクル オペレーション 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の 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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~00FFH 番地 ) の、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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、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 プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、A レジスタの下位 3 ビットで指定さ れるビットの内容を反転します。 Page 48 TLCS-870/C フラグ サイクル 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 = 5BH, CF = 1 のとき、XOR CF, A.3 命令を実行すると、A = 5BH, 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 で直接指定されるアドレス (0000H~00FFH 番地 ) の、オブジェクトコード中の 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) の、オブジェクトコード中の 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 スタックポインタの内容にオブジェクトコード中の 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 スタックポインタの内容をインクリメントし、その値で指定されるアドレスの、オブジェクトコード中の b で指定されるビットの内容とキャ リーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。 CF ← CF ^ (PC+A).b 0 1 0 0 1 1 1 1 0 1 0 1 0 b b b C – * – – – 5 XOR CF,(PC+A).b プログラムカウンタの内容にアキュムレータの内容を符号拡張して加算した値で指定されるアドレスの、オブジェクトコード中の b で指定さ れるビットの内容とキャリーフラグの内容とで排他的論理和を取り、結果をキャリーフラグに入れます。 0 0 0 0 0 1 0 1 0 – 1 – – – 1 CF ← 1 SET CF キャリーフラグを “1” にセットします。 0 0 0 0 0 1 0 0 1 – 0 – – – 1 CF ← 0 CLR CF キャリーフラグを “0” にクリアします。 0 0 0 0 0 1 1 0 * – * – – – 1 JF ← CF:CF ← CF CPL CF キャリーフラグの内容をジャンプステータスフラグに入れた後、キャリーフラグの内容を反転します。 例 : CF = 0 で、この命令を実行すると、JF = 0, CF = 1 となります。 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 Z * – – – – 5 ZF ← IMF:IMF ← 0 DI#1 割り込みマスタ許可フラグの内容の反転値をゼロフラグに入れた後、割り込みマスタ許可フラグを “0” にクリアします ( マスカブル割り込み の受け付けを禁止します ) 。 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 Z * – – – – 5 ZF ← IMF:IMF ← 1 EI#1 割り込みマスタ許可フラグの内容の反転値をゼロフラグに入れた後、割り込みマスタ許可フラグを “1” にセットします ( マスカブル割り込み の受け付けを許可します ) 。 #1 アセンブラ用拡張命令 Page 49 2.5 ジャンプ TLCS-870/C 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” のとき、プログラムカウンタの内容 (JRS 命令の置かれているアドレスの 2 番地先を示しています ) に、オブ ジェクトコード中の 5 ビットディスプレースメント d を符号拡張して (−16~+15) 加算した値で指定されるアドレスにジャンプします (4 サイクル JRS T,$+2+d 命令 )。 ジャンプ ステータス フラグが “0” のときは、ジャンプ ステータス フラグを “1” にセットし、次命令の実行に移ります (2 サイクル命令 )。 例 : ジャンプ ステータス フラグが “1” のとき、C134H 番地に置かれた JRS T, $+9 命令を実行すると、C13DH 番地にジャンプします。 1 0 1 d d d d d 1 – – – – – 4/2(t/f) if JF=0 then PC ← PC+d else null ジャンプステータスフラグが “0” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容 (JR 命令の置かれているアドレスの 2 番地先を示しています ) に、オブジェ JR T,$+2+d クトコード中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (4 サイクル )。 ジャンプステータスフラグが “0” のときは、ジャンプステータスフラグを “1” にセットし、次命令の実行に移ります (2 サイクル )。 例 : ジャンプステータスフラグが “1” のとき、C134H 番地に置かれた JR T, $+0F6H 命令を実行すると、C12AH 番地にジャンプします。 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容にオブジェクトコード中の 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” のとき、プログラムカウンタの内容にオブジェクトコード中の 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” のとき、プログラムカウンタの内容 (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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中 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” のとき、プログラムカウンタの内容に、オブジェクト JR コード中の 8 ビットディスプレースメント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスにジャンプします (5 サイクル )。 SGT,$+3+d サインとオーバフローフラグの排他的論理和の結果またはゼロフラグの内容が “1” のときは、ジャンプステータスフラグを “1” にセットし、次命 令の実行に移ります (3 サイクル )。 ニモニック オブジェクトコード (2 進 ) Page 50 TLCS-870/C フラグ サイクル オペレーション 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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” のとき、プログラムカウンタの内容に、オブジェクトコード中の 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 プログラムカウンタの内容 (JR 命令の置かれているアドレスの 2 番地先を示しています ) に、オブジェクトコード中の 8 ビットディスプレースメ JR $+2+d ント d を符号拡張して (−128~+127) 加算した値で指定されるアドレスに無条件にジャンプします。 例 : D5A7H 番地に置かれた JR $+73H 命令を実行すると、D61CH 番地にジャンプします。 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 = E325H のとき、JP HL 命令を実行すると、E325H 番地にジャンプします。 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 で直接指定されるアドレス (0000H~00FFH 番地 ) から連続する 2 バイトのメモリに格納されているアドレスに無条件 JP (x) にジャンプします。 例 : 0085H, 0086H 番地の内容がそれぞれ 27H, C3H のとき、JP (85H) 命令を実行すると、C327H 番地にジャンプします。 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 で直接指定されるアドレス (0000H~FFFFH 番地 ) から連続する 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 = 0125H で、0125H, 0126H 番地の内容がそれぞれ 87H, E5H のとき、JP (DE) 命令を実行すると、E587H 番地にジャンプします。 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= 0125H で、0125H, 0126H 番地の内容がそれぞれ 87H, E5H のとき、JP (HL) 命令を実行すると、E587H 番地にジャンプします。 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 = 0125H で、0125H, 0126H 番地の内容がそれぞれ 87H, E5H のとき、JP (IX) 命令を実行すると、E587H 番地にジャンプします。 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 = 0125H で、0125H, 0126H 番地の内容がそれぞれ 87H, E5H のとき、JP (IY) 命令を実行すると、E587H 番地にジャンプします。 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) スタックポインタの内容に、オブジェクトコード中の 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) スタックポインタをインクリメントし、その値で指定されるアドレスから連続する 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 番地先を示しています ) に、アキュムレータの内容を符号拡張 ( 最上位が符 JP (PC+A) 号ビットです ) して加算した値で指定されるアドレスから連続する 2 バイトのプログラムメモリに格納されているアドレスに無条件にジャンプし ます。この命令は、多方向分岐処理に適しています。 ニモニック オブジェクトコード (2 進 ) Page 51 2.6 サブルーチンコール、リターン、ソフトウエア割り込み、 ノーオペレーション TLCS-870/C 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) CALL (SP+d) フラグ サイクル オペレーション J Z C H S V 0 1 1 1 n n n n – – – – – – 7 (SP,SP-1) ← PC-1:SP ← SP-2: PC ← (n × 2+FFC1H,n × 2+FFC0H) ベクタ方式のサブルーチンコールを行います。すなわち、プログラムカウンタ PC の内容から 1 を引いた値 (CALLV 命令の置かれている番 地 +1 すなわち戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリにセーブし、スタッ クポインタの内容を 2 回デクリメントします。その後、オブジェクトコード中の 4 ビット即値 n (0~15) を 2 倍した値に FFC0H を加えた値 で指定されるアドレスから連続する 2 バイトのプログラムメモリの内容 ( ベクタ ) をプログラムカウンタに入れます。この命令は、プログ ラムの圧縮に便利です。 例 : SP = 0123H で、FFC8H, FFC9H 番地の内容がそれぞれ 45H, E6H のとき、D1A4H 番地に置かれた CALLV 4H 命令を実行すると、 0123H, 0122H 番地にそれぞれ D1H, A5H が書き込まれ、SP = 0121H となり、E645H 番地をコールします。 1 1 1 1 1 1 0 1 n n n n n n n n mmmm mmmm – – – – – – 6 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← mn ロングアブソリュート方式のサブルーチンコールを行います。すなわち、プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上 位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリにセーブし、スタックポインタの内容を 2 回デク リメントします。その後、オブジェクトコード中の 16 ビット絶対アドレス mn をプログラムカウンタに入れます。 例 : SP = 0138H のとき、E273H 番地に置かれた CALL 0CE05H 命令を実行すると、0138H, 0137H 番地にそれぞれ E2H, 76H が書き込ま れ、SP = 0136H となり、CE05H 番地をコールします。 1 1 1 0 1 g g g 1 1 1 1 1 1 0 1 – – – – – – 6 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← gg プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、16 ビットレジスタ gg の内容をプログラムカウンタに入れま す。 例 : SP = 0126H, HL = C8A7H のとき、D491H 番地に置かれた CALL HL 命令を実行すると、0126H, 0125H 番地にそれぞれ D4H, 93H が書 き込まれ、SP = 0124H となり、C8A7H 番地をコールします。 1 1 1 0 0 0 0 0 x x x x x x x x 1 1 1 1 1 1 0 1 – – – – – – 9 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (x+1,x) プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、オブジェクトコード中の x で直接指定されるア ドレス (0000H~00FFH 番地 ) から連続する 2 バイトのメモリ内容 ( サブルーチンのエントリーアドレス ) をプログラムカウンタに入れま す。 1 1 1 0 0 0 0 1 w w w w w w w w v v v v v v v v – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: 1 1 1 1 1 1 0 1 PC ← (vw+1,vw) プログラムカウンタ PC の内容に 2 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、オブジェクトコード中の vw で直接指定される アドレス (0000H~FFFFH 番地 ) から連続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 1 – – – – – – 8 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (DE+1,DE) プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、レジスタペア DE の内容で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 – – – – – – 8 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (HL+1,HL) プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、レジスタペア HL の内容で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 1 1 1 0 0 1 0 0 1 1 1 1 1 1 0 1 – – – – – – 8 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IX+1,IX) プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、インデックスレジスタ IX の内容で指定されるアドレスから連 続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 (SP,SP-1) ← PC+1:SP ← SP-2: 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 – – – – – – 8 PC ← (IY+1,IY) プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、インデックスレジスタ IY の内容で指定されるアドレスから連 続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 1 1 0 1 0 1 0 0 d d d d d d d d 1 1 1 1 1 1 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IX+d+1,IX+d) プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、インデックスレジスタ 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 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IY+d+1,IY+d) プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、インデックスレジスタ 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 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (SP+d+1,SP+d) プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、スタックポインタの内容に、オブジェクトコー ド中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入れ ます。 オブジェクトコード (2 進 ) Page 52 TLCS-870/C ニモニック CALL (HL+d) CALL (+SP) CALL (HL+C) CALL (PC+A) RET RETI RETN SWI NOP フラグ サイクル オペレーション J Z C H S V 1 1 0 1 0 1 1 1 d d d d d d d d 1 1 1 1 1 1 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: プログラムカウンタ PC の内容に 1 を加えた値 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレス のデータメモリにセーブし、スタックポインタの内容を 2 回デクリメントします。その後、HL レジスタペアの内容に、オブジェクトコー ド中の 8 ビットデータ d を符号拡張して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入れ ます。 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 – – – – – – 9 (SP+1,SP) ← PC:SP ← SP-1: PC ← (SP+3,SP+2) スタックポインタの内容をインクリメントします。その後、プログラムカウンタの下位バイトをスタックポインタの内容 −1 で指定される アドレスのメモリにセーブし、スタックポインタの内容で指定されるアドレスのメモリの内容をプログラムカウンタの下位バイトに入れま す。さらに、プログラムカウンタの上位バイトを、スタックポインタの内容指定されるアドレスのメモリにセーブし、スタックポインタの 内容 +1 で指定されるアドレスのメモリの内容をプログラムカウンタの上位バイトに入れます。その後、スタックポインタの内容を 2 回デ クリメントします。 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (HL+C+1,HL+C) プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、HL レジスタペアの内容に C レジスタの内容を符号拡張 ( 最上 位ビットが符号ビットです ) して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入れます。 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 – – – – – – 10 (SP,SP-1) ← PC+1:SP ← SP-2: プログラムカウンタ PC の内容 ( 戻り番地 ) を上位バイト、下位バイトの順にスタックポインタ SP で指定されるアドレスのデータメモリ にセーブし、スタックポインタの内容を 2 回デクリメントします。その後、プログラムカウンタの内容にアキュムレータ A の内容を符号拡 張 ( 最上位ビットが符号ビットです ) して加算した値で指定されるアドレスから連続する 2 バイトのメモリ内容をプログラムカウンタに入 れます。 1 1 1 1 1 0 1 0 – – – – – – 6 SP ← SP+2:PC ← (SP,SP-1) サブルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、その値で指定されるアドレス のデータメモリ内容 ( 戻り番地 ) を下位バイト、上位バイトの順にプログラムカウンタ PC にロードします。 例 : SP = 0123H で、0124H, 0125H 番地の内容がそれぞれ 3EH, C8H のとき、この命令を実行すると、SP = 0125H となり C83EH 番地に ジャンプします。 1 1 1 1 1 0 1 1 * * * * * * 6 SP ← SP+3:PC ← (SP-1,SP-2): PSW ← (SP):IMF ← (SP).0 マスカブル割り込みサービスルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、その 値で指定されるアドレスのデータメモリ内容 ( 戻り番地 ) をプログラムカウンタ PC に入れます。その後、さらにスタックポインタの内容 をインクリメントし、その値で指定されるアドレスのメモリ内容をプログラム ステータス ワード PSW および割り込みマスタ許可フラグ IMF に入れます ( ビット 7~2 が PSW に、ビット 0 が IMF に入ります )。 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 * * * * * * 7 SP ← SP+3:PC ← (SP-1,SP-2): PSW ← (SP):IMF ← (SP).0 ノンマスカブル割り込みサービスルーチンからのリターンを行います。すなわち、スタックポインタ SP の内容を 2 回インクリメントし、 その値で指定されるアドレスのデータメモリ内容 ( 戻り番地 ) をプログラムカウンタ PC に入れます。その後、さらにスタックポインタの 内容をインクリメントし、その値で指定されるアドレスの内容をプログラム ステータス ワード PSW および割り込みマスタ許可フラグ IMF に入れます ( ビット 7~2 が PSW に、ビット 0 が IMF に入ります )。 1 1 1 1 1 1 1 1 – – – – – – 9 (SP) ← PSW:(SP).0 ← IMF: (SP-1,SP-2) ← PC-1: PC ← (FFFDH,FFFCH) ソフトウエア割り込みを行います。すなわち、プログラムステータスワード PSW および割り込みマスタ許可フラグ IMF の内容をスタック ポインタ SP の内容で指定されるアドレスのデータメモリにセーブし (PSW の内容がメモリのビット 7~2 に IMF の内容がメモリのビット 0 にセーブされます )、スタックポインタの内容をデクリメントします。次にプログラムカウンタ PC の内容から 1 を引いた値 (SWI 命令の置 かれている番地 +1 すなわち戻り番地 ) を上位バイト、下位バイトの順にスタックポインタの内容で指定されるアドレスのデータメモリに セーブし、スタックポインタの内容をさらに 2 回デクリメントします。割り込みマスタ許可フラグ IMF は “0” にクリアされます。その後、 FFFCH, FFFDH 番地のプログラムメモリの内容 ( ベクタ ) をプログラムカウンタに入れます。 例 : SP = 0128H, PSW = 46H で、FFFCH, FFFDH 番地の内容がそれぞれ 03H, E7H のとき、CA74H 番地に置かれた SWI 命令を実行する と、0128H, 0127H, 0126H 番地にそれぞれ、46H, 75H, CAH が書き込まれ、SP = 0125H, IMF = 0 となり、E703H 番地にジャンプします。 0 0 0 0 0 0 0 0 – – – – – – 1 no Operation ノーオペレーション ( 何も実行せず、次の命令の実行に移ります )。 オブジェクトコード (2 進 ) Page 53 3. TLCS-870/C 命令一覧 3.1 転送、交換 TLCS-870/C TLCS-870/C 命令一覧 3. 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 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 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 LD (HL),A 0 0 0 0 1 1 1 1 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 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 (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 0 1 1 1 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 1 1 1 1 0 1 1 1 1 1 1 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 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 r r g g 1 1 0 0 r 0 0 1 1 1 1 1 1 1 1 1 0 0 r 0 0 1 1 1 1 1 1 1 1 1 1 0 0 r 0 0 1 1 1 1 1 1 1 1 0 0 r 0 0 1 r r g g 0 0 0 0 r 1 1 0 0 0 0 1 1 1 1 1 0 0 r 1 1 0 0 0 0 1 1 1 1 1 1 0 0 r 1 1 0 0 0 0 1 1 1 1 0 0 r 1 1 0 r r g g 0 1 0 1 r 0 1 0 1 0 1 0 1 1 0 1 0 1 r 0 1 0 1 0 1 0 1 1 0 1 0 0 1 r 0 1 0 1 0 1 0 1 1 0 0 1 r 0 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 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 0 0 0 0 d d d d 0 0 0 x w 0 0 0 0 d d d d 0 0 0 x w r r r r d d d d r r r x w r r r r d d d d r r r x w r r r r d d d d r r r x w 0 0 0 0 d d d d 0 0 0 x 1 1 1 1 d d d d 1 1 1 x 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x 1 1 1 1 d d d d 1 1 1 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 v v v v 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 フラグ C H S – – – – – – – – – – – – – – – – – – – – – – – – 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 1 1 1 Z Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1 1 1 1 1 1 1 1 1 1 1 1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 0 0 0 0 r r r r r r r r r r r r 1 r r r v v v v 1 1 1 1 r r r r r r r r r r r r サイクル 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 5 5 6 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) r ← (PC+A) rr ← (x+1,x) rr ← (vw+1,vw) – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 3 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) (x) ← A 1 – – – – – 2 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 5 5 5 5 5 4 5 6 (IY+1,IY) ← rr 0 1 0 1 0 1 1 0 1 r r r 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 – – – – – 6 1 r r r 1 – – – – – 6 1 r r r 1 – – – – – 6 1 r r r 1 – – – – – 6 0 1 0 1 0 1 1 1 d d d d d d d d 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 r r r 1 r r r 1 – – – – – 6 1 – – – – – 5 Page 54 (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 1 – – – – – 4 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 (x) ← r (vw) ← r (DE+1,DE) ← rr (HL+1,HL) ← rr (IX+1,IX) ← rr LD (IX+d),rr LD (IY+d),rr LD (SP+d),rr LD (HL+d),rr (HL) ← A 1 – – – – – 4 1 – – – – – 4 1 – – – – – 4 LD (IY),rr LD (HL+C),rr LD (SP−),rr オペレーション V – – – – – – – – (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) ← rr (SP+1,SP) ← rr:SP ← SP−1 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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 PUSH rr #1 PUSH gg POP rr #1 POP gg PUSH PSW POP PSW LD PSW, n 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) 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 0 0 0 1 1 1 0 1 1 0 n 0 n 0 n 0 n 1 1 0 m 0 0 0 1 0 1 1 1 0 1 1 1 n 1 n 1 n 1 n 1 1 0 m 0 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 0 0 1 1 1 0 1 1 1 n 1 n 1 n 1 n 1 1 0 m 0 1 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 r r 1 0 0 1 1 0 0 0 n 0 n 1 n 1 n 1 1 0 m 0 r r r 0 1 1 0 1 0 1 0 n 1 n 0 n 1 n 1 0 0 m 1 r n n x w n 1 n 1 1 d 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 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 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 1 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 g 0 g 0 0 0 1 1 g g 0 0 r 0 0 1 1 1 1 1 1 1 1 1 0 0 r 0 0 1 1 1 1 1 1 1 1 1 g r g 0 0 0 1 1 g g 0 0 r 1 1 0 0 0 0 1 1 1 1 1 0 0 r 1 1 0 0 0 0 1 1 1 1 1 g r g 0 0 0 1 1 g g 0 1 r 0 1 0 1 0 1 0 1 1 0 1 0 1 r 0 1 0 1 0 1 0 1 1 0 1 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 J 1 mmmm 1 n n n n 1 v v v v 1 Z – – – – 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 n n n n 1 1 1 1 フラグ C H S – – – – – – – – – – – – – – – – – – – – – – – – – – – サイクル オペレーション V – – – – 2 3 4 6 r←n rr ← mn (x) ← n (vw) ← n – – – – – 4 3 4 4 6 (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 – – – – – 6 (IY+d) ← n d d d d d d d d 1 1 1 1 1 0 0 1 1 – – – – – 6 (SP+d) ← n d d d d d d d d 1 1 1 1 1 0 0 1 1 – – – – – 6 (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 1 0 1 1 0 0 0 1 1 1 1 d d 0 0 x w 1 1 1 1 d d 1 1 x w 0 0 0 0 d d 1 1 x w 1 1 1 1 d d 1 1 x w 1 1 1 1 d d 0 1 x w 0 1 1 1 d d r r x w 0 0 0 1 d d r r x w 1 0 1 0 n n n n d d r r x 0 1 1 1 w v v v v – – – – * n n n n * 1 1 1 1 0 r r r 1 v v v v 1 – – – – * * – – Z – Z Z – – – – * * – – – – – – – – – – * * – – – – – – – – – – * * – – – – – – – – – – * * – – – – – – 4 4 5 3 4 3 3 3 3 3 5 6 (SP, SP−1) ← gg:SP ← SP−2 SP ← SP+2:rr ← (SP, SP−1) SP ← SP+2:gg ← (SP, SP−1) (SP) ← PSW:SP ← SP−1 SP ← SP+1:PSW ← (SP) PSW ← n SP ← SP+d SP ← SP−d r↔g rr ↔ gg r ↔ (x) r ↔ (vw) 0 0 0 0 d d d d 0 0 0 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w r r r r d d d d r r r x w r r r r d d d d r r r x w r r r r d d d d r r r x w 1 1 1 1 1 1 1 1 1 1 1 1 1 Z Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 7 8 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) r ↔ (PC+A) rr ↔ (x+1,x) rr ↔ (vw+1,vw) 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 r r r r d d d d r r r r r r r d d d d r r r r r r r d d d d r r r 1 1 1 1 1 1 1 1 1 1 1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 6 6 6 6 8 8 8 8 8 7 8 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) 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 v v v v 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 rr は WA, BC, DE, HL のみ Page 55 0 0 0 0 r r r r r r r r r r r r 1 r r r v v v v 1 1 1 1 r r r r r r r r r r r r 3.2 演算 TLCS-870/C 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) 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 m 1 1 1 1 0 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 0 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 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 m 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 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 1 0 0 0 0 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 m 0 0 0 0 r 0 0 0 0 1 1 1 0 1 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 m 1 1 0 0 r 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 1 0 1 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 g g m g g 0 0 0 0 0 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 1 0 1 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 1 1 1 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 1 1 0 1 1 1 1 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 g g m g g 0 1 1 0 1 0 1 0 1 0 サイクル 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 n n n n 0 1 1 1 n n n n 1 1 1 1 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 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 4 4 5 r−g rr−gg r−(x) r−(vw) 0 0 0 0 d d d d 0 0 0 x w n 0 0 0 0 d 0 0 0 0 d d d d 0 0 0 x w n 1 1 1 1 d r r r r d d d d r r r x w n 1 1 1 1 d r r r r d d d d r r r x w n 0 0 0 0 d r r r r d d d d r r r x w n 0 0 0 0 d 1 1 1 1 d d d d 1 1 1 x w n 1 1 1 1 d 1 1 1 1 d d d d 1 1 1 x w n 1 1 1 1 d 1 1 1 1 d d d d 1 1 1 x w n 1 1 1 1 d Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C C H H H H H H H H H H H H H S S S S S S S S S S S S S V V V V V V V V V V V V V 3 3 3 3 5 5 5 5 5 4 5 4 6 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) r−(PC+A) (x)−n (vw)−n 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 4 4 4 4 6 (DE)−n (HL)−n (IX)−n (IY)−n (IX+d)−n n n n n v v v v n n n n v v v v Z Z Z Z Z Z Z Z Z Z Z Z Z n n n n 0 n n n n 0 Z Z Z Z Z 0 0 0 0 0 0 0 0 n n n n 1 r r r r n n n n 1 r r r r n n n n 0 r r r r 1 1 1 1 n n n n 1 1 1 1 1 n n n n 1 1 1 1 1 n n n n 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w 1 1 1 x w 1 1 1 x w n n n r v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 1 1 1 1 d d d d 1 1 1 n 0 0 1 1 1 1 d d d d 1 1 1 n 0 0 1 1 1 1 d d d d 1 1 1 n 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 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 n n n 1 v Z Z Z Z Z Z Z Z Z Z C C C C C H H H U U S S S S S V V V V V 6 5 6 6 7 (HL+C)−n SP ← SP+1:(SP)−n (PC+A)−n rr−(x) rr−(vw) Z Z Z Z Z Z Z Z Z Z Z C C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C C C U U U U U U U U U U U H H U S S S S S S S S S S S S S S V V V V V V V V V V V V V V 5 5 5 5 7 7 7 7 7 6 7 2 3 4 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) rr−(PC+A) A ← A+n g ← g+n gg ← gg+mn 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 4 4 5 r ← r+g rr ← rr+gg r ← r+(x) r ← r+(vw) 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 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n n n n n Page 56 r r r r n n n 1 v 1 1 1 1 n n n 1 v 1 1 1 1 n n n 1 v 1 1 1 1 n n n n n n n n TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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) 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 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 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 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 0 1 1 0 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 m 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 m 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 1 1 1 1 0 n 0 0 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 g g m g g 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 n 0 0 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 1 0 n 0 0 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 0 1 1 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 1 1 1 0 n 0 0 1 1 0 0 0 n 0 n 1 n 1 n 1 1 0 1 0 n 1 1 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 g g m g g 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 n 1 0 0 1 0 1 0 n 1 n 0 n 1 n d 0 0 0 x d 0 0 0 x d r r r x d r r r x d r r r x d 0 0 0 x d 0 0 0 x d 0 0 r r 1 1 1 x 0 1 1 0 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 w n 0 0 0 0 d w n 0 0 0 0 d w n 0 0 0 0 d w n 1 1 1 1 d J r 0 0 1 C C C C 0 0 0 1 C Z Z Z Z Z Z フラグ C H S C H S C H S C H S C H S C H S V V V V V V サイクル 5 5 4 5 6 オペレーション r ← r+(HL+d) r ← r+(HL+C) SP ← SP+1:r ← r+(SP) r ← r+(PC+A) (x) ← (x)+n 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w n n n r v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 0 0 0 0 d d d d 0 0 0 n 0 0 0 0 0 0 d d d d 0 0 0 n 0 0 1 1 1 1 d d d d 1 1 1 n 0 0 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 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x 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 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 n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n n n n n 0 0 0 0 0 0 0 0 r r r r r r r r C C C C C Z Z Z Z Z C C C C C H H H U U S S S S S V V V V V 7 6 7 6 7 (HL+C) ← (HL+C)+n SP ← SP+1:(SP) ← (SP)+n (PC+A) ← (PC+A)+n rr ← rr+(x+1, x) rr ← rr+(vw+1, vw) C C C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C C C U U U U U U U U U U U H H U S S S S S S S S S S S S S S V V V V V V V V V V V V V V 5 5 5 5 7 7 7 7 7 6 7 2 3 4 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 g ← g+n+CF gg ← gg+mn+CF 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 4 4 5 r ← r+g+CF rr ← rr+gg+CF r ← r+(x)+CF r ← r+(vw)+CF C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C H H H H H H H H H H H H S S S S S S S S S S S S V V V V V V V V V V V V 3 3 3 3 5 5 5 5 5 4 5 6 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 r ← r+(PC+A)+CF (x) ← (x)+n+CF r r r r n n n 0 v 0 0 0 0 n n n 0 v 0 0 0 0 n n n 1 v 1 1 1 1 n n n n n n n n r r r r 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 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 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 57 3.2 演算 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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 SUBB g,n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 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 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 m 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 m 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 g g m g g 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 n 0 0 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 g 1 1 1 0 0 0 1 1 0 0 0 0 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 0 n 0 1 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 g 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 g g m g g 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 n 1 1 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 g 0 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w n n n 1 v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 0 0 0 0 d d d d 0 0 0 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 0 0 0 0 d d d d 0 0 0 n 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 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 0 0 0 0 d d d d 0 0 0 x 1 1 1 1 d d d d 1 1 1 x 1 1 1 1 d d d d 1 1 1 x 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 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 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n n n n n 0 0 0 0 0 0 0 0 r r r r r r r r フラグ C H S C H S C H S C H S C U S C U S J C C C C C Z Z Z Z Z Z C C C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C C C U U U U U U U U U U U H H U C C r 0 1 1 C v v v v C Z Z Z Z C C C C C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C n n n r v r r r r n n n 0 v 0 0 0 0 n n n 0 v 0 0 0 0 n n n 0 v 0 0 0 0 n n n n n n n n r r r r 0 0 0 0 1 1 1 1 1 1 1 1 サイクル オペレーション V V V V V V 7 6 7 6 7 (HL+C) ← (HL+C)+n+CF SP ← SP+1:(SP) ← SP+n+CF (PC+A) ← (PC+A)+n+CF rr ← rr+(x+1, x) rr ← rr+(vw+1, vw) S S S S S S S S S S S S S S V V V V V V V V V V V V V V 5 5 5 5 7 7 7 7 7 6 7 2 3 4 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 g ← g-n gg ← gg-mn H U H H S S S S V V V V 2 4 4 5 r ← r-g rr ← rr-gg r ← r-(x) r ← r-(vw) H H H H H H H H H H H H S S S S S S S S S S S S V V V V V V V V V V V V 3 3 3 3 5 5 5 5 5 4 5 6 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) r ← r-(PC+A) (x) ← (x)-n 0 1 1 0 0 0 1 1 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w 1 1 1 x w n n n r v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 d d d d 0 0 0 n 1 r r r r d d d d r r r n 1 r r r r d d d d r r r n 0 r r r r d d d d r r r n 0 0 0 0 0 d d d d 0 0 0 n 0 1 1 1 1 d d d d 1 1 1 n 1 1 1 1 1 d d d d 1 1 1 n 0 n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n Page 58 r r r r n n n 0 v 0 0 0 0 n n n 1 v 1 1 1 1 n n n 1 v 1 1 1 1 n n n n C C C C C Z Z Z Z Z C C C C C H H H U U S S S S S V V V V V 7 6 7 6 7 (HL+C) ← (HL+C)-n SP ← SP+1:(SP) ← (SP)-n (PC+A) ← (PC+A)-n rr ← rr-(x+1, x) rr ← rr-(vw+1, vw) C C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C C U U U U U U U U U U U H H S S S S S S S S S S S S S V V V V V V V V V V V V V 5 5 5 5 7 7 7 7 7 6 7 2 3 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 g ← g-n-CF TLCS-870/C 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) 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) 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 0 1 1 0 1 0 1 0 n n n n フラグ サイクル オペレーション J Z C H S V 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 4 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 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 0 0 0 0 d d d d 0 0 0 x 1 1 1 1 d d d d 1 1 1 x 0 0 0 0 d d d d 0 0 0 x C C C C C C C C C C C C Z Z Z Z Z Z Z Z Z Z Z Z C C C C C C C C C C C C H H H H H H H H H H H H S S S S S S S S S S S S V V V V V V V V V V V V 3 3 3 3 5 5 5 5 5 4 5 6 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 r ← r-(PC+A)-CF (x) ← (x)-n-CF 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 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 オブジェクトコード (2 進 ) ニモニック 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 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 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 m 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 0 m 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 m 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 g m g g 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 n 0 0 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 g g m g g 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 g m g g 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 n 0 1 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 1 1 1 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 1 1 1 0 g m g g 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 n 1 0 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 g g m g g 0 1 0 0 1 0 1 0 1 0 1 1 0 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 0 1 1 0 0 0 1 0 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w 0 0 0 x w n n n r v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 0 0 0 0 d d d d 0 0 0 n 1 1 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 0 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 0 0 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 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 1 1 1 1 d d d d 1 1 1 x 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n n n n n 0 0 0 0 0 0 0 0 r r r r r r r r 0 1 1 0 Page 59 C C C C C Z Z Z Z Z C C C C C H H H U U S S S S S V V V V V 7 6 7 6 7 (HL+C) ← (HL+C)-n-CF SP ← SP+1:(SP) ← SP-n-CF (PC+A) ← (PC+A)-n-CF rr ← rr-(x+1, x) rr ← rr-(vw+1,vw) C C C C C C C C C C C 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 C – – – U U U U U U U U U U U – – – S S S S S S S S S S S – – – V V V V V V V V V V V – – – 5 5 5 5 7 7 7 7 7 6 7 2 3 4 rr ← rr-(DE+1, DE) rr ← rr-(HL+1, HL) rr ← rr-(IX+1, IX) rr ← rr-(IY+1, IY+d) 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 g ← g&n gg ← gg&mn Z Z r 1 0 0 Z v v v v Z Z Z Z Z – – – – – – – – – – – – – – – – 2 4 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 Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 3 3 3 3 5 5 5 5 5 4 5 6 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) r ← r&(PC+A) (x) ← (x)&n r r r r n n n 0 v 0 0 0 0 n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n n n n n n r r r r 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 3.2 演算 TLCS-870/C 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 OR (PC+A),n OR rr,(x) フラグ サイクル J Z C H S V オブジェクトコード (2 進 ) ニモニック n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 n 0 1 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 g g n 0 0 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 g g n 1 0 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 g g m m mm mmmm 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 g g 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 n 0 1 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 g g 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 n 0 1 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 g g 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 n 1 0 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 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 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 オペレーション 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w n n n r v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 1 1 1 1 d d d d 1 1 1 n 1 1 0 0 0 0 d d d d 0 0 0 n 1 1 0 0 0 0 d d d d 0 0 0 n 0 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 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 1 1 1 1 d d d d 1 1 1 x 1 1 1 1 d d d d 1 1 1 x 0 0 0 0 d d d d 0 0 0 x 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 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 n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r n n n n n n n n 0 0 0 0 0 0 0 0 r r r r r r r r Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – 7 6 7 6 7 (HL+C) ← (HL+C)&n SP ← SP+1:(SP) ← (SP)&n (PC+A) ← (PC+A)&n rr ← rr&(x) rr ← rr&(vw) Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 5 5 5 5 7 7 7 7 7 6 7 2 3 4 rr ← rr&(DE) rr ← rr&(HL) rr ← rr&(IX) rr ← rr&(IY) rr ← rr&(IX+d) rr ← rr&(IY+d) rr ← rr&(SP+d) rr ← rr&(HL+d) rr ← rr&(HL+C) SP ← SP+1:rr ← rr&(SP) rr ← rr&(PC+A) A ← An g ← gn gg ← ggmn Z Z r 1 1 0 Z v v v v Z Z Z Z Z – – – – – – – – – – – – – – – – 2 4 4 5 r ← rg rr ← rrgg 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 Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 3 3 3 3 5 5 5 5 5 4 5 6 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) r ← r(PC+A) (x) ← (x)n r r r r n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n 0 v 0 0 0 0 n n n n n n n n r r r r 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 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 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 0 0 x 0 0 0 x n n n r (HL+C) ← (HL+C)n SP ← SP+1:(SP) ← (SP)n (PC+A) ← (PC+A)n rr ← rr(x) 1 1 1 x 1 1 1 x 0 0 0 x 1 1 1 x 1 1 1 x 0 0 0 x n n n 1 n n n 0 n n n r n n n r Page 60 n n n 1 n n n 1 n n n 0 Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – 7 6 7 6 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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 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) 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) 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 m 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 n 1 0 1 1 1 1 1 n 1 n 1 n 1 n 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 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 n 1 1 1 1 1 1 1 n 1 n 1 n 1 n 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 m 1 1 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 n 1 1 1 1 1 1 0 n 0 n 0 n 0 n 1 1 0 1 1 r 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 r 0 0 0 0 1 1 1 1 0 0 0 0 0 0 m 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 n 0 0 0 0 0 0 1 n 1 n 1 n 1 n 0 0 0 0 0 r 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 1 1 m 1 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 n 0 0 0 0 0 0 0 n 0 n 0 n 0 n 0 0 1 0 0 r 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 g g m g g 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 n 0 1 0 0 1 1 1 n 1 n 1 n 1 n 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 r r 0 0 0 0 0 1 1 1 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 1 1 1 0 n 0 0 1 1 0 0 0 n 0 n 1 n 1 n 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 r r 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 g g m g g 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 n 1 1 0 1 0 1 0 n 1 n 0 n 1 n 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 r r 0 1 0 0 w w w w w w w w v v v v 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 1 1 r r r r d d d d r r r n 1 1 r r r r d d d d r r r n 0 0 r r r r d d d d r r r n 0 1 1 1 1 1 d d d d 1 1 1 n 1 1 1 1 1 1 d d d d 1 1 1 n 0 0 0 0 0 0 d d d d 0 0 0 n 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 0 0 0 0 d d d d 0 0 0 x 0 0 0 0 d d d d 0 0 0 x r r r r d d d d r r r x r r r r d d d d r r r x r r r r d d d d r r r x 1 1 1 1 d d d d 1 1 1 x 0 0 0 0 d d d d 0 0 0 x 1 1 1 1 d d d d 1 1 1 x 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 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 1 1 1 1 0 0 0 0 r r r r r r r r n n n n n n n n 0 0 0 0 0 0 0 0 r r r r r r r r フラグ サイクル オペレーション J Z C H S V v v v v Z Z – – – – 7 rr ← rr(vw) Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 5 5 5 5 7 7 7 7 7 6 7 2 3 4 rr ← rr(DE) rr ← rr(HL) rr ← rr(IX) rr ← rr(IY) rr ← rr(IX+d) rr ← rr(IY+d) rr ← rr(SP+d) rr ← rr(HL+d) rr ← rr(HL+C) SP ← SP+1:rr ← rr(SP) rr ← rr(PC+A) A←A^n g←g^n gg ← gg ^ mn Z Z r 1 0 1 Z v v v v Z Z Z Z Z – – – – – – – – – – – – – – – – 2 4 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 Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 3 3 3 3 5 5 5 5 5 4 5 6 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) r ← r ^ (PC+A) (x) ← (x) ^ n r r r r 1 1 1 1 1 1 1 1 0 0 0 0 n n n n n n n n r r r r 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 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 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 0 0 x w 1 1 1 x w 1 1 1 x w 0 0 0 x w 0 0 0 x w 1 1 1 x w 0 0 0 x w 1 1 1 x w n n n r v 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 r r r r d d d d r r r r r r r d d d d r r r r r r r d d d d r r r 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 1 1 1 1 d d d d 1 1 1 n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n r v r r r r n n n r v r r r r 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 0 0 0 0 r r r r n n n 1 v 1 1 1 1 n n n 0 v 0 0 0 0 n n n 1 v 1 1 1 1 0 0 0 0 v v v v Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – 7 6 7 6 7 (HL+C) ← (HL+C) ^n SP ← SP+1:(SP) ← (SP) ^n (PC+A) ← (PC+A) ^ n rr ← rr ^ (x) rr ← rr ^ (vw) Z Z Z Z Z Z Z Z Z Z Z C C C C Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 5 5 5 5 7 7 7 7 7 6 7 1 2 5 6 rr ← rr ^ (DE) rr ← rr ^ (HL) rr ← rr ^(IX) rr ← rr ^ (IY) rr ← rr ^ (IX+d) rr ← rr ^ (IY+d) rr ← rr ^ (SP+d) rr ← rr ^ (HL+d) rr ← rr ^ (HL+C) SP ← SP+1:rr ← rr ^ (SP) rr ← rr ^ (PC+A) r ← r+1 rr ← rr+1 (x) ← (x)+1 (vw) ← (vw)+1 C Z – – – – 4 Page 61 (DE) ← (DE)+1 3.2 演算 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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) 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) 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 1 1 1 1 1 1 1 1 1 0 0 0 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 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 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 r r 0 0 0 0 0 1 1 1 1 1 1 1 1 1 g g 0 0 0 0 0 0 0 g 1 0 0 0 0 1 1 1 1 1 r r 0 0 0 1 1 0 0 0 0 1 1 1 1 1 g g 0 0 1 1 0 1 1 g 1 0 1 0 1 0 1 1 0 1 r r 0 1 0 0 1 0 1 0 1 0 1 1 0 1 g g 0 1 0 1 0 0 1 g 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 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 0 0 0 0 d d d d 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 0 0 0 0 0 0 0 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 d d d d 1 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 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 0 d d d d 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 d d d d 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Page 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 v v v v 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 J C C C C C C C C C C C C C C 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 C C C Z Z Z Z Z Z Z 1 Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z – フラグ C H S – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – C C – – – – C C C – – – – – – – – – – – – H H – – – – – – – – – – – – – – – – – – – – – – – – – – – – – サイクル オペレーション V – – – – – – – – – – – – – – 4 4 4 6 6 6 6 6 5 6 1 2 5 6 (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 (PC+A) ← (PC+A)+1 r ← r−1 rr ← rr−1 (x) ← (x)−1 (vw) ← (vw)−1 – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 2 2 8 8 8 8 8 8 8 3 (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 (PC+A) ← (PC+A)−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 TLCS-870/C 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 C Z * – S V 3 0 0 0 0 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 – – – – – 4 オペレーション 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) 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) RORD A,(PC+A) 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 1 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 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 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 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 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 1 1 1 1 1 1 1 v v v v 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Page 63 0 7654321 0 0 CF CF 7654321 0 7654321 0 CF gg 0 CF gg CF 7654321 0 ( ROLD A,(x) ROLD A,(vw) 7654321 0 CF 4 4 ) 0 1 1 0 1 – – – – – 8 v v v v 1 – – – – – 9 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 v v v v 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 1 1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 7 7 7 7 9 9 9 9 9 8 9 8 9 1 1 1 1 1 1 1 1 1 1 1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 7 7 7 7 9 9 9 9 9 8 9 A (Memory) 7654321 0 7654321 0 (4 ) ) (+SP) SP SP + 1 A (Memory) 7654321 0 7654321 0 (4 ) (+SP) SP SP + 1 ) 3.4 ビット操作、フラグ操作 TLCS-870/C 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 LD CF,(IY+d).b 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 1 0 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 1 0 1 0 1 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 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 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 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 g b 0 b 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 g b 0 b 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 g b 0 b 0 0 1 1 1 1 g b 0 b 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 g b 0 b 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 g b 0 b 1 1 0 0 0 0 g b 1 b 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 g b 1 b 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 g b 1 b 0 1 0 1 0 1 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 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 0 0 0 0 d d d d 0 0 0 x w 0 0 0 0 d d d d 0 0 0 x w b b b b d d d d b b b x w b b b b d d d d b b b x w b b b b d d d d b b b x w 1 1 1 1 d d d d 1 1 1 1 x w 1 1 1 1 d d d d 1 1 1 1 x w 1 1 1 1 d d d d 1 1 1 0 x w 1 1 1 1 d d d d 1 1 1 0 x w 0 0 0 0 d d d d 0 0 0 1 x w 0 0 0 0 d d d d 0 0 0 b x w 1 1 1 1 d d d d 1 1 1 b x w 0 0 0 0 d d d d 0 0 0 b x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 0 0 0 0 d d d d 0 0 0 x w 1 1 1 1 d d d d 1 1 1 x w b b b b d d d d b b b x w b b b b d d d d b b b x w b b b b d d d d b b b x w 1 1 1 1 d d d d 1 1 1 0 x w 1 1 1 1 d d d d 1 1 1 1 x w 1 1 1 1 d d d d 1 1 1 0 x w 1 1 1 1 d d d d 1 1 1 1 x w 1 1 1 1 d d d d 1 1 1 1 x w 0 0 0 0 d d d d 0 0 0 b x w 1 1 1 1 d d d d 1 1 1 b x w 0 0 0 0 d d d d 0 0 0 b x w 0 0 0 0 d d 1 1 1 1 d d 0 0 0 0 d d 1 1 1 1 d d 1 1 1 1 d d b b b b d d b b b b d d b b b b d 0 1 0 1 d 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 v v v v 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 v v v v 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 v v v v 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 v v v v Page 64 フラグ C H S – – – – – – – – – サイクル オペレーション V – 3 ZF ← g.b:g.b ← 1 – 5 ZF ← (x).b:(x).b ← 1 – 6 ZF ← (vw).b:(vw).b ← 1 J Z Z v v v v 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 6 5 6 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 Z Z Z Z Z Z Z Z Z Z Z Z Z Z * * * * * * * * * * * * * * – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 3 5 6 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 Z Z Z Z Z Z Z Z Z Z Z Z Z * * * * * * * * * * * * * – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 5 6 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 * * * * 0 * 0 * 0 * 0 * * * * C – C – v C – – – – – – – – – – – – * * * – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 2 4 5 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 ZF ← (PC+A).A:(PC+A).A ← 0 CF ← g.b CF ← (x).b CF ← (vw).b 0 0 0 0 b b b b b b b b b b b b 0 0 1 0 v v v v 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 v v v v 1 1 1 1 b b b b b b b b b b b b 1 0 1 0 v v v v 1 1 1 1 0 0 0 0 1 1 1 1 v v v Z Z Z Z Z Z Z Z Z Z Z C – * – – – 3 C – * – – – 3 C – * – – – 3 C – * – – – 3 1 b b b C – * – – – 5 1 b b b C – * – – – 5 CF ← (DE).b CF ← (HL).b CF ← (IX).b CF ← (IY).b CF ← (:IX+d).b CF ← (IY+d).b TLCS-870/C オブジェクトコード (2 進 ) ニモニック TEST g.b#1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 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 LD CF,(SP+d).b LD CF,(HL+d).b LD CF,(HL+C).b LD CF,(+SP).b LD CF,(PC+A).b LD CF,(x).A LD CF,(vw).A 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 LD CF,(PC+A).A 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 g 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 g 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 g d d 0 0 0 x w d d 1 1 1 x w d d 0 0 0 x w d d 1 1 1 x w d d 1 1 1 x w d d b b b x w d d b b b x w d d b b b x w 1 1 1 1 d d d d 1 1 1 0 1 1 1 1 d d d d 1 1 1 1 1 1 1 1 d d d d 1 1 1 0 1 1 1 1 d d d d 1 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 1 d d d d 1 1 1 b 0 0 0 0 d d d d 0 0 0 b 0 0 0 0 d d d d 0 0 0 b 0 1 0 1 0 1 0 1 1 b b b 1 b b b 1 1 1 1 v v v v 1 1 0 0 v v v v J Z C – C – C – C – C – C – C – フラグ C H S * – – * – – * – – * – – * – – * – – * – – V – – – – – – – サイクル CF ← (SP+d).b CF ← (HL+d).b CF ← (HL+C).b SP ← SP+1:CF ← (SP).b CF ← (PC+A).b CF ← (x).A CF ← (vw).A C – * – – – 3 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 C – * – – – 3 C – * – – – 3 C – * – – – 3 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 0 0 0 オペレーション 5 5 5 4 5 4 5 C – * – – – 5 C – * – – – 5 C – * – – – 5 C – * – – – 5 C – * – – – 5 C – * – – – 4 C – * – – – 5 * – J – – – 2 * – J – – – 4 JF ← (x).b v v v v * – J – – – 5 JF ← (vw).b 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 TEST (PC+A).b#1 0 1 0 0 1 1 1 1 0 1 0 1 1 b b b TEST (x).A#1 1 1 1 0 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 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 LD (PC+A).b,CF LD (x).A,CF LD (vw).A,CF LD (DE).A,CF LD (HL).A,CF LD (IX).A,CF 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 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 g 0 0 b 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 g 0 0 b 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 1 g 0 1 b 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 * – J – – – 4 * – J – – – 5 1 1 0 0 1 1 x w 1 1 x w 1 1 x w 1 0 x w 1 1 x w 1 b x w 0 b x w 0 b x 1 1 1 0 w v v v v 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 1 1 1 1 d d d d 1 1 1 x w 0 0 0 0 d d d d 0 0 0 x w 1 1 1 1 d d d d 1 1 1 x w b b b b d d d d b b b x w b b b b d d d d b b b x w b b b b d d d d b b b x w 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 * – J – – – 4 v v v v * – J – – – 5 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 v v v v 0 0 1 1 0 0 1 1 0 0 1 1 JF ← (IX+d).b JF ← (SP+d).b JF ← (HL+C).b SP ← SP+1:JF ← (SP).b JF ← (PC+A).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 JF ← (IY+d).A JF ← (HL+d).A SP ← SP+1:JF ← (SP).A * 1 1 b b b 1 v v v v 1 – – – – – – – – 2 – – – – 5 – – – – 6 JF ← (PC+A).A g.b ← CF (x).b ← CF (vw).b ← CF 1 1 1 1 1 1 1 1 1 1 1 1 1 – – – – – – – – – – – – – – – – – – – – – – – – – – (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 (PC+A).b ← CF (x).A ← CF (vw).A ← CF 1 1 1 1 b b b b b b b b b b b b 0 0 1 1 v v v v J – – – 5 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 5 6 5 6 1 – – – – – 4 1 – – – – – 4 1 – – – – – 4 Page 65 JF ← (IX).b (DE).A ← CF (HL).A ← CF (IX).A ← CF 3.4 ビット操作、フラグ操作 TLCS-870/C オブジェクトコード (2 進 ) ニモニック 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 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 CPL (+SP).b 1 1 1 0 0 1 1 0 1 1 1 0 0 b b b CPL (PC+A).b CPL (x).A CPL (vw).A 1 0 0 1 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 1 w w w w v v v v 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 0 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 d d d d 1 CPL (+SP).A 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 CPL (PC+A).A XOR CF,g.b XOR CF,(x).b XOR CF,(vw).b DI#1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 EI#1 1 1 0 0 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 LD (PC+A).A,CF CPL g.b CPL (x).b CPL (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 XOR CF,(PC+A).b SET CF CLR CF CPL CF #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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 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 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 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 1 1 1 0 0 0 0 1 1 1 1 1 g 0 0 b 1 1 0 0 0 0 1 1 1 1 0 0 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 0 1 0 1 0 1 0 1 1 0 1 g 0 1 b 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 g 0 1 b 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 d d d d 1 1 1 1 x w 1 d d d d 1 1 1 1 x w 1 d d d d 1 1 1 1 x w 1 d d d d 1 1 1 0 x w 0 d d d d 0 0 0 0 x w 0 d d d d 0 0 0 b x w 1 d d d d 1 1 1 b x w 1 d d d d 1 1 1 b x w 1 1 1 1 d d d d 1 1 1 1 1 d d d d 1 1 1 1 1 d d d d 1 0 0 0 0 d d d d 0 0 0 0 0 d d d d 0 b b b b d d d d b b b b b d d d d b b b b b d d d d b 1 1 1 1 d d d d 1 1 1 1 1 d d d d 1 1 1 1 1 d d d d 1 0 0 0 0 d d d d 0 1 1 1 1 d d d d 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 1 1 0 v v v v 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 b b b v v v v 0 0 0 0 b b b b b b b b b b b b J 1 1 1 1 1 1 1 1 Z Z Z Z – – – – – – – – * * * Z Z Z Z Z Z Z Z Z * * * * * * * * * フラグ C H S – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – V – – – – – – – – – – – – – – – – – – – – サイクル (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 4 4 4 4 6 6 6 6 6 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 Z * – – – – 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Z * – – – – 6 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 * * * * * * * * * – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 4 4 4 4 6 6 6 6 6 Z * – – – – 5 1 0 x w 1 1 x w 1 0 x w 1 1 x w 1 0 x w 0 b x w 1 b x w 1 b x 0 1 0 1 w v v v v 0 0 0 0 d d d d 0 0 0 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 b b b b d d d d b b b b b b b d d d d b b b b b b b d d d d b b b Z * – – – – 6 C – * – – – 2 0 b b b C – * – – – 4 v v v v C – * – – – 5 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 C – * – – – 4 C – * – – – 5 0 0 1 1 1 0 1 0 0 1 * Z 0 0 0 0 0 0 1 1 1 0 1 0 Z * – – – – 5 アセンブラ用拡張命令 Page 66 – – – * 1 0 * – – – – – – – – – – – – – オペレーション 4 6 6 6 6 6 5 6 3 5 6 1 1 1 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 ZF ← (PC+A).A:(PC+A).A ← (PC+A).A CF ← CF ^ g.b CF ← CF ^ (x).b CF ← CF ^ (vw).b 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 CF ← CF ^ (PC+A).b CF ← 1 CF ← 0 JF ← CF:CF ← CF ZF ← IMF:IMF ← 0 ZF ← IMF:IMF ← 1 TLCS-870/C 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 JR LE,$+2+d 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 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 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 if (CFZF) = 1 then PC ← PC+d else null if (CFZF) = 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 7 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) PC ← (PC+A+1,PC+A) 1 1 1 1 1 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) JP (PC+A) 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 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 d d 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 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 1 d d 1 1 0 0 0 0 1 g 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 g 0 1 0 0 1 0 1 0 1 0 1 1 0 1 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 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 1 1 1 1 d d d d 1 1 1 0 0 0 0 d d d d 0 0 0 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 Page 67 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 Z – – – – – フラグ C H S – – – – – – – – – – – – – – – J 1 1 1 1 1 3.6 サブルーチンコール、リターン、ソフトウエア割り込み、 ノーオペレーション TLCS-870/C 3.6 サブルーチンコール、リターン、ソフトウエア割り込み、ノーオペレー ション フラグ サイ J Z C H S V クル オブジェクトコード (2 進 ) ニモニック CALLV n 0 1 1 1 n n n n – – – – – – 7 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 – – – – – – 9 CALL (vw) 1 1 1 0 1 1 1 1 0 0 0 1 w w w w 1 1 0 1 w w w w v v v v v v v v – – – – – – 10 CALL (DE) 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 1 – – – – – – 8 CALL (HL) 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 – – – – – – 8 CALL (IX) 1 1 1 0 0 1 0 0 1 1 1 1 1 1 0 1 – – – – – – 8 CALL (IY) 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 – – – – – – 8 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 – – – – – – 10 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 – – – – – – 10 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 – – – – – – 10 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 – – – – – – 10 CALL (+SP) 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 – – – – – – 9 CALL (HL+C) 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 – – – – – – 10 CALL (PC+A) 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 – – – – – – 10 RET 1 1 1 1 1 0 1 0 – – – – – – 6 RETI 1 1 1 1 1 0 1 1 * * * * * * 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 mmmm – – – – – – 6 – – – – – – 6 1 0 1 1 * * * * * * 7 Page 68 オペレーション (SP,SP-1) ← PC-1:SP ← SP-2: PC ← (n × 2+FFC1H,n × 2+FFC0H) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← mn (SP,SP-1) ← PC+1:SP ← SP-2: PC ← gg (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (x+1,x) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (vw+1,vw) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (DE+1,DE) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (HL+1,HL) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IX+1,IX) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IY+1,IY) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IX+d+1,IX+d) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (IY+d+1,IY+d) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (SP+d+1,SP+d) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (HL+d+1,HL+d) (SP+1,SP) ← PC:SP ← SP-1: PC ← (SP+3,SP+2) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (HL+C+1,HL+C) (SP,SP-1) ← PC+1:SP ← SP-2: PC ← (PC+A+1,PC+A) SP ← SP+2:PC ← (SP,SP-1) SP ← SP+3:PC ← (SP-1,SP-2): PSW ← (SP):IMF ← (SP).0 SP ← SP+3:PC ← (SP-1,SP-2): PSW ← (SP):IMF ← (SP).0 (SP) ← PSW:(SP).0 ← IMF: (SP-1,SP-2) ← PC-1: PC ← (FFFDH,FFFCH) ノーオペレーション TLCS-870/C TLCS-870/C 命令コードマップ 4. 4.1 第 1 オペコード 下位 上位 0 1 2 3 NOP 4 5 6 7 8 9 A B CLR CF SETCF CPL CF CMP LDW (mem), mn LD (mem), n (x), n (x) (x) C D E F LD A, (mem) LD (mem), A (x) (HL) (x) (HL) E D L H E D L H IX IY SP IX IY SP (PC+A) 5 6 7 4 5 6 7 LE GT T F 0 (HL) (HL) LD A,r LD r,n 1 A W C B E D L H A W C B INC r DEC r 2 A W C B E D L INC rr 3 WA BC DE HL A W C B IX IY SP E D L H LD SP,SP+d A W C B DEC rr WA BC DE WA BC DE LD r,A HL LD SP,SP-d LD rr,mn (src) 4 PUSH rr ( 注 4) H HL (dst) LD CF,(x).b 5 6 WA BC DE HL (IX+d) (IY+d) (SP+d) (HL+d) ADDC A, n ADD A, n SUBB A, n SUB A, n AND A, n XOR A, n OR A, n CMP A, n 7 0 1 2 3 4 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 1 2 3 (src) JR cc, a D WA BC DE HL (IX+d) (IY+d) (SP+d) (HL+d) EQ/Z NE/NZ LT/CS source memory prefix: (src) GE/CC register prefix: g/gg E (x) (vw) (DE) (HL) (IX) (IY) (+SP) (HL+C) destination memory prefix: (dst) A/WA W/BC C/DE B/HL E/IX D/IY L/SP H/HL RET RETI JR a CALL JP mn SWI F (x) (vw) (DE) (HL) (IX) 注 1) 空白コードは未定義です。 (IY) (SP-) (HL+C) mn 注 2) register prefix 命令 (E8H~EFH) は、次のページの 1.7 (2) が第 2 オペコードです。 注 3) source/destination prefix 命令 (E0H~E7H/F0H~F7H/54H~57H/D4H~D7H/4FH) は、1.7 (3) が第 2 オペコードです。 注 4) PUSH rr/POP rr 命令に使用できるレジスタ (rr) は、WA, BC, DE, HL のみです。 Page 69 4. TLCS-870/C 命令コードマップ 4.2 第 2 オペコード ( レジスタプリフィックス ) TLCS-870/C 4.2 第 2 オペコード ( レジスタプリフィックス ) 下位 上位 0 1 2 3 4 5 6 7 8 9 A B C D ADDC ADD SUBB SUB AND A, g A, g A, g A, g A, g C, g C, g C, g C, g E, g E, g E, g L, g L, g A W E F XOR OR CMP ADDC ADD SUBB SUB AND A, g A, g A, g W, g W, g W, g W, g W, g XOR OR CMP W, g W, g W, 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 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 H, g H, g H, g H, g H, g H, g H, g H, g C B D L H WA BC DE HL IY SP 0 1 2 3 LD r, g LD rr, gg 4 E XOR CF, g.b IX LD CF, g.b 5 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ADDC ADD SUBB SUB AND XOR OR CMP ADDC ADD SUBB SUB AND XOR OR CMP g, n g, n g, n 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 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 0 1 2 3 5 6 7 0 1 2 3 4 5 6 7 PUSH POP DAA DAS PUSH POP LD gg gg g g PSW PSW PSW, n 5 6 7 CALL JP SWAP gg gg g 8 9 A B SET g.b CLR g.b C 4 JR cc, a D M P SLT SEG SLE SGT VS VC CPL g.b LD g.b, CF E F 0 1 2 3 4 5 6 7 SHLC A SHRC A MUL DIV SHLC SHRC ROLC gg gg ggH, ggL gg, C g g g 注 1) 0 1 2 3 RORC NEG RETN g CS, gg 空白コードは未定義です。 注 2) 第 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 Page 70 4 TLCS-870/C g 第 1 オペコード gg 第 1 オペコード D ED IY ED L EE SP EE H EF HL EF 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) IX IY SP 4 5 6 IX IY SP D L 1 2 3 LD r, (src) LD rr, (src) 4 A W C B 0 1 2 3 ADDC ADD SUBB (src), n (src), n (src), n E D L H WA BC DE 4 5 6 7 0 1 2 SUB AND XOR OR CMP (src), n (src), n (src), n (src), n (src), n XOR CF, (src).b HL LD CF, (src).b 5 3 7 LD (dst), rr 6 WA BC DE XCH r, (src) HL LD (dst), r 7 A 8 W C B E D L H A W C B E 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) 0 1 2 5 6 7 0 1 2 3 5 6 7 IY SP HL 4 5 6 7 9 A B SET (src).b CLR (src).b C 3 4 4 XCH rr, (src) D WA BC DE 1 2 3 CPL (src).b HL IX LD (src).b, CF E 0 1 2 3 4 5 6 7 0 INC SET LD 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) 空白コードは未定義です。 注 2) 第 1 オペコードは、以下のとおりです。 Page 71 4. TLCS-870/C 命令コードマップ 4.3 第 2 オペコード ( メモリプリフィックス ) TLCS-870/C (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 72