目次 [ はじめに ] 1 [1] レジスタについて 1 [2] 8ビット転送命令 1 1. MOV 1, MOV,M 2 3. MOV M, 2 4. MVI,B MVI M,B LDAX B 2 7. LDAX D 2 8. LDA NN 2 9. STAX

Similar documents
ND80ZⅢ応用プログラムq

                 ZB11W取扱説明書

取扱説明書 -詳細版- 液晶プロジェクター CP-AW3019WNJ

HITACHI 液晶プロジェクター CP-AX3505J/CP-AW3005J 取扱説明書 -詳細版- 【技術情報編】

1 8 Z80 Z GBA ASIC 2 WINDOWS C 1

HITACHI 液晶プロジェクター CP-EX301NJ/CP-EW301NJ 取扱説明書 -詳細版- 【技術情報編】 日本語

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

<5A2D38308A E9197BF2E786C73>

日立液晶プロジェクター CP-AW2519NJ 取扱説明書- 詳細版-

ディジタルシステム設計

補足情報

PowerPoint プレゼンテーション

コンピュータ工学Ⅰ

NAND FF,,

ソフトウェア基礎技術研修

TLCS-870/C1シリーズ CPU

スライド 1

計算機アーキテクチャ

007 0 ue ue b 6666 D

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

1/68 A. 電気所 ( 発電所, 変電所, 配電塔 ) における変圧器の空き容量一覧 平成 31 年 3 月 6 日現在 < 留意事項 > (1) 空容量は目安であり 系統接続の前には 接続検討のお申込みによる詳細検討が必要となります その結果 空容量が変更となる場合があります (2) 特に記載

スライド 1

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

あさひ indd

スライド 1

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

Microsoft PowerPoint ppt

1990 IMO 1990/1/15 1:00-4:00 1 N N N 1, N 1 N 2, N 2 N 3 N 3 2 x x + 52 = 3 x x , A, B, C 3,, A B, C 2,,,, 7, A, B, C

学習の手順

( )

PowerPoint プレゼンテーション

取扱説明書<詳細版>

04年度LS民法Ⅰ教材改訂版.PDF

空き容量一覧表(154kV以上)

2/8 一次二次当該 42 AX 変圧器 なし 43 AY 変圧器 なし 44 BA 変圧器 なし 45 BB 変圧器 なし 46 BC 変圧器 なし

熊本県数学問題正解

1. 2 P 2 (x, y) 2 x y (0, 0) R 2 = {(x, y) x, y R} x, y R P = (x, y) O = (0, 0) OP ( ) OP x x, y y ( ) x v = y ( ) x 2 1 v = P = (x, y) y ( x y ) 2 (x

Microsoft PowerPoint - ProcML-12-3.ppt

HyRAL®FPGA設計仕様書

‚å™J‚å−w“LŁñ›ÄP1-7_7/4

取扱説明書 [F-02F]

1 (1) vs. (2) (2) (a)(c) (a) (b) (c) 31 2 (a) (b) (c) LENCHAR

PowerPoint プレゼンテーション

ex05_2012.pptx


Microsoft PowerPoint - kougi7.ppt

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

05‚å™J“LŁñfi~P01-06_12/27

Catalog No.AR006-e DIN EN ISO 9001 JIS Z 9901 Certificate: 販売終了

しんきんの現況H30.PS

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

A(6, 13) B(1, 1) 65 y C 2 A(2, 1) B( 3, 2) C 66 x + 2y 1 = 0 2 A(1, 1) B(3, 0) P 67 3 A(3, 3) B(1, 2) C(4, 0) (1) ABC G (2) 3 A B C P 6

SIRIUS_CS3*.indd

さくらの個別指導 ( さくら教育研究所 ) A 2 P Q 3 R S T R S T P Q ( ) ( ) m n m n m n n n

三菱電機マイコン機器ソフトウエア株式会社

Microsoft PowerPoint - 7.Arithmetic.ppt

(, Goo Ishikawa, Go-o Ishikawa) ( ) 1

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

高校生の就職への数学II

.1 A cos 2π 3 sin 2π 3 sin 2π 3 cos 2π 3 T ra 2 deta T ra 2 deta T ra 2 deta a + d 2 ad bc a 2 + d 2 + ad + bc A 3 a b a 2 + bc ba + d c d ca + d bc +

2 (1) a = ( 2, 2), b = (1, 2), c = (4, 4) c = l a + k b l, k (2) a = (3, 5) (1) (4, 4) = l( 2, 2) + k(1, 2), (4, 4) = ( 2l + k, 2l 2k) 2l + k = 4, 2l

JavaプログラミングⅠ

‡ç‡¢‡Ó‡Ü‡Á‡Õ04-07„”

PSCHG000.PS

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

linearal1.dvi

A B 5 C mm, 89 mm 7/89 = 3.4. π 3 6 π 6 6 = 6 π > 6, π > 3 : π > 3

コンピュータの仕組み(1)ハードウェア



MASM32 基本

Transcription:

ND80ZⅢ 8080 命令説明書 ( 有 ) 中日電工

目次 [ はじめに ] 1 [1] レジスタについて 1 [2] 8ビット転送命令 1 1. MOV 1,2 1 2. MOV,M 2 3. MOV M, 2 4. MVI,B2 2 5. MVI M,B2 2 6. LDAX B 2 7. LDAX D 2 8. LDA NN 2 9. STAX B 2 10. STAX D 2 11. STA nn 2 [3] 16ビット転送命令 3 12. LXI B,nn 3 13. LXI D,nn 3 14. LXI H,nn 3 15. LXI SP,nn 3 16.LHLD nn 3 17. SHLD nn 3 18. SPHL 3 19. PUSH B 3 20. PUSH D 3 21. PUSH H 3 22. PUSH PSW 3 23. POP B 3 24. POP D 3 25. POP H 3 26. POP PSW 3 [4] 交換命令 3 27. XCHG 3 28. XTHL 4 [8080のフラグ] 4 [5] 8ビット算術 論理演算命令 4 29. ADD 4 30.ADI n 5 31.ADD M 5 32. ADC 5 33.ACI n 5 34.ADC M 5 35. SUB 5 36. SUI n 5 37. SUB M 5 38.SBB 5 39.SBI n 6 40.SBB M 6 41.ANA 6 42.ANI n 6 43.ANA M 6 44. ORA 6 45. ORI n 6 46. ORA M 6 47. XRA 6 48. XRI n 7 49.XRA M 7 50. CMP 7 51. CPI n 7 52. CMP M 7 53. INR 7 54. INR M 7 55. DCR 7 56. DCR M 7 [6] その他の算術演算 CPU 制御命令 7 57. DAA 8 58. CMA 8 59. CMC 8 60. STC 8 61. NOP 8 62. HLT 8 63. DI 8 64. EI 8 [7] 16ビット算術演算命令 8 65. DAD B 8 66. DAD D 8 67. DAD H 8 68. DAD SP 8 69. INX B 8 70. INX D 9 71. INX H 9 72. INX SP 9 73. DCX B 9 74. DCX D 9 75. DCX H 9 76. DCX SP 9 [8] 回転 シフト命令 9 77. RLC 9 78. RAL 9 79. RRC 9 80. RAR 9 [9] ジャンプ命令 9 81. JMP nn 9 82. JNZ nn 10 83. JZ nn 10 84. JNC nn 10 85. JC nn 10 86. JPO nn 10 87. JPE nn 10 88. JP nn 10 89. JM nn 10 90. PCHL 10 [10] コール リターン命令 10 91. CALL nn 10 92. CNZ nn 10 93. CZ nn 10 94. CNC nn 10 95. CC nn 11 96. CPO nn 11 97. CPE nn 11 98. CP nn 11 99. CM nn 11 100. RET 11 101. RNZ 11 102. RZ 11 103. RNC 11 104. RC 11 105. RPO 11 106. RPE 11 107. RP 11 108. RET M 11 109. RST n(n=0~7) 11 [11] 入出力命令 12 110. IN n 12 111. OUT n 12 名古屋市守山区守山 2-8-14 パレス守山 305 有限会社中日電工 052 791 6254 Fax052 791 1391 E mail thisida@alles.o.jp Homepage http://www.alles.o.jp/~thisida/ 2010.9.23 Rev. 1.0

8080 命令説明書 [ はじめに ] ND80ZⅢ の CPU は Z80 です Z80 は 8080 の全ての命令を 8080 と同じように実行することができますが さらに 8080 にはなかった多くの命令が追加されています Z80 は 8080 と全く同じレジスタをもっていますが さらに 8080 にはなかったレジスタが追加されています Z80 の命令とレジスタの詳細については Z80 命令説明書 で詳しく説明をしています ND80ZⅢ には Z80 のプログラムを作るためのツールとして当社が独自に開発した ND80Z モニタプログラムが搭載されています と同時に かってのマイコンブームの火付け役となった NEC の TK80 のモニタプログラムも搭載していて TK80 と同じ動作をさせることもできるようになっています TK80 に搭載されていた CPU は Z80 ではなくて 8080 でした 当然のことながら TK80 のために書かれた多くのプログラムは 8080 の命令コード ( および 8080 ニーモニック ) で書かれています Z80 は 8080 の全ての命令コードをそのまま実行できますから 8080 のプログラム 命令を参照するには Z80 命令説明書 を利用することができます しかし Z80 命令説明書 には 8080 にはない多くの命令の説明についても書かれていますから その中から 8080 のみの命令をみつけるのは面倒です またはじめて Z80 のプログラムを書こうとする方にとっては Z80 の非常に多い命令にいきなり接するというのはいかにもハードルが高いことでもあります その意味では 8080 には Z80 に比べて少ない命令とレジスタしかない というのは 劣っているというよりもむしろ都合がよい長所である とも言えます そのように考えた 8080 の利点 を十分に活用できるように 本書はあえて CPU が 8080 である という想定で作成してあります 命令は 8080 の命令に限定して そのニーモニックも Z80 ニーモニック ( ザイログニーモニック ) ではなくて 8080 ニーモニック ( インテルニーモニック ) で表現してあります レジスタについても 8080 がもっているレジスタのみについて説明してあります Z80 は一部の命令で 実行結果のフラグの状態が 8080 とは異なっているものがあります また命令の実行クロック数も異なっているものがあります それらについては Z80 での動作を優先して表記し あわせて 8080 との相違を記述することにつとめました [1] レジスタについて 8080 には 8 ビットレジスタ B C D E H L A F と 16 ビットレジスタ SP PC があります ADD SUB などの加減算命令や ORA ANA などの論理演算命令は 2 つのレジスタ間で演算を行いますが 演算の結果を格納するレジスタは A レジスタに限られます F( フラグ ) レジスタは S Z H P C の各フラグをビット情報として格納しているレジスタですが PUSH PSW POP PSW 命令で A レジスタとともにスタックへの格納 取出しが出来るほかは演算などの命令の対象にすることはできません RAL などのローテイト命令や I/O 制御命令 IN OUT では A レジスタのみが使われます 8 ビットのレジスタ B と C D と E H と L はそれぞれ結合して 16 ビットのレジスタ BC DE HL として使うこともできます 16 ビットのレジスタ HL はメモリアドレスを示す間接アドレッシングレジスタとしても使われます 8080 ニーモニックでメモリを示す M は HL レジスタで示すメモリアドレスの意味で使われます BC DE レジスタも限られた命令 (STAX LDAX) においてのみ HL と同じように間接アドレッシングでメモリアドレスを示すために使われます [2] 8 ビット転送命令 ( この命令群はフラグに影響を与えません ) 以下の説明中 クロックというのはその命令を実行するのに必要なマシンクロック数のことです ND80ZⅢ の CPU クロックは 4MHz ですから 1 クロックは 1/4μS(0.25μS) になります したがってたとえばクロック =4 の命令の実行時間は 0.25 4=2.0μS になります Z80 は 8080 の全ての命令を 同じように実行しますが 一部の命令では その命令を実行するのに必要なクロック数が 8080 とは異なっています そのような命令では 8080 のクロック数を うしろに () で示しました また参考までに説明のうしろに Z80 ニーモニックも表記してあります 1. MOV 1,2 コード ( 表 1) クロック 4(5) 1 2 は B C D E H L A を表します 2 の内容を 1 に転送します 2 の内容は変化しません (LD 1,2) 1

( 表 1) 2 B C D E H L A B 40 41 42 43 44 45 47 C 48 49 4A 4B 4C 4D 4F D 50 51 52 53 54 55 57 1 E 58 59 5A 5B 5C 5D 5F H 60 61 62 63 64 65 67 L 68 69 6A 6B 6C 6D 6F A 78 79 7A 7B 7C 7D 7F ( 表 2) B 46 C 4E D 56 E 5E H 66 L 6E A 7E ( 表 3) B 70 C 71 D 72 E 73 H 74 L 75 A 77 2. MOV,M コード ( 表 2) クロック 7 M は HL レジスタで示されるメモリを表します M の内容を に転送します M の内容は変化しません (LD,(HL) ) 3. MOV M, コード ( 表 3) クロック 7 の内容を M に転送します の内容は変化しません (LD (HL), ) 4. MVI,n コード ( 表 4) クロック 7 n はこの命令コードの次のアドレスに書かれたデータを示します 8 ビットデータ n を に転送します (LD,n) ( 表 4) B C D E H L A 06XX 0EXX 16XX 1EXX 26XX 2EXX 3EXX 5. MVI M,n コード 36 クロック 10 n を M に転送します ( は任意の 8 ビットデータを表します ) (LD (HL),n) 6. LDAX B コード 0A クロック 7 BC レジスタで示されるメモリの内容を A に転送します メモリの内容は変化しません (LD A,(BC) ) 7. LDAX D コード 1A クロック 7 DE レジスタで示されるメモリの内容を A に転送します メモリの内容は変化しません (LD A,(DE) ) 8. LDA nn コード 3A クロック 13 命令コード 3A に続く 2 バイトデータ nn で示されるメモリの内容を A に転送します メモリの内容は変化しません この命令のように 2 バイトのデータを扱う場合には先に来るほうが下位アドレスであとに上位アドレスがきます たとえば 1234 番地の内容を転送する場合のコードは 3A3412 になります (LD A,(nn) ) 9. STAX B コード 02 クロック 7 A の内容を BC レジスタで示されるメモリに転送します A の内容は変化しません (LD (BC),A ) 10. STAX D コード 12 クロック 7 A の内容を DE レジスタで示されるメモリに転送します A の内容は変化しません (LD (DE),A ) 11. STA nn コード 32 クロック 13 A の内容を nn で示されるメモリに転送します A の内容は変化しません (LD (nn),a ) nn については 8.LDA nn の説明を参照してください 2

[3] 16 ビット転送命令 ( この命令群もフラグに影響を与えません ) 12. LXI B,nn コード 01 クロック 10 16 ビットのデータ nn をペアレジスタ BC に転送します (LD BC,nn ) nn については 8.LDA nn の説明を参照してください 13. LXI D,nn コード 11 クロック 10 16 ビットのデータ nn をペアレジスタ DE に転送します (LD DE,nn ) nn については 8.LDA nn の説明を参照してください 14. LXI H,nn コード 21 クロック 10 16 ビットのデータ nn をペアレジスタ HL に転送します (LD HL,nn ) nn については 8.LDA nn の説明を参照してください 15. LXI SP,nn コード 31 クロック 10 16 ビットのデータ nn を SP( スタックポインタ ) に転送します (LD SP,nn ) nn については 8.LDA nn の説明を参照してください 16.LHLD nn コード 2A クロック 16 nn で示されるメモリの内容を L に nn+1 番地のメモリの内容を H に転送します (LD HL,(nn) ) nn については 8.LDA nn の説明を参照してください 17. SHLD nn コード 22 クロック 16 L の内容を nn で示されるメモリへ H の内容を nn+1 番地のメモリへ転送します (LD (nn),hl ) nn については 8.LDA nn の説明を参照してください 18. SPHL コード F9 クロック 6(5) HL の内容を SP に転送します (LD SP,HL) 19. PUSH B コード C5 クロック 11 ペアレジスタ BC の内容を SP で示されるプッシュダウンスタックへ転送します (SP-1) B,(SP-2) C (PUSH BC) 20. PUSH D コード D5 クロック 11 DE の内容をスタックに転送します (SP-1) D,(SP-2) E (PUSH DE) 21. PUSH H コード E5 クロック 11 HL の内容をスタックに転送します (SP-1) H,(SP-2) L (PUSH HL) 22. PUSH PSW コード F5 クロック 11 アキュムレータ A とフラグレジスタ F の内容をスタックに転送します (SP-1) A,(SP-2) F (PUSH AF) 23. POP B コード C1 クロック 10 スタックのトップにあるデータが BC に転送されます C (SP) B (SP+1) (POP BC) 24. POP D コード D1 クロック 10 スタックのトップにあるデータが DE に転送されます E (SP) D (SP+1) (POP DE) 25. POP H コード E1 クロック 10 スタックのトップにあるデータが HL に転送されます L (SP) H (SP+1) (POP HL) 26. POP PSW コード F1 クロック 10 スタックのトップにあるデータが A 及び F に転送されます F (SP) A (SP+1) (POP AF) [4] 交換命令 ( この命令群もフラグに影響を与えません ) 27. XCHG コード EB クロック 4 ペアレジスタ DE と HL の内容を交換します (EX DE,HL) 3

28. XTHL コード E3 クロック 19(18) スタックのトップにあるデータ (2 バイト ) とペアレジスタ HL の内容を交換します L と (SP) H と (SP+1) の内容を交換します (EX (SP),HL ) 以上の命令はフラグに影響を与えませんが 以下の命令の多くはフラグに影響を与えます [8080 のフラグ ] C キャリーフラグ 計算の結果 上位桁へのキャリー ( ボロー ) が発生したときにセットされる ローティト命令でもセット リセットされる Z ゼロフラグ 計算結果がゼロのときセット P パリティフラグ 1バイト内の1になっているビット数が偶数でセット 奇数でリセットされる S サインフラグ 計算結果がマイナスのときセット (8ビット目が1の数がマイナスになる FF~80がマイナス 00~7Fがプラス ) H ハーフキャリーフラグ (CY4) 算術演算のビット3とビット4との間のキャリー ボローの有無によってSET RESETさ れる フラグレジスタFにおける各フラグの位置 (8080) ビット位置 7 6 5 4 3 2 1 0 フラグ S Z x H x P x C は使用されない [Z80のフラグ] C キャリーフラグ 計算結果のオーバーフローでセットされ ローティト命令でもセット リセットされる Z ゼロフラグ 計算結果がゼロのときセット P/V パリティ / オーバーフローフラグ (8080:P) 1バイト内の1になっているビット数が偶数でセット 奇数でリセット また算術演算の結 果オーバーフローでセット S サインフラグ 計算結果がマイナスのときセット (8ビット目が1の数がマイナスになる FF~80がマイナス 00~7Fがプラス ) N 加減算フラグ ADD 命令のとき0 SUB 命令のとき1(DAA 命令に使用される ) H ハーフキャリーフラグ (8080:CY4 ) 算術演算のビット3とビット4との間のキャリー ボローの有無によってSET RESETさ れる フラグレジスタFにおける各フラグの位置 (Z80) 7 6 5 4 3 2 1 0 S Z H P/V N C は使用されない なお 以下の説明では影響を受けるフラグのみ表記します 書いてないフラグは影響を受けないことを意味します [5] 8 ビット算術 論理演算命令 このグループの命令は INC,DCR 命令を除いてすべてアキュムレータ (A レジスタ ) との間で演算されます また すべてフラグに影響を与えます 29. ADD コード ( 表 9) クロック 4 ( フラグについて ) 計算の結果 上位桁へのキャリーが発生したとき C=1 発生しないときは C=0 になります 計算の結果 ビット 3 からビット 4 へのキャリーが発生したとき H=1 発生しないときは H=0 になります 結果がゼロのとき Z=1 ゼロではないときは Z=0 になります 結果が負数のとき (80~FF のとき )S=1 正数のときは S=0 になります (ADD A,) 8080 では計算の結果 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります Z80 では N=0 になります また 結果がオーバーフローしたとき P/V=1 その他のときは P/V=0 になります 4

30.ADI n コード C6 クロック 7 A と n とを加算し 結果を A に入れます フラグについては 29.ADD A, と同じです (ADD A,n) ( 表 9) B 80 C 81 D 82 E 83 H 84 L 85 A 87 ( 表 10) B 88 C 89 D 8A E 8B H 8C L 8D A 8F 31.ADD M コード 86 クロック 7 A と HL で示されるメモリの内容とを加算し 結果を A に入れます フラグについては 29.ADD A, と同じです (ADD A,(HL) ) 32. ADC コード ( 表 10) クロック 4 A とレジスタ とさらにキャリーフラグ C とを加算し結果を A に入れます フラグについては 29.ADD A, と同じです (ADC A,) 33.ACI n コード CE クロック 7 A と n とキャリー C とを加算し A に入れます フラグについては 29.ADD A, と同じです (ADC A,n) 34.ADC M コード 8E クロック 7 A と HL で示されるメモリの内容とキャリー C とを加算し A に入れます フラグについては 29.ADD A, と同じです (ADC A,(HL) ) 35. SUB コード ( 表 11) クロック 4 A から を引いて結果を A に入れます (SUB ) ( フラグについて ) 計算の結果 上位桁へのボローが発生したとき C=1 発生しないときは C=0 になります 計算の結果 ビット 3 からビット 4 へのボローが発生したとき H=1 発生しないときは H=0 になります 結果がゼロのとき Z=1 ゼロではないときは Z=0 になります 結果が負数のとき (80~FF のとき )S=1 正数のときは S=0 になります 8080 では計算の結果 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります Z80 では N=1 になります また 結果がオーバーフローしたとき P/V=1 その他のときは P/V=0 になります ( 表 11) B 90 C 91 D 92 E 93 H 94 L 95 A 97 ( 表 12) B 98 C 99 D 9A E 9B H 9C L 9D A 9F 36. SUI n コード D6 クロック 7 A から n を引いて結果を A に入れます フラグは 35.SUB と同じです (SUB n) 37. SUB M コード 96 クロック 7 A から HL で示されるメモリの内容を引いて結果を A に入れます フラグは 35.SUB と同じです (SUB (HL) ) 38.SBB コード ( 表 12) クロック 4 A から を引き さらにキャリー C を引いて結果を A に入れます フラグは 35.SUB と同じです (SBC A,) 5

39.SBI n コード DE クロック 7 A から n を引き さらにキャリー C を引いて結果を A に入れます フラグは 35.SUB と同じです (SBC A,n) 40.SBB M コード 9E クロック 7 A から HL で示されるメモリの内容を引き さらにキャリー C を引いて結果を A に入れます フラグは 35.SUB と同じです (SBC A,(HL) ) 41.ANA コード ( 表 13) クロック 4 A とレジスタ との論理積 (AND) をとって結果を A に入れます (AND ) ( フラグについて ) 結果がゼロのとき Z=1 ゼロではないときは Z=0 になります 結果が負数のとき (80~FF のとき )S=1 正数のときは S=0 になります 結果のうち 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります C( キャリー ) フラグがクリアされることに注意してください 8080 では H=0 になりますが Z80 では N=0 H=1 になります ( 表 13) B C D E H L A A0 A1 A2 A3 A4 A5 A7 ( 表 14) B C D E H L A B0 B1 B2 B3 B4 B5 B7 42.ANI n コード E6 クロック 7 A と n との AND をとって結果を A に入れます フラグは 41.ANA と同じです (AND n) 43.ANA M コード A6 クロック 7 A と HL で示されるメモリの内容との AND をとって結果を A に入れます フラグは 41.ANA と同じです (AND (H L) ) 44. ORA コード ( 表 14) クロック 4 A と との論理和 (OR) をとって結果を A に入れます フラグは Z80 で H=0 になることを除いて 41.ANA と同じです (OR ) 45. ORI n コード F6 クロック 7 A と n との OR をとって結果を A に入れます フラグは 44. ORA と同じです (OR n) 46. ORA M コード B6 クロック 7 A と HL で示されるメモリの内容との OR をとって結果を A に入れます フラグは 44. ORA と同じです (OR (H L) ) 47. XRA コード ( 表 15) クロック 4 A と との排他的論理和 (Exclusive OR) をとって結果を A に入れます フラグは 44.ORA と同じです (XOR ) ( 表 15) B C D E H L A A8 A9 AA AB AC AD AF ( 表 16) B C D E H L A B8 B9 BA BB BC BD BF 6

48. XRI n コード EE クロック 7 A と n との排他的論理和をとって結果を A に入れます フラグは 44. ORA と同じです (XOR n) 49.XRA M コード AE クロック 7 A と HL で示されるメモリの内容との排他的論理和をとって結果を A に入れます フラグは 44. ORA と同じです (X OR (HL) ) 50. CMP コード ( 表 16) クロック 4 A と とを比較します 具体的には A- を計算しその結果をフラグによって示します しかし SUB 命令とは異なり A の内容は変化しません A- でボローが生じた時 C=1 また A= のとき Z=1 A- がマイナスの時 S=1 A- の結果 ビット 3 からビット 4 へのボローがあれば H=1 になります (CP ) 8080 では計算の結果 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります Z80 では N=1 になります また 結果がオーバーフローしたとき P/V=1 その他のときは P/V=0 になります 51. CPI n コード FE クロック 7 A と n とを比較します フラグは 50.CP と同じです (CP n) 52. CMP M コード BE クロック 7 A と HL で示されるメモリの内容とを比較します フラグは 50.CP と同じです (CP (HL) ) 53. INR コード ( 表 17) クロック 4(5) レジスタ の内容を +1 します 以下の INR,DCR 命令ではキャリー C のみ変化しません 注意して下さい ビット 3 からビット 4 へのキャリーが発生したとき H=1 発生しないときは H=0 になります 結果がゼロのとき Z=1 ゼロではないときは Z=0 になります 結果が負数のとき (80~FF のとき )S=1 正数のときは S=0 になります (INC ) 8080 では計算の結果 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります Z80 では N=0 になります この命令の実行後 結果が 80H ならば ( つまり実行前の値が 7FH ならば )P/V=1 になります その他のときは P/V=0 になります ( 表 17) B 04 C 0C D 14 E 1C H 24 L 2C A 3C ( 表 18) B 05 C 0D D 15 E 1D H 25 L 2D A 3D 54. INR M コード 34 クロック 11(10) HL で示されるメモリの内容を +1 します フラグは 53..INR と同じです (INC (HL) ) 55. DCR コード ( 表 18) クロック 4(5) の内容を -1 します DCR 命令ではキャリー C は変化しません 注意して下さい ビット 3 からビット 4 へのボローが発生したとき H=1 発生しないときは H=0 になります 結果がゼロのとき Z=1 ゼロではないときは Z=0 になります 結果が負数のとき (80~FF のとき )S=1 正数のときは S=0 になります (DEC ) 8080 では計算の結果 1 のビットが偶数個あれば P=1 奇数個なら P=0 になります Z80 では N=1 になります この命令の実行後 結果が 7FH( つまり実行前の値が 80H) ならば P/V=1 になります その他のときは P/V=0 になります 56. DCR M コード 35 クロック 11(10) HL で示されるメモリの内容を -1 します フラグは 55.DCR と同じです (DEC (HL) ) [6] その他の算術演算 CPU 制御命令 7

57. DAA コード 27 クロック 4 加算後の A レジスタの内容を BCD 表示 2 桁に直します 動作はかなり複雑ですが 8 ビットの数を BCD2 桁とみなして加減算した後この命令を行うことによって 結果も BCD2 桁で得られるものです したがって 加算を行う前の数値が B CD 表現で誤っている場合 ( 例えば AB とか 7D) は DAA 命令によっても正しい結果は得られません Z80 は減算後の D AA にも対応していますが 8080 は加算のみで減算には対応していません 加算には ADD ADC のほか INC 命令も含まれます 結果が 0 のとき Z=1 マイナスの時 S=1 また 結果のビットが 1 であるものが偶数個あるとき P=1 またさらに上位桁へのキャリー ボローが出た場合は C=1 になります (DAA) 58. CMA コード 2F クロック 4 A の内容の 1 0 を反転します ( 各ビット毎 1 0 0 1 にする ) 8080 ではフラグは変化しませんが Z80 では N=1 H=1 になります (CPL) 59. CMC コード 3F クロック 4 キャリーフラグ C を反転します 8080 では他のフラグは変化しませんが Z80 では N=0 になり H は実行前の C の内容と同じになります (CCF) 60. STC コード 37 クロック 4 キャリーフラグ C をセットします 8080 では他のフラグは変化しませんが Z80 では N=0 H=0 になります (SCF) 61. NOP コード 00 クロック 4 何も実行しないで次の命令に進みます (No Opeation) (NOP) 62. HLT コード 76 クロック 4(7) 割込かリセットがかかるまで CPU の実行を停止します (HALT) 63. DI コード F3 クロック 4 割込を禁止します DI 命令の実行後は INT 信号が入力されても新たな割込は発生しません リセット後は割込禁止状態になります (DI) 64. EI コード FB クロック 4 EI 命令が実行されると その次の命令の実行後から割込が受け付け可能状態になります EI 命令の実行後ではなくて その次の命令の実行後から 割込みの受け付けが可能になるようにしている理由は 割込み処理プログラムの最後は通常 RET 命令で終わっているために もし EI 命令の実行後に割込みの受け付けが可能になっていると 割込み処理が終わってメインプログラムに戻るための RET 命令が実行される前に次の割込みが受け付けられてしまい 二重に割込みが実行されてしまう可能性が出てくることを避けるためです (EI) [7] 16 ビット算術演算命令 65. DAD B コード 09 クロック 11(10) HL の内容と BC の内容を加算し 結果を HL に入れます ビット 17 からのキャリーがあれば C=1 になります ビット 11 からのキャリーがあれば H=1 になります (ADD HL,BC) Z80 では N=0 になります 66. DAD D コード 19 クロック 11(10) HL と DE とを加算し 結果を HL に入れます フラグについては 120.DAD B と同じです (ADD HL,DE) 67. DAD H コード 29 クロック 11(10) HL の内容を 2 倍にします フラグは 120.DAD B と同じです (ADD HL,HL) 68. DAD SP コード 39 クロック 11(10) HL と SP とを加算し 結果を HL に入れます フラグは 120.DAD B と同じです (ADD HL,SP) 69. INX B コード 03 クロック 6(5) BC の内容を +1 します フラグは変化しません (INC BC) 8

70. INX D コード 13 クロック 6(5) DE の内容を +1 します フラグは変化しません (INC DE) 71. INX H コード 23 クロック 6(5) HL の内容を +1 します フラグは変化しません (INC HL) 72. INX SP コード 33 クロック 6(5) SP の内容を +1 します フラグは変化しません (INC SP) 73. DCX B コード 0B クロック 6(5) BC の内容を -1 します フラグは変化しません (DEC BC) 74. DCX D コード 1B クロック 6(5) DE の内容を -1 します フラグは変化しません (DEC BC) 75. DCX H コード 2B クロック 6(5) HL の内容を -1 します フラグは変化しません (DEC HL) 76. DCX SP コード 3B クロック 6(5) SP の内容を -1 します フラグは変化しません (DEC SP) [8] 回転 シフト命令 77. RLC コード 07 クロック 4 A レジスタの内容を 1 ビット左にシフトし ビット 7 のデータをビット 0 に入れると共にキャリー C にも入れます 8080 では C 以外のフラグは変化しませんが Z80 では N=0 H=0 になります (RLCA) 78. RAL コード 17 クロック 4 キャリーを含め 9 ビットのデータを左に 1 ビット回転させます 8080 では C 以外のフラグは変化しませんが Z80 では N =0 H=0 になります (RLA) 79. RRC コード 0F クロック 4 A の内容を右に 1 ビットシフトさせると共にビット 0 のデータをキャリー C にも入れます 8080 では C 以外のフラグは変化しませんが Z80 では N=0 H=0 になります (RRCA) 80. RAR コード 1F クロック 4 キャリーを含め 9 ビットのデータを 1 ビット右に回転させます 8080 では C 以外のフラグは変化しませんが Z80 では N =0 H=0 になります (RRA) [9] ジャンプ命令このグループの命令は フラグに影響を与えません 81. JMP nn コード C3 クロック 10 16 ビットのデータ nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP nn) 9

82. JNZ nn コード C2 クロック 10 Z フラグがセットされていなければ nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP NZ,nn) 83. JZ nn コード CA クロック 10 Z フラグがセットされていたら nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP Z,nn) 84. JNC nn コード D2 クロック 10 C フラグがセットされていなければ nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP NC,nn) 85. JC nn コード DA クロック 10 C フラグがセットされていたら nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JC nn) 86. JPO nn コード E2 クロック 10 P フラグがセットされていなければ nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP PO,nn) 87. JPE nn コード EA クロック 10 P フラグがセットされていたら nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP PE,nn) 88. JP nn コード F2 クロック 10 S フラグがセットされていなければ nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP P,nn) 89. JM nn コード FA クロック 10 S フラグがセットされていたら nn で示されるアドレスにジャンプします nn については 8.LDA nn の説明を参照してください (JP M,nn) 90. PCHL コード E9 クロック 4(5) ペアレジスタ HL の内容をプログラムカウンタ PC にロードします つまり HL で示されるアドレスへジャンプします (JP (HL) ) [10] コール リターン命令このグループの命令はフラグに影響を与えません 91. CALL nn コード CD クロック 17 nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください なおこのとき この CALL 命令の次の命令のアドレスをスタックに退避します この結果 SP は 2 減じられます サブルーチンの最後にリターン命令を使うとスタックに退避されていたアドレスを PC に入れコール命令の次の命令のアドレスへ戻ります (CALL nn) 92. CNZ nn コード C4 クロック 17(Z=0) または 10(Z=1) Z フラグがセットされていなければ nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL NZ,nn) 93. CZ nn コード CC クロック 17(Z=1) または 10(Z=0) Z フラグがセットされていたら nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL Z,nn) 94. CNC nn コード D4 クロック 17(C=0) または 10(C=1) C フラグがセットされていなければ nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL NC,nn) 10

95. CC nn コード DC クロック 17(C=1) または 10(C=0) C フラグがセットされていたら nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL C,nn) 96. CPO nn コード E4 クロック 17(P=0) または 10(P=1) P フラグがセットされていなければ nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL PO,nn) 97. CPE nn コード EC クロック 17(P=1) または 10(P=0) P フラグがセットされていたら nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALLPE,nn) 98. CP nn コード F4 クロック 17(S=0) または 10(S=1) S フラグがセットされていなければ nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL P,nn) 99. CM nn コード FC クロック 17(S=0) または 10(S=1) S フラグがセットされていたら nn で示されるアドレスからはじまるサブルーチンをコールします nn については 8.LDA nn の説明を参照してください (CALL M,nn) 100. RET コード C9 クロック 10 スタックのトップに退避されていたアドレスデータを PC に入れ そのアドレスにリターンします この結果 SP は +2 されます (RET) 101. RNZ コード C0 クロック 11(Z=0) または 5(Z=1) Z フラグがセットされていなければリターンします (RET NZ) 102. RZ コード C8 クロック 11(Z=1) または 5(Z=0) Z フラグがセットされていたらリターンします (RET Z) 103. RNC コード D0 クロック 11(C=0) または 5(C=1) C フラグがセットされていなければリターンします (RET NC) 104. RC コード D8 クロック 11(C=1) または 5(C=0) C フラグがセットされていたらリターンします (RET C) 105. RPO コード E0 クロック 11(P=0) または 5(P=1) P フラグがセットされていなければリターンします (RET PO) 106. RPE コード E8 クロック 11(P=1) または 5(P=0) P フラグがセットされていたらリターンします (RET PE) 107. RP コード F0 クロック 11(S=0) または 5(S=1) S フラグがセットされていなければリターンします (RET P) 108. RM コード F8 クロック 11(S=1) または 5(S=0) S フラグがセットされていたらリターンします (RET M) 109. RST n(n=0~7) コード ( 下表 ) クロック 11 1 バイトで実行できるコール命令です ただしコールできるアドレスは下表の 8 種に固定されています 例えば RST 3( コード DF) は CALL $0018( コード CD1800) と同じ動作になります (RST n) ニーモニック コード アドレス RST 0 C7 0000 RST 1 CF 0008 RST 2 D7 0010 RST 3 DF 0018 RST 4 E7 0020 11

RST 5 EF 0028 RST 6 F7 0030 RST 7 FF 0038 [11] 入出力命令 110. IN n コード DB クロック 11(10) n で指定されるアドレスの I/O デバイスからデータをアキュムレータ A に入力します フラグは変化しません (IN A, (n) ) 111. OUT n コード D3 クロック 11(10) n で指定されるアドレスの I/O デバイスに A レジスタのデータを出力します フラグは変化しません (OUT (n),a ) 12