ND80ZⅢ応用プログラムq

Similar documents
目次 [ はじめに ] 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

                 ZB11W取扱説明書

<5A2D38308A E9197BF2E786C73>

1 8 Z80 Z GBA ASIC 2 WINDOWS C 1

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

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

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

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

Microsoft Word - マイコン実験 doc

PowerPoint プレゼンテーション

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

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

TLCS-870/C1シリーズ CPU

NAND FF,,

CP-X4021NJ,WX4021NJ_.indd

, ,279 w

6.1号4c-03

スライド 1

MS-1J/MS-1WJ(形名:MS-1/MS-1W)取扱説明書 - 詳細- 技術情報編

補足情報

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

スライド 1

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

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

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

計算機アーキテクチャ

取扱説明書<詳細版>


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

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

スライド 1

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

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

スライド 1

007 0 ue ue b 6666 D

( )

スライド 1

Microsoft PowerPoint ppt

出 アーキテクチャ 誰が 出 装置を制御するのか 1

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

Microsoft PowerPoint - 11Web.pptx

しんきんの現況H30.PS

学習の手順

HyRAL®FPGA設計仕様書

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

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

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

PowerPoint プレゼンテーション

‚å™J‚å−w“LŁñfi~P01†`08

ex05_2012.pptx

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - ProcML-12-3.ppt

JavaプログラミングⅠ

熊本県数学問題正解

スライド 1

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

12~

Microsoft PowerPoint ppt

取扱説明書<詳細版>

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

Microsoft Word - HW06K doc

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

あさひ indd

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

untitled

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

main.dvi

Microsoft PowerPoint - 7.Arithmetic.ppt

‚å™J‚å−w“LŁñ›Ä

ex04_2012.ppt

CASL入門

SIRIUS_CS3*.indd

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

2

linearal1.dvi


COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1


PowerPoint Presentation

1 ( ) 2 D-A D-A KUE-CHIP2 KUE-CHIP2 KUE-CHIPP2 KUE-CHIP (1) 2.2 D-A KUE-CHIP2 2.1 KUE-CHIP D-A

高校生の就職への数学II

FMV活用ガイド

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

() () () () () 175 () Tel Fax

29

IMO 1 n, 21n n (x + 2x 1) + (x 2x 1) = A, x, (a) A = 2, (b) A = 1, (c) A = 2?, 3 a, b, c cos x a cos 2 x + b cos x + c = 0 cos 2x a

1 はじめに このアプリケーションは 計算機ハードウェア論 のアセンブリ言語 ( 超簡単命令セット ) の理解を助けるために製作されました 便宜的に機能を追加 削除した箇所があるため このアプリケーション上での動き方が実際のCPUでの動き方と異なる場合があることに留意してください このアプリケーショ

国試過去問集.PDF

FCシリンダ

スライド 1

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

欧州特許庁米国特許商標庁との共通特許分類 CPC (Cooperative Patent Classification) 日本パテントデータサービス ( 株 ) 国際部 2019 年 1 月 17 日 CPC 版のプレ リリースが公開されました 原文及び詳細はCPCホームページの C

ポインタ変数

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

PSCHG000.PS

Transcription:

Z80 命令説明書 ( 有 ) 中日電工

目次 [ はじめに ] 1 Ⅰ. レジスタについて 1 Ⅱ. 8 ビット転送命令 1 1.LD, 1 2.LD,(HL) 1 3.LD (HL), 1 4.LD,n 1 5.LD (HL),n 1 6.LD A,(BC) 2 7.LD A,(DE) 2 8.LD A,(nn) 2 9.LD (BC),A 2 10. LD (DE),A 2 11. LD (nn),a 2 12. LD,(IX+d) 2 13. LD,(IY+d) 2 14. LD (IX+d), 2 15. LD (IY+d), 2 16. LD (IX+d),n 2 17. LD (IY+d),n 2 Ⅲ. 16 ビット転送命令 2 18. LD BC,nn 2 19. LD DE,nn 3 20. LD HL,nn 3 21. LD SP,nn 3 22. LD IX,nn 3 23. LD IY,nn 3 24. LD HL,(nn) 3 25. LD BC,(nn) 3 26. LD DE,(nn) 3 27. LD SP,(nn) 3 28. LD IX,(nn) 3 29. LD IY,(nn) 3 30. LD (nn),hl 3 31. LD (nn),bc 3 32. LD (nn),de 3 33. LD (nn),sp 3 34. LD (nn),ix 3 35. LD (nn),iy 3 36. LD SP, HL 3 37. LD SP,IX 4 38. LD SP,IY 4 39. PUSH BC 4 40. PUSH DE 4 41. PUSH HL 4 42. PUSH AF 4 43. PUSH IX 4 44. PUSH IY 4 45. POP BC 4 46.POP DE 4 47. POP HL 4 48. POP AF 4 49. POP IX 4 50. POP IY 4 Ⅳ. 交換 ブロック転送 検索命令 4 51. EX DE,HL 4 52. EX AF,AF 4 53. EXX 4 5 4. E X ( S P ), H L 4 55. EX (SP),IX 5 56. EX (SP),IY 5 フラグについての説明 5 57. LDI 5 58. LDIR 5 59. LDD 5 60. LDDR 5 61. CPI 5 62. CPIR 5 63. CPD 6 64. CPDR 6 Ⅴ. 8 ビット算術 論理演算命令 6 65. ADD A, 6 66. ADD A,n 6 67. ADD A,(HL) 6 68. ADD A,(IX+d) 6 69. ADD A,(IY+d) 6 70. ADC A, 6 71. ADC A,n 6 72. ADC A,(HL) 6 73. ADC A,(IX+d) 6 74. ADC A,(IY+d) 6 75. SUB 6 76. SUB n 6 77. SUB (HL) 6 78. SUB (IX+d) 7 79. SUB (IY+d) 7 80. SBC A, 7 81. SBC A,n 7 82. SBC A,(HL) 7 83. SBC A,(IX+d) 7 84. SBC A,(IY+d) 7 85. AND 7 86. AND n 7 87. AND (HL) 7 88. AND (IX+d) 7 89. AND (IY+d) 7 90. OR 7 91. OR n 8 92. OR (HL) 8 93. OR (IX+d) 8 94. OR (IY+d) 8 95. XOR 8 96. XOR n 8 97. XOR (HL) 8 98. XOR (IX+d) 8 99. XOR (IY+d) 8 100. CP 8 101. CP n 8 102. CP (HL) 8 103. CP (IX+d) 8 104. CP (IY+d) 8 105. INC 8 106. INC (HL) 9 107. INC (IX+d) 9 2

108. INC (IY+d) 9 109. DEC 9 110. DEC (HL) 9 111. DEC (IX+d) 9 112. DEC (IY+d) 9 Ⅵ. その他の算術演算 CPU 制御命令 9 113. DAA 9 114. CPL 9 115. NEG 9 116. CCF 9 117. SCF 9 118. NOP 9 119. HALT 10 Ⅶ. 16 ビット算術演算命令 10 120. ADD HL,BC 10 121. ADD HL,DE 10 122. ADD HL,HL 10 123. ADD HL,SP 10 124. ADC HL,BC 10 125. ADC HL,DE 10 126. ADC HL,HL 10 127. ADC HL,SP 10 128. SBC HL,BC 10 129. SBC HL,DE 10 130. SBC HL,HL 10 131. SBC HL,SP 10 132. ADD IX,BC 10 133. ADD IX,DE 10 134. ADD IX,IX 10 135. ADD IX,SP 10 136. ADD IY,BC 10 137. ADD IY,DE 11 138. ADD IY,IY 11 139. ADD IY,SP 11 140. INC BC 11 141. INC DE 11 142. INC HL 11 143. INC SP 11 144. INC IX 11 145. INC IY 11 146. DEC BC 11 147. DEC DE 11 148. DEC HL 11 149. DEC SP 11 150. DEC IX 11 151. DEC IY 11 Ⅷ. 回転 シフト命令 11 152. RLCA 11 153. RLA 11 154. RRCA 12 155. RRA 12 156. RLC 12 157. RLC (HL) 12 158. RLC (IX+d) 12 159. RLC (IY+d) 12 160. RL 12 161. RL (HL) 12 162. RL (IX+d) 12 163 RL (IY+d) 12 164. RRC 12 165. RRC (HL) 12 166. RRC (IX+d) 12 167. RRC (IY+d) 12 168. RR 12 169. RR (HL) 12 170. RR (IX+d) 12 171. RR (IY+d) 12 172. SLA 13 173.SLA (HL) 13 174. SLA (IX+d) 13 175.SLA (IY+d) 13 176. SRA 13 177. SRA (HL) 13 178. SRA (IX+d) 13 179. SRA (IY+d) 13 180. SRL 13 181. SRL (HL) 13 182. SRL (IX+d) 13 183. SRL (IY+d) 13 184. RLD 13 185. RRD 13 Ⅸ. ビットセット リセット テスト命令 14 186. BIT b, 14 187.BIT b,(hl) 14 188.BIT b,(ix+d) 14 189.BIT b,(iy+d) 14 190.SET b, 14 191.SET b,(hl) 14 192. SET b,(ix+d) 14 193.SET b,(iy+d) 15 194. RES b, 15 195.RES b,(hl) 15 196. RES b,(ix+d) 15 197. RES b,(iy+d) 15 Ⅹ. ジャンプ命令 15 198. JP nn 15 199. JP NZ,nn 15 200. JP Z,nn 15 201. JP NC,nn 15 202. JP C,nn 15 203. JP PO,nn 15 204. JP PE,nn 15 205. JP P,nn 16 206. JP M,nn 16 207. JR e 16 208. JR C,e 16 209. JR NC,e 16 210. JR Z,e 16 211. JR NZ,e 16 212. JP (HL) 16 213. JP (IX) 16 214. JP (IY) 16 215. DJNZ e 16 ⅩⅠ. コール リターン命令 16 216. CALL nn 16 217. CALL NZ,nn 16 218. CALL Z,nn 17 3

219. CALL NC,nn 17 220. CALL C,nn 17 221. CALL PO,nn 17 222. CALL PE,nn 17 223. CALL P,nn 17 224. CALL M,nn 17 225. RET 17 226. RET NZ 17 227. RET Z 17 228. RET NC 17 229. RET C 17 230. RET PO 17 231. RET PE 17 232. RET P 17 233. RET M 17 234. RETI 17 235. RETN 17 236. RST n 17 ⅩⅡ. 入出力命令 18 237. IN A,(n) 18 238. IN,(C) 18 239. INI 18 240. INIR 18 241. IND 18 242. INDR 18 243. OUT (n),a 18 244.OUT (C), 18 245. OUTI 18 246. OTIR 18 247. OUTD 18 248. OTDR 18 ⅩⅢ. 割込制御 249. DI 19 250. EI 19 251. IM 0 19 252. IM 1 19 253. IM 2 19 463 0067 名古屋市守山区守山 2-8-14 パレス守山 305 有限会社中日電工 052 791 6254 Fax052 791 1391 E mail thisida@alles.o.jp 2010.3.20 Rev. 1.0 4

Z80 命令説明書 [ はじめに ] Z80 はザイログ社が開発した 8 ビット CPU で 8080( インテル社 ) の命令の全てを含み さらにその上全く新しい多くの命令を実行することができます 8080 の命令については全く同じ命令コードで 8080 と同じ動作をしますが Z80 と 8080 はメーカーが異なるため同じ命令コードであってもニーモニックは異なっています 例 ) コード 7E のときザイログ社は LD A,(HL) インテル社は MOV A,M と表記します この説明書では Z80 ニーモニック ( ザイログニーモニック ) に従って説明してありますが 同時に 8080 ニーモニック ( インテルニーモニック ) も併記してあります 説明の後ろに ( ) で記してあるのがインテルニーモニックです インテルニーモニックが記してない命令は 8080 には無くて新たに Z80 で追加された命令です Ⅰ. レジスタについて 8 ビットレジスタ B C D E H L A F 16 ビットレジスタ SP PC については 8080 と全く同じです Z80 にはこの他に裏レジスタとして B C D E H L A F があり EX 命令で交互に使用することができますが 初心者が使用すると混乱しますので慣れるまでは使わない方が良いでしょう この他にインデックスレジスタ IX IY(16 ビット ) があります これによって相対アドレッシングが可能になっています この他 I レジスタと R レジスタがありますが普通の処理では使いません Ⅱ. 8 ビット転送命令 [ 注 ] 以下の説明中 クロックというのはその命令を実行するのに必要なサイクル数のことで CPU クロックが 6MHz のとき 1 クロックは 1/6μS(0.167μS) になります したがってたとえばクロック =7 の命令の実行時間は 0.167 7=1.134μS になります 1. LD, コード ( 表 1) クロック 4 は B C D E H L A を表します の内容を に転送します の内容は変化しません (MOV 1,2) 2. LD,(HL) コード ( 表 2) クロック 7 (HL) は HL レジスタで示されるメモリを表します (HL) の内容を に転送します (HL) の内容は変化しません (MOV,M) ( 表 1) ( 表 2) ( 表 3) B C D E H L A B 40 41 42 43 44 45 47 B 46 B 70 C 48 49 4A 4B 4C 4D 4F C 4E C 71 D 50 51 52 53 54 55 57 D 56 D 72 E 58 59 5A 5B 5C 5D 5F E 5E E 73 H 60 61 62 63 64 65 67 H 66 H 74 L 68 69 6A 6B 6C 6D 6F L 6E L 75 A 78 79 7A 7B 7C 7D 7F A 7E A 77 3. LD (HL), コード ( 表 3) クロック 7 の内容を (HL) に転送します の内容は変化しません (MOV M,) 4. LD,n コード ( 表 4) クロック 7 n はこの命令コードの次のアドレスに書かれたデータを示します 8 ビットデータ n を に転送します (MVI,n) 5. LD (HL),n コード 36 クロック10 nを (HL) に転送します ( は任意の8ビットデータを表します ) (MVI M,n) ( 表 4) ( 表 5) ( 表 6) B 06 B DD46 B FD46 C 0E C DD4E C FD4E D 16 D DD56 D FD56 E 1E E DD5E E FD5E H 26 H DD66 H FD66 L 2E L DD6E L FD6E A 3E A DD7E A FD7E 表 5 表 6の はインデックスレジスタに対する増分 dを示します 1

6. LD A,(BC) コード 0A クロック 7 (BC) は BC レジスタで示されるメモリを表します (BC) の内容を A に転送します (BC) の内容は変化しません (LDAX B) 7. LD A,(DE) コード 1A クロック 7 (DE) は DE レジスタで示されるメモリを表します (DE) の内容を A に転送します (DE) の内容は変化しません (LDAX D) 8. LD A,(nn) コード 3A クロック 13 (nn) は命令コード 3A に続く 2 バイトデータで示されるアドレスのメモリを表します (nn) の内容を A に転送します (nn) の内容は変化しません (LDA nn) この命令のように 2 バイトのデータを扱う場合には先に来るほうが下位アドレスであとに上位アドレスがきます たとえば 1234 番地の内容を転送する場合のコードは 3A3412 になります 9. LD (BC),A コード 02 クロック 7 A の内容を (BC) に転送します A の内容は変化しません (STAX B) 10. LD (DE),A コード 12 クロック 7 A の内容を (DE) に転送します A の内容は変化しません (STAX D) 11. LD (nn),a コード 32 クロック 13 A の内容を (nn) に転送します A の内容は変化しません (STAX nn) nn の実際の表記については 8.LD A,(nn) の説明を参照してください 12. LD,(IX+d) コード ( 表 5) クロック 19 (IX+d) の内容を に転送します (IX+d) はインデックスレジスタ IX で示されるアドレスに +d したアドレスのメモリを示します d は + 方向に 00~7F - 方向に FF~80 までの数が許されます FF は +FF(10 進の 255 ではなくて符号付数で -1 を意味します 00 ~7F は IX で示すアドレス値にそのまま加算されて真のアドレスを示しますが FF~80 は IX で示すアドレス値に対して FFFF~FF80 の加算が行われます 実際には 1~80 が IX の値から減算されてそれが真のアドレスになります (IX+d) の内容は変化しません 13. LD,(IY+d) コード ( 表 6) クロック 19 IX のかわりに IY を使うだけで動作は 12. と同じです 14. LD (IX+d), コード ( 表 7) クロック 19 12.LD,(IX+d) とは逆に (IX+d) に の内容を入れます 15. LD (IY+d), コード ( 表 8) クロック19 13.LD,(IY+d) とは逆に (IY+d) にの内容を入れます ( 表 7) ( 表 8) B DD70 B FD70 C DD71 C FD71 D DD72 D FD72 E DD73 E FD73 H DD74 H FD74 L DD75 L FD75 A DD77 A FD77 表 7 表 8の はインデックスレジスタに対する増分 dを示します 16. LD (IX+d),n コード DD36 クロック 19 (IX+d) にデータ n を転送します ( はインデックスレジスタの増分 d, は 8 ビットのデータ n を示します ) 17. LD (IY+d),n コード FD36 クロック 19 (IY+d) にデータ n を転送します ( はインデックスレジスタの増分 d, は 8 ビットのデータ n を示します ) 以上の他に LD A,I LD A,R LD I,A LD R,A の 4 命令がありますが一般には使いません ここでは説明を省略します Ⅲ.16 ビット転送命令 ( この命令群もフラグに影響を与えません ) 18. LD BC,nn コード 01 クロック 10 16 ビットのデータ nn をペアレジスタ BC に転送します 2

nn の実際の表記については 8.LD A,(nn) の説明を参照してください (LXI B,nn ) 19. LD DE,nn コード 11 クロック 10 nn を DE に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください (LXI D,nn ) 20. LD HL,nn コード 21 クロック 10 nn を HL に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください (LXI H,nn ) 21. LD SP,nn コード 31 クロック 10 nn を SP に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください (LXI SP,nn ) 22. LD IX,nn コード DD21 クロック 14 nn を IX に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 23. LD IY,nn コード FD21 クロック 14 nn を IY に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 24. LD HL,(nn) コード 2A クロック 16 2 バイトのデータ nn によって示されるアドレスのメモリ内容を L に nn+1 番地のメモリ内容を H に転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください (LHLD nn ) 25. LD BC,(nn) コード ED4B クロック 20 (nn) を C へ (nn+1) を B へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 26. LD DE,(nn) コード ED5B クロック 20 (nn) を E へ (nn+1) を D へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 27. LD SP,(nn) コード ED7B クロック 20 (nn) (nn+1) を SP へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 28. LD IX,(nn) コード DD2A クロック 20 (nn) (nn+1) を IX へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 29. LD IY,(nn) コード FD2A クロック 20 (nn) (nn+1) を IY へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 30. LD (nn),hl コード 22 クロック 16 L の内容を (nn) へ H の内容を (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください (SHLD nn) 31. LD (nn),bc コード ED43 クロック 20 C の内容を (nn) へ B の内容を (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 32. LD (nn),de コード ED53 クロック 20 E の内容を (nn) へ D の内容を (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 33. LD (nn),sp コード ED73 クロック 20 SP の内容を (nn) (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 34. LD (nn),ix コード DD22 クロック 20 IX の内容を (nn) (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 35. LD (nn),iy コード FD22 クロック 20 IY の内容を (nn) (nn+1) へ転送します nn の実際の表記については 8.LD A,(nn) の説明を参照してください 36. LD SP,HL コード F9 クロック 6 HL の内容を SP に転送します (SPHL) 3

37. LD SP,IX コード DDF9 クロック 10 IX の内容を SP に転送します 38. LD SP,IY コード FDF9 クロック 10 IY の内容を SP に転送します 39. PUSH BC コード C5 クロック 11 ペアレジスタ BC の内容を SP で示されるプッシュダウンスタックへ転送します (SP-1) B,(SP-2) C (PUSH B) 40. PUSH DE コード D5 クロック 11 DE の内容をスタックに転送します (SP-1) D,(SP-2) E (PUSH D) 41. PUSH HL コード E5 クロック 11 HL の内容をスタックに転送します (SP-1) H,(SP-2) L (PUSH H) 42. PUSH AF コード F5 クロック 11 アキュムレータ A とフラグレジスタ F の内容をスタックに転送します (SP-1) A,(SP-2) F (PUSH PSW) 43. PUSH IX コード DDE5 クロック 15 IX の内容をスタックに転送します 44. PUSH IY コード FDE5 クロック 15 IY の内容をスタックに転送します 45. POP BC コード C1 クロック 10 スタックのトップにあるデータが BC に転送されます C (SP) B (SP+1) (POP B) 46. POP DE コード D1 クロック 10 スタックのトップにあるデータが DE に転送されます E (SP) D (SP+1) (POP D) 47. POP HL コード E1 クロック 10 スタックのトップにあるデータが HL に転送されます L (SP) H (SP+1) (POP H) 48. POP AF コード F1 クロック 10 スタックのトップにあるデータが A 及び F に転送されます F (SP) A (SP+1) (POP PSW) 49. POP IX コード DDE1 クロック 14 スタックのトップにあるデータが IX に転送されます 50. POP IY コード FDE1 クロック 14 スタックのトップにあるデータが IY に転送されます Ⅳ. 交換 ブロック転送 検索命令 51. EX DE,HL コード EB クロック 4 ペアレジスタ DE と HL の内容を交換します (XCHG) 52. EX AF,AF コード 08 クロック 4 A 及び F とこれに対応する裏レジスタ A F とを交換します なお プログラム実行のうえで 表レジスタ と 裏レジスタ とは全く同等で区別して認識することはできません したがって不用意にこの命令を用いると混乱を招きます この点については次の EXX 命令も同じです しかし スタックを使わないでレジスタの退避に用いることが出来るので使い方によっては便利な命令です その意味では次の EXX 命令は BC,DE,HL の 3 つのペアレジスタを一度に交換できるため更にメリットが大きくなります 53. EXX コード D9 クロック 4 ペアレジスタ BC と BC DE と DE HL と HL とを交換します (52.EX AF,AF 参照 ) 54. EX (SP),HL コード E3 クロック 19 スタックのトップにあるデータ (2 バイト ) とペアレジスタ HL の内容を交換します L と (SP) H と (SP+1) の内容を交換します (XT 4

HL) 55. EX (SP),IX コード DDE3 クロック 23 スタックのトップにあるデータ (2 バイト ) と IX との内容を交換します 56. EX (SP),IY コード FDE3 クロック 23 スタックのトップあるデータ (2 バイト ) と IY との内容を交換します [ フラグについて ] 以上の命令はフラグに影響を与えませんが 以下の命令はそれぞれフラグに影響を与えます なお フラグの記号が 8080 の表現と一部異なっています 念のため以下に整理しておきます 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 における各フラグの位置 7 6 5 4 3 2 1 0 S Z H P/V N C は使用されない なお 以下の説明では影響を受けるフラグのみ表記します 書いてないフラグは影響を受けないことを意味します 57. LDI コード EDA0 クロック 16 HL レジスタで示されるメモリアドレスの内容を DE レジスタで示されるメモリアドレスへ転送したうえで HL DE を +1 します また同時に BC の内容を -1 します つまり (DE) (HL) HL HL+1 DE DE+1 BC BC-1 この命令の実行によって BC=0 になると P/V=0 それ以外では P/V=1 になります また N H はつねに 0 になります 58. LDIR コード EDB0 クロック 21(BC 0) 16(BC=0) とても便利な命令です (HL) から (DE) へデータ転送し HL と DE を +1 すると共に BC レジスタを -1 して BC=0 になるまでくり返し実行します 転送したいデータの先頭アドレスを HL に 転送先の先頭アドレスを DE に入れ 転送バイト数を BC に入れたうえでこの命令を実行させるだけでデータブロックの転送が行われます P/V=0 N=0 H=0 59. LDD コード EDA8 クロック 16 57.LDI と同様 (DE) (HL) を実行し BC BC-1 しますが HL,DE に対しては内容を -1 します BC=0 のとき P/V=0 B C 0 のとき P/V=1 N H は常に 0 になります 60. LDDR コード EDB8 クロック 21(BC 0) 16(BC=0) 58.LDIR と同様 (DE) (HL) を繰り返しますが DE HL は -1 され BC も -1 されます BC=0 になるまで繰り返し実行されます P/V=0 N=0 H=0 61. CPI コード EDA1 クロック 16 A-(HL) を計算しこの結果によって Z S H がセット又はリセットされ N=1 になります A,(HL) は変化しません また同時に HL が +1 され BC が -1 されます その結果 BC=0 ならば P/V=0 BC 0 なら P/V=1 になります 62. CPIR コード EDB1 クロック 21(BC 0) 16(BC=0) 上記と同じように A-(HL) を行いますがこの場合は BC=0 になるまで又は A-(HL)=0 つまり A=(HL) になるようなデータが見つかるまで繰り返し実行されます この命令の実行の結果 A-(HL)=0 のとき Z=1 A-(HL)<0 のとき S=1 BC 0 なら P/ V=1 また N はつねに 1 になります 計算結果によって H がセット リセットされます 5

63. CPD コード EDA9 クロック 16 HL が -1 される点を除いて他は 61.CPI と同じです 64. CPDR コード EDB9 クロック 21(BC 0) 16(BC=0) HL が -1 されていく点を除いて他は 62.CPIR と同じです Ⅴ. 8 ビット算術 論理演算命令 このグループの命令は INC,DEC 命令を除いてすべてアキュムレータ (A レジスタ ) との間で演算されます また すべてフラグに影響を与えます 65. ADD A, コード ( 表 9) クロック 4 アキュムレータ A とレジスタ とを加算し結果を A に入れます この結果 C Z S H がセット リセットされ N=0 になります また 結果がオーバーフローしたとき P/V=1 その他のときは P/V=0 になります (ADD) 66. ADD A,n コード C6 クロック7 Aとnとを加算し 結果をAに入れます フラグについては65.ADD A, と同じです (ADI n ) ( 表 9) ( 表 10) B 80 B 88 C 81 C 89 D 82 D 8A E 83 E 8B H 84 H 8C L 85 L 8D A 87 A 8F 67. ADD A,(HL) コード 86 クロック 7 A と HL を加算し 結果を A に入れます フラグについては 65.ADD A, と同じです (ADD M) 68. ADD A,(IX+d) コード DD86 クロック 19 A と (IX+d) を加算し 結果を A に入れます は増分 d です フラグについては 65.ADD A, と同じです 69. ADD A,(IY+d) コード FD86 クロック 19 A と (IY+d) を加算し 結果を A に入れます は増分 d です フラグについては 65.ADD A, と同じです 70. ADC A, コード ( 表 10) クロック 4 A とレジスタ とさらにキャリーフラグ C とを加算し結果を A に入れます フラグについては 65.ADD A, と同じです (ADC ) 71. ADC A,n コード CE クロック 7 A と n とキャリー C とを加算し A に入れます フラグについては 65.ADD A, と同じです (ACI n ) 72. ADC A,(HL) コード 8E クロック 7 A と (HL) とキャリー C とを加算し A に入れます フラグについては 65.ADDA, と同じです (ADC M) 73. ADC A,(IX+d) コード DD8E クロック 19 A と (IX+d) とキャリー C とを加算し A に入れます は増分 d です フラグについては 65.ADDA, と同じです 74. ADC A,(IY+d) コード FD8E クロック 19 A と (IY+d) とキャリー C とを加算し A に入れます フラグについては 65.ADDA, と同じです 75. SUB コード ( 表 11) クロック 4 A から を引いて結果を A に入れます フラグは N=1 になることを除いて 65.ADD A, と同じです (SUB ) 76. SUB n コード D6 クロック 7 A から n を引いて結果を A に入れます フラグは 75.SUB と同じです (SUI n ) 77. SUB (HL) コード 96 クロック 7 A から (HL) を引いて結果を A に入れます フラグは 75.SUB と同じです (SUB M) 6

( 表 11) ( 表 12) B 90 B 98 C 91 C 99 D 92 D 9A E 93 E 9B H 94 H 9C L 95 L 9D A 97 A 9F 78. SUB (IX+d) コード DD96 クロック 19 A から (IX+d) を引いて結果を A に入れます フラグは 75.SUB と同じです 79. SUB (IY+d) コード FD96 クロック 19 A から (IY+d) を引いて結果を A に入れます フラグは 75.SUB と同じです 80. SBC A, コード ( 表 12) クロック 4 A から を引き さらにキャリー C を引いて結果を A に入れます フラグは 75.SUB と同じです (SBB ) 81. SBC A,n コード DE クロック 7 A から n を引き さらにキャリー C を引いて結果を A に入れます フラグは 75.SUB と同じです (SBI n ) 82. SBC A,(HL) コード 9E クロック 7 A から (HL) を引き さらにキャリー C を引いて結果を A に入れます フラグは 75.SUB と同じです (SBB M) 83. SBC A,(IX+d) コード DD9E クロック 19 A から (IX+d) を引き さらにキャリー C を引いて結果を A に入れます フラグは 75.SUB と同じです 84. SBC A,(IY+d) コード FD9E クロック 19 A から (IY+d) を引き さらにキャリー C を引いて結果を A に入れます フラグは 75.SUB と同じです 85. AND コード ( 表 13) クロック 4 A とレジスタ との論理積 (AND) をとって結果を A に入れます フラグは C=0 N=0 H=1 になり 結果が 0 なら Z=1 また マイナスなら S=1 になり 結果のうち 1 のビットが偶数ならば P/V=1 となります (ANA ) ( 表 13) ( 表 14) B A0 B B0 C A1 C B1 D A2 D B2 E A3 E B3 H A4 H B4 L A5 L B5 A A7 A B7 86. AND n コード E6 クロック 7 A と n との AND をとって結果を A に入れます フラグは 85.AND と同じです (ANI n ) 87. AND (HL) コード A6 クロック 7 A と (HL) との AND をとって結果を A に入れます フラグは 85.AND と同じです (ANA M) 88. AND (IX+d) コード DDA6 クロック 19 A と (IX+d) との AND をとって結果を A に入れます フラグは 85.AND と同じです 89. AND (IY+d) コード FDA6 クロック 19 A と (IY+d) との AND をとって結果を A に入れます フラグは 85.AND と同じです 90. OR コード ( 表 14) クロック 4 A と との論理和 (OR) をとって結果を A に入れます フラグは H=0 になることを除いては 85.AND と同じです (ORA ) 7

91. OR n コード F6 クロック 7 A と n との OR をとって結果を A に入れます フラグは 90.OR と同じです (ORI n ) 92. OR (HL) コード B6 クロック 7 A と (HL) との OR をとって結果を A に入れます フラグは 90.OR と同じです (ORA M) 93. OR (IX+d) コード DDB6 クロック 19 A と (IX+d) との OR をとって結果を A に入れます フラグは 90.OR と同じです 94. OR (IY+d) コード FDB6 クロック 19 A と (IY+d) との OR をとって結果を A に入れます フラグは 90.OR と同じです 95. XOR コード ( 表 15) クロック 4 A と との排他的論理和 (Exclusive OR) をとって結果を A に入れます フラグは 90.OR と同じです (XRA ) ( 表 15) ( 表 16) B A8 B B8 C A9 C B9 D AA D BA E AB E BB H AC H BC L AD L BD A AF A BF 96. XOR n コード EE クロック 7 A と n との排他的論理和をとって結果を A に入れます フラグは 90.OR と同じです (XRI n ) 97. XOR (HL) コード AE クロック 7 A と (HL) との排他的論理和をとって結果を A に入れます フラグは 90.OR と同じです (XRA M) 98. XOR (IX+d) コード DDAE クロック 19 A と (IX+d) との排他的論理和をとって結果を A に入れます フラグは 90.OR と同じです 99. XOR (IY+d) コード FDAE クロック 19 A と (IY+d) との排他的論理和をとって結果を A に入れます フラグは 90.OR と同じです 100. CP コード ( 表 16) クロック 4 A と とを比較します 具体的には A- を計算しその結果をフラグによって示します しかし SUB 命令とは異なり A の内容は変化しません N=1 になります A- でボローが生じた時 C=1 また A= のとき Z=1 A- がマイナスの時 S=1 A- の結果 ビット 4 からのボローがあれば H=1 結果がオーバーフローなら P/V= 1 になります (CMP ) 101. CP n コード FE クロック 7 A と n とを比較します フラグは 100.CP と同じです (CPI n ) 102. CP (HL) コード BE クロック 7 A と (HL) とを比較します フラグは 100.CP と同じです (CMP M) 103. CP (IX+d) コード DDBE クロック 19 A と (IX+d) とを比較します フラグは 100.CP と同じです 104. CP (IY+d) コード FDBE クロック 19 A と (IY+d) とを比較します フラグは 100.CP と同じです 105. INC コード ( 表 17) クロック 4 レジスタ の内容を +1 します 以下の INC,DEC 命令ではキャリー C のみ変化しません 注意して下さい N=0 になります 結果が 0 なら Z=1 マイナスなら S=1 この命令の実行後 結果が 80H ならば ( つまり実行前の値が 7FH ならば )P/V=1 になります ビット 3 からキャリーが出れば H=1 になります (INR ) 8

( 表 17) ( 表 18) B 04 B 05 C 0C C 0D D 14 D 15 E 1C E 1D H 24 H 25 L 2C L 2D A 3C A 3D 106. INC (HL) コード 34 クロック 11 (HL) の内容を +1 します フラグは 105..INC と同じです (INR M) 107. INC (IX+d) コード DD34 クロック 23 (IX+d) の内容を +1 します フラグは 105.INC と同じです 108. INC (IY+d) コード FD34 クロック 23 (IY+d) の内容を +1 します フラグは 105.INC と同じです 109. DEC コード ( 表 18) クロック 4 の内容を -1 します フラグは N=1 になります また, 結果が 7FH( つまり実行前の値が 80H) ならば P/V=1 この他のフラグについては 105.INC と同じです (DCR ) 110. DEC (HL) コード 35 クロック 11 (HL) の内容を -1 します フラグは 109.DEC と同じです (DCR M) 111. DEC (IX+d) コード DD35 クロック 23 (IX+d) の内容を -1 します フラグは 109.DEC と同じです 112. DEC (IY+d) コード FD35 クロック 23 (IY+d) の内容を -1 します フラグは 109.DEC と同じです Ⅵ. その他の算術演算 CPU 制御命令 113. DAA コード 27 クロック 4 加減算後の A レジスタの内容を BCD 表示 2 桁に直します 動作はかなり複雑ですが 8 ビットの数を BCD2 桁とみなして加減算した後この命令を行うことによって 結果も BCD2 桁で得られるものです したがって 加減算を行う前の数値が BCD 表現で誤っている場合 ( 例えば AB とか 7D) は DAA 命令によっても正しい結果は得られません ここでいう加算とは ADD ADC INC 命令であり 減算とは SUB SBC DEC 及び NEG( 後退 ) 命令です 結果が 0 のとき Z=1 マイナスの時 S=1 また 結果のビットが 1 であるものが偶数個あるとき P/V=1 またさらに上位桁へのキャリー ボローが出た場合は C=1 になります (DAA) 114. CPL コード 2F クロック 4 A の内容の 1 0 を反転します ( 各ビット毎 1 0 0 1 にする ) フラグは N=1 H=1 他は変化しません (CMA) 115. NEG コード ED44 クロック 8 0-A を計算して A に入れます (A の符号を逆にする ) ただし 80H(-128) は変化しないので注意して下さい N=1 結果が 0 なら Z=1 マイナスなら S=1 ビット 4 からボローがあれば H=1 命令実行前の A の内容が 0 ならば C=0 また実行前の内容が 8 0H ならば P/V=1 になります 116. CCF コード 3F クロック 4 キャリーフラグ C を反転します 同時に N=0 になり H は実行前の C の内容と同じになります 他のフラグは不変です (CMC) 117. SCF コード 37 クロック 4 キャリーフラグ C をセットします N=0 H=0 になります (STC) 118. NOP コード 00 クロック 4 何も実行しないで次の命令に進みます No Opeation(NOP) 9

119. HALT コード 76 クロック 4 割込かリセットがかかるまで CPU の実行を停止します (HLT) Ⅶ. 16 ビット算術演算命令 120. ADD HL,BC コード 09 クロック 11 HL の内容と BC の内容を加算し 結果を HL に入れます N=0 になります ビット 17 からのキャリーがあれば C=1 になります ビット 11 からのキャリーがあれば H=1 になります (DAD B) 121. ADD HL,DE コード 19 クロック 11 HL と DE とを加算し 結果を HL に入れます フラグについては 120.ADD HL,BC と同じです (DAD D) 122. ADD HL,HL コード 29 クロック 11 HL の内容を 2 倍にします フラグは 120.ADD HL,BC と同じです (DAD H) 123. ADD HL,SP コード 39 クロック 11 HL と SP とを加算し 結果を HL に入れます フラグは 120.ADD HL,BC と同じです (DAD SP) 124. ADC HL,BC コード ED4A クロック 15 HL と BC とキャリー C とを加算し 結果を HL に入れます N=0 H= 不明 ビット 15 からのキャリーがあれば C=1 また結果が 0 ならば Z=1 マイナスなら S=1 オーバーフローなら P/V=1 になります 125. ADC HL,DE コード ED5A クロック 15 HL と DE とキャリー C とを加算し 結果を HL に入れます フラグは 124.ADC HL, BC と同じです 126. ADC HL,HL コード ED6A クロック 15 HL の内容を 2 倍し キャリー C を加えます フラグは 124.ADC HL,BC と同じです 127. ADC HL,SP コード ED7A クロック 15 HL と SP とキャリー C とを加算し 結果を HL に入れます フラグは 124.ADC HL, BC と同じです 128. SBC HL,BC コード ED42 クロック 15 HL から BC 及びキャリー C を減算し 結果を HL に入れます N=0 になること以外は フラグについては 124.ADC HL,BC と同じです 129. SBC HL,DE コード ED52 クロック 15 HL から DE 及びキャリー C を減算し 結果を HL に入れます フラグは 128.SBC HL,BC と同じです 130. SBC HL,HL コード ED62 クロック 15 HL から HL 及びキャリー C を減算し 結果を HL に入れます フラグは 128.SBC HL,BC と同じです 131. SBC HL,SP コード ED72 クロック 15 HL から SP 及びキャリー C を減算し 結果を HL に入れます フラグは 128.SBC HL,BC と同じです 132. ADD IX,BC コード DD09 クロック 15 インデックスレジスタ IX と BC との内容を加え IX に入れます N=0 になります ビット 17 からのキャリーがあれば C=1 になります ビット 11 からのキャリーがあれば H=1 になります 133. ADD IX,DE コード DD19 クロック 15 IX+DE の結果を IX に入れます フラグは 132.ADD IX,BC と同じです 134. ADD IX,IX コード DD29 クロック 15 IX+IX の結果を IX に入れます (IX の内容を倍にする ) フラグは 132.ADD IX,BC と同じです 135. ADD IX,SP コード DD39 クロック 15 IX+SP の結果を IX に入れます フラグは 132.ADD IX,BC と同じです 136. ADD IY,BC コード FD09 クロック 15 IY+BC の結果を IY に入れます フラグは 132.ADD IX,BC と同じです 10

137. ADD IY,DE コード FD19 クロック 15 IY+DE の結果を IY に入れます フラグは 132.ADD IX,BC と同じです 138. ADD IY, IY コード FD29 クロック 15 IY の内容を倍にします フラグは 132.ADD IX,BC と同じです 139. ADD IY,SP コード FD39 クロック 15 IY+SP を計算して結果を IY に入れます フラグは 132.ADD IX,BC と同じです 140. INC BC コード 03 クロック 6 BC の内容を +1 します フラグは変化しません (INX B) 141. INC DE コード 13 クロック 6 DE の内容を +1 します (INX D) 142. INC HL コード 23 クロック 6 HL の内容を +1 します (INX H) 143. INC SP コード 33 クロック 6 SP の内容を +1 します (INX SP) 144. INC IX コード DD23 クロック10 IXの内容を+1します 145. INC IY コード FD23 クロック10 IYの内容を+1します 146. DEC BC コード 0B クロック 6 BC の内容を -1 します (DCX B) 147. DEC DE コード 1B クロック 6 DE の内容を -1 します (DCX D) 148. DEC HL コード 2B クロック 6 HL の内容を -1 します (DCX H) 149. DEC SP コード 3B クロック 6 SP の内容を -1 します (DCX SP) 150. DEC IX コード DD2B クロック10 IXの内容を-1します 151. DEC IY コード FD2B クロック10 IYの内容を-1します Ⅷ. 回転 シフト命令 152. RLCA コード 07 クロック 4 A レジスタの内容を 1 ビット左にシフトし ビット 7 のデータをビット 0 に入れると共にキャリー C にも入れます N=0 H=0 となり C はシフト前のビット 7 が 1 のときセットされます (RLC) 153. RLA コード 17 クロック 4 キャリーを含め 9 ビットのデータを左に 1 ビット回転させます フラグは 152.RLCA と同じです (RAL) 11

154. RRCA コード 0F クロック 4 A の内容を右に 1 ビットシフトさせると共にビット 0 のデータをキャリー C にも入れます フラグはシフト前のビット 0 の内容が C に入る以外は 152.RLCA と同じです (RRC) 155.RRA コード 1F クロック 4 キャリーを含め 9 ビットのデータを 1 ビット右に回転させます フラグは 154.RRCA と同じです (RAR) 156.RLC コード ( 表 19) クロック 8 152.RLCA と同じ動作を について行います N=0 H=0 C が変化する他に結果のレジスタの値によって Z S がセット リセットされまた 1 のビット数により P/V がセット リセットされます 157.RLC (HL) コード CB06 クロック 15 152.RLCA と同じ動作を (HL) について行います フラグについては 156.RLC と同じです 158.RLC (IX+d) コード DDCB 06 クロック 23 152.RLCA と同じ動作を (IX+d) について行います フラグについては 156.RLC と同じです ( 表 19) B C D E H L A CB00 CB01 CB02 CB03 CB04 CB05 CB07 159.RLC (IY+d) コード FDCB 06 クロック 23 152.RLCA と同じ動作を (IY+d) について行います フラグについては 156.RLC と同じです 160.RL コード ( 表 20) クロック 8 153.RLA と同じ動作を について行います フラグは 156.RLC と同じです 161.RL (HL) コード CB16 クロック 15 153.RLA と同じ動作を (HL) ついて行います フラグは 156.RLC と同じです 162.RL (IX+d) コード DDCB 16 クロック 23 153.RLA と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです ( 表 20) B C D E H L A CB10 CB11 CB12 CB13 CB14 CB15 CB17 163.RL (IY+d) コード FDCB 16 クロック 23 153.RLA と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 164.RRC コード ( 表 21) クロック 8 154.RRCA と同じ動作を について行います フラグは 156.RLC と同じです 165.RRC (HL) コード CB0E クロック 15 154.RRCA と同じ動作を (HL) について行います フラグは 156.RLC と同じです 166.RRC (IX+d) コード DDCB 0E クロック 23 154.RRCA と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです ( 表 21) B C D E H L A CB08 CB09 CB0A CB0B CB0C CB0D CB0F 167.RRC (IY+d) コード FDCB 0E クロック 23 154.RRCA と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 168.RR コード ( 表 22) クロック 8 155.RRA と同じ動作を について行います フラグは 156.RLC と同じです 169.RR (HL) コード CB1E クロック 15 155.RRA と同じ動作を (HL) について行います フラグは 156.RLC と同じです 170.RR (IX+d) コード DDCB 1E クロック 23 155.RRA と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです ( 表 22) B C D E H L A CB18 CB19 CB1A CB1B CB1C CB1D CB1F 171.RR (IY+d) コード FDCB 1E クロック 23 155.RRA と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 12

172.SLA コード ( 表 23) クロック 8 を左に 1 ビットシフトし ビット 7 のデータをキャリー C に入れ またビット 0 には 0 を入れます フラグは 156.RLC と同じです C 7 0 0 173.SLA (HL) コード CB26 クロック 15 172.SLA と同じ動作を (HL) について行います フラグは 156.RIC と同じです 174.SLA (IX+d) コード DDCB 26 クロック 23 172.SLA と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです ( 表 23) B C D E H L A CB20 CB21 CB22 CB23 CB24 CB25 CB27 175.SLA (IY+d) コード FDCB 26 クロック 23 172.SLA と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 176.SRA コード ( 表 24) クロック 8 の内容を 1 ビット右にシフトし ビット 0 のデータをキャリー C に転送しますが ビット 7 は変化しません つまりビット 7 とビット 6 はつねに同じになります フラグは 156.RLC と同じです 7 0 C 177.SRA (HL) コード CB2E クロック 15 176. と同じ動作を (HL) について行います フラグは 156.RLC と同じです 178.SRA (IX+d) コード DDCB 2E クロック 23 176. と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです 179.SRA (IY+d) コード FDCB 2E クロック 23 176. と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 180.SRL コード ( 表 25) クロック 8 の内容を 1 ビット右にシフトし ビット 0 のデータをキャリー C に入れます ビット 7 には 0 を入れます フラグは 156.RLC と同じです 0 7 0 C ( 表 24) B C D E H L A ( 表 25) B C D E H L A CB28 CB29 CB2A CB2B CB2C CB2D CB2F CB38 CB39 CB3A CB3B CB3C CB3D CB3F 181.SRL (HL) コード CB3E クロック 15 180.SRL と同じ動作を (HL) について行います フラグは 156.RLC と同じです 182.SRL (IX+d) コード DDCB 3E クロック 23 180.SRL と同じ動作を (IX+d) について行います フラグは 156.RLC と同じです 183.SRL (IY+d) コード FDCB 3E クロック 23 180.SRL と同じ動作を (IY+d) について行います フラグは 156.RLC と同じです 184.RLD コード ED6F クロック 18 アキュムレータ A とメモリ (HL) との間で下図のようなデータの交換が行われます まず (HL) の下 4 ビットが上 4 ビットへ移され (H L) の上 4 ビットは A の下 4 ビットへ移され A の下 4 ビットは (HL) の下 4 ビットへ移されます フラグはキャリー C が変化しない点をのぞいて 156.RLC と同じです 7 4 3 0 7 4 3 0 Aレジスタ (HL) 185.RRD コード ED67 クロック 18 (HL) の下位 4 ビットを A の下位 4 ビットに移し A の下位 4 ビットを (HL) の上位 4 ビットに移し (HL) の上位 4 ビットを下位 4 ビットに移します フラグは 184.RLD と同じです 13

7 4 3 0 7 4 3 0 Aレジスタ (HL) Ⅸ. ビットセット リセット テスト命令 186.BIT b, コード CBxx (xx は下図参照 ) クロック 8 レジスタのうち b で指定したビットを調べ それが 0 なら Z=1 1 なら Z=0 にします N=0 H=1 になりますが P/V S は不定です xx(8ビット ) の内容 bbb ビット位置 レジスタ 01 bbb 000 0 000 B 001 1 001 C 010 2 010 D 011 3 011 E 100 4 100 H 101 5 101 L 110 6 111 A 111 7 ( 例 )D レジスタのビット 5 を調べる命令コードは bbb=101 =010 なので CB6A になります (6A=01101010) 187.BIT b,(hl) コード CBxx (xxは下図参照) クロック12 (HL) のうちビットbの状態を調べます 動作 フラグについては 186.BIT b,と同じです xx(8 ビット ) の内容 01 bbb 110 bbb は 186. の表参照 ( 例 ) ビット 3 のチェックならコードは CB5E になります 188. BIT b,(ix+d) コード DDCB xx (xx は下図参照 ) クロック 20 (IX+d) のうちビット b の状態を調べます は増分 d です 動作 フラグについては 186..BIT b, と同じです xx(8 ビット ) の内容 01 bbb 110 bbb は 186. の表参照 189. BIT b,(iy+d) コード FDCB xx (xx は下図参照 ) クロック 20 (IY+d) のうちビット b の状態を調べます は増分 d です 動作 フラグについては 186.BIT b, と同じです xx(8 ビット ) の内容 01 bbb 110 bbb は 186. の表参照 190. SET b, コード CBxx (xx は下図参照 ) クロック 8 レジスタ のビット b をセットします フラグは変化しません xx(8 ビット ) の内容 11 bbb bbb は 186. の表参照 191. SET b,(hl) コード CBxx (xx は下図参照 ) クロック 15 HL のビット b をセットします xx(8 ビット ) の内容 11 bbb 110 bbb は 186. の表参照 192. SET b,(ix+d) コード DDCB xx (xx は下図参照 ) クロック 23 (IX+d) のビット b をセットします は増分 d です 14

xx(8 ビット ) の内容 11 bbb 110 bbb は 186. の表参照 193. SET b,(iy+d) コード FDCB xx (xx は下図参照 ) クロック 23 (IY+d) のビット b をセットします は増分 d です xx(8 ビット ) の内容 11 bbb 110 bbb は 186. の表参照 194.RES b, コード CBxx (xx は下図参照 ) クロック 8 レジスタ のビット b をリセットします フラグは変化しません xx(8 ビット ) の内容 10 bbb bbb は 186. の表参照 195. RES b,(hl) コード CBxx (xx は下図参照 ) クロック 15 (HL) のビット b をリセットします xx(8 ビット ) の内容 10 bbb 110 bbb は 186. の表参照 196. RES b,(ix+d) コード DDCB xx (xx は下図参照 ) クロック 23 (IX+d) のビット b をリセットします は増分 d です xx(8 ビット ) の内容 10 bbb 110 bbb は 186. の表参照 197. RES b,(iy+d) コード FDCB xx (xx は下図参照 ) クロック 23 (IY+d) のビット b をリセットします は増分 d です xx(8 ビット ) の内容 10 bbb 110 bbb は 186. の表参照 Ⅹ. ジャンプ命令このグループの命令は フラグに影響を与えません 198. JP nn コード C3 クロック 10 16 ビットのデータ nn で示されるアドレスにジャンプします については 8.LD A,(DE) 参照 ジャンプ先アドレスとしては命令コードの第一バイトが書かれているアドレスを指定します オペランドを含めて 2 バイト以上の長さの命令の第一バイト以外の途中のアドレスを指定するとジャンプ命令の実行後に暴走してしまいます (JMP nn ) 199. JP NZ,nn コード C2 クロック 10 Z フラグがセットされていなければ nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JNZ n n ) 200. JP Z,nn コード CA クロック 10 Z フラグがセットされていたら nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JZ nn ) 201. JP NC,nn コード D2 クロック 10 C フラグがセットされていなければ nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JNC n n ) 202. JP C,nn コード DA クロック 10 C フラグがセットされていたら nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JC nn ) 203. JP PO,nn コード E2 クロック 10 P/V フラグがセットされていなければ nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JPO nn ) 204. JP PE,nn コード EA クロック 10 15

P/V フラグがセットされていたら nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JPE n n ) 205. JP P,nn コード F2 クロック 10 S フラグがセットされていなければ nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JP n n ) 206. JP M,nn コード FA クロック 10 S フラグがセットされていたら nn へジャンプします ジャンプ先アドレスについては 198.JP nn を参照してください (JM nn ) 207. JR e コード 18 クロック 12 この命令の書かれている番地から e 番地先へジャンプします なお 命令のオペランド部 ( ) には e-2 を書きます 下のように 5 バイト先にジャンプさせたい時オペランドは 5-2=3 となります ジャンプ先アドレスとしては命令コードの第一バイトが書かれているアドレスを指定します オペランドを含めて 2 バイト以上の長さの命令の第一バイト以外の途中のアドレスを指定するとジャンプ命令の実行後に暴走してしまいます + 方向に進むときオペランドには 00~7F(0~127) の範囲の数を使います FE~80(-2~-128) を使うと - 方向にジャンプします FE(-2) は無限ループになります FF(-1) は使えません ( 暴走します ) アドレス命令コード 8010 1803 8012 8013 8014 8015 ここにジャンプする 208. JR C,e コード 38 クロック 7(C=0) または 12(C=1) C フラグがセットされていれば e 番地先へジャンプします e については 207.JR e 参照 209. JP NC,e コード 30 クロック 7(C=0) または 12(C=1) C フラグがセットされていなければ e 番地先へジャンプします e については 207.JR e 参照 210. JR Z,e コード 28 クロック 7(Z=0) または 12(Z=1) Z フラグがセットされていれば e 番地先へジャンプします e については 207.JR e 参照 211. JR NZ,e コード 20 クロック 7(Z=1) または 12(Z=0) Z フラグがセットされていなければ e 番地先へジャンプします e については 207.JR e 参照 212. JP (HL) コード E9 クロック 4 ペアレジスタ HL の内容をプログラムカウンタ PC にロードします つまり HL で示されるアドレスへジャンプします (PCHL) 213. JP (IX) コード DDE9 クロック 8 インデックスレジスタ IX で示されるアドレスへジャンプします 214. JP (IY) コード FDE9 クロック 8 インデックスレジスタ IY で示されるアドレスへジャンプします 215. DJNZ e コード 10 クロック 8(B=0) または 13(B 0) 少しかわった命令です B レジスタから 1 を引き その結果が 0 でなければ e 番地先へジャンプします (e については 207.J R e 参照 ) 例えば ある処理を何回か繰り返し行うようなプログラムに利用します B レジスタに繰り返し回数を入れて使用します ⅩⅠ. コール リターン命令 このグループの命令はフラグに影響を与えません 216. CALL nn コード CD クロック 17 nn で示されるアドレスからはじまるサブルーチンをコールします なおこのとき この CALL 命令の次の命令のアドレスがスタックに退避されます この結果 SP は 2 減じられます サブルーチンの最後にリターン命令を使うとスタックに退避されていたアドレスが PC に入れられて その結果コール命令の次の命令のアドレスへ戻って処理が続けられます (CALL nn ) 217. CALL NZ,nn コード C4 クロック 10(Z=1) または 17(Z=0) 16

Z フラグがセットされていなければ nn からはじまるサブルーチンをコールします (CNZ nn ) 218. CALL Z,nn コード CC クロック 10(Z=0) または 17(Z=1) Z フラグがセットされていたら nn からはじまるサブルーチンをコールします (CZ nn ) 219. CALL NC,nn コード D4 クロック 10(C=1) または 17(C=0) C フラグがセットされていなければ nn からはじまるサブルーチンをコールします (CNC nn ) 220. CALL C,nn コード DC クロック 10(C=0) または 17(C=1) C フラグがセットされていたら nn からはじまるサブルーチンをコールします (CC nn ) 221. CALL PO,nn コード E4 クロック 10(P/V=1) または 17(P/V=0) P/V フラグがセットされていなければ nn からはじまるサブルーチンをコールします (CPO nn ) 222. CALL PE,nn コード EC クロック 10(P/V=0) または 17(P/V=1) P/V フラグがセットされていたら nn からはじまるサブルーチンをコールします (CPE nn ) 223. CALL P,nn コード F4 クロック 10(S=1) または 17(S=0) S フラグがセットされていなければ nn からはじまるサブルーチンをコールします (CP nn ) 224. CALL M,nn コード FC クロック 10(S=0) または 17(S=1) S フラグがセットされていたら nn からはじまるサブルーチンをコールします (CM nn ) 225. RET コード C9 クロック 10 スタックのトップに退避されていたアドレスデータを PC に入れ そのアドレスにリターンします この結果 PC は +2 されます (RET) 226. RET NZ コード C0 クロック 5(Z=1) または 11(Z=0) Z フラグがセットされていなければリターンします (RNZ) 227. RET Z コード C8 クロック 5(Z=0) または 11(Z=1) Z フラグがセットされていたらリターンします (RZ) 228. RET NC コード D0 クロック 5(C=1) または 11(C=0) C フラグがセットされていなければリターンします (RNC) 229. RET C コード D8 クロック 5(C=0) または 11(C=1) C フラグがセットされていたらリターンします (RC) 230. RET PO コード E0 クロック 5(P/V=1) または 11(P/V=0) P/V フラグがセットされていなければリターンします (RPO) 231. RET PE コード E8 クロック 5(P/V=0) または 11(P/V=1) P/V フラグがセットされていたらリターンします (RPE) 232. RET P コード F0 クロック 5(S=1) または 11(S=0) S フラグがセットされていなければリターンします (RP) 233. RET M コード F8 クロック 5(S=0) または 11(S=1) S フラグがセットされていたらリターンします (RM) 234. RETI コード ED4D クロック 14 割込みサービスルーチンの最後に使用します 割込み処理を終了してもとのプログラムに戻るとともに 割込み発生元 (Z80 ファミリー IC または割込みコントローラ ) に割込み処理の終了を知らせます 235. RETN コード ED45 クロック 14 ノンマスカブルインタラプト処理ルーチンの最後に使用します 236. RST n(n=0~7) コード ( 下表 ) クロック 11 1 バイトで実行できるコール命令です ただしコールできるアドレスは下表の 8 種に固定されています (RST n) 17

ニーモニックコードアドレス RST 0 C7 0000 RST 1 CF 0008 RST 2 D7 0010 RST 3 DF 0018 RST 4 E7 0020 RST 5 EF 0028 RST 6 F7 0030 RST 7 FF 0038 例えば RST 3( コードDF) は CALL $0018( コードCD1800) と同じ動作になります ⅩⅡ. 入出力命令 237. IN A,(n) コード DB クロック 11 n で指定されるアドレスの I/O デバイスからデータをアキュムレータ A に入力します フラグは変化しません (IN n ) 238. IN,(C) コード ( 表 26) クロック 12 レジスタ C の内容で指定されるアドレスの I/O デバイスから レジスタにデータを入力します N=0 H=0 になりますが C フラグは変化しません 入力データが 0 のとき Z=1 マイナスのとき S=1 になります また入力データのビット 1 の数が偶数のとき P/V=1 になります 239. INI コード EDA2 クロック 16 レジスタ C で指定する I/O デバイスからデータを入力し HL レジスタで指定するメモリに転送します この後にレジスタ B の内容を -1 し HL の内容を +1 します N=1 C は変化しません B が 0 になれば Z=1 他のフラグは不定です 240. INIR コード EDB2 クロック 16(B=0) または 21(B 0) 上記 239..INI と同じ動作をしますが B が 0 になるまで繰り返し実行されます C は変化しません N=1 Z=1 他は不定 ( 表 26) B C D E H L A ED40 ED48 ED50 ED58 ED60 ED68 ED78 241. IND コード EDAA クロック 16 239.INI と同じ動作ですが違うところは最後に HL レジスタが +1 されるのではなく -1 される点です フラグは 239.INI と同じです 242. INDR コード EDBA クロック 16(B=0) または 21(B 0) 240.INIR と同じ動作ですが HL レジスタは -1 されて行きます フラグは 240.INIR と同じです 243. OUT (n),a コード D3 クロック 11 n で指定されるアドレスの I/O デバイスに A レジスタのデータを出力します フラグは変化しません (OUT n ) 244. OUT (C), コード ( 表 27) クロック 12 レジスタ C で指定する I/O デバイスにレジスタ の内容が出力されます フラグは変化しません ( 表 27) B C D E H L A ED41 ED49 ED51 ED59 ED61 ED69 ED79 245. OUTI コード EDA3 クロック 16 レジスタ C で指定する I/O デバイスに HL レジスタで示されるメモリの内容が出力されます このあと B レジスタの内容が -1 され H L の内容は +1 されます フラグは 239.INI と同じです 246. OTIR コード EDB3 クロック 16(B=0) または 21(B 0) 上記 245.OUTI と同じ動作をしますが B が 0 になるまで繰り返し実行されます フラグは 240.INIR と同じです 247. OUTD コード EDAB クロック 16 上記 245.OUTI と同じ動作をしますが HL は +1 されるのではなく -1 されます フラグは 239.INI と同じです 248. OTDR コード EDBB クロック 16(B=0) または 21(B 0) 上記 246.OTIR と同じ動作をしますが HL は -1 されて行きます フラグは 240.INIR と同じです 18

ⅩⅢ. 割込制御 249. DI コード F3 クロック 4 割込を禁止します DI 命令の実行後は INT 信号が入力されても新たな割込は発生しません リセット後は割込禁止状態になります (DI) 250. EI コード FB クロック 4 EI 命令が実行されると その次の命令の実行後から割込が受け付け可能状態になります EI 命令の実行後ではなくて その次の命令の実行後から 割込みの受け付けが可能になるようにしている理由は 割込み処理プログラムの最後は通常 RET 命令で終わっているために もし EI 命令の実行後に割込みの受け付けが可能になっていると 割込み処理が終わってメインプログラムに戻るための RET 命令が実行される前に次の割込みが受け付けられてしまい 二重に割込みが実行されてしまう可能性が出てくることを避けるためです (EI) 251. IM 0 コード ED46 クロック 8 Z80 のマスク可能な割込みはモード 0 モード 1 モード 2 の 3 種類あります IM 0 の実行によってモード 0 の割込みが選択されます モード 0 の割込みは 8080 の割込みと同じ動作になります INT 信号の入力とともに データバスに RST 0~RST 7 の命令コードを入力することによって 0000 から 8 番地とびに置かれた割込み処理プログラムが実行されます RST 命令については 236.R ST n を参照してください リセット後はモード 0 が選択されます 252. IM 1 コード ED56 クロック 8 マスク可能な割込みをモード 1 に設定します モード 0 は INT 信号とともにデータバスに RST 0~RST 7 の命令コードを入力することで 8 通りの割込み処理ルーチンを選択できますが モード 1 はそのうちの RST 7 割込み動作に特化した割込みモードです モード 1 は INT 信号の入力によってつねに 0038 番地の割込み処理プログラムが実行されますが そのときデータバスに命令コードを入力する必要はなく INT 信号のみで割込み処理が行われます 253. IM 2 コード ED5E クロック 8 モード 2 は割込みベクタレジスタ (I レジスタ ) を使う高度な割込み処理モードです あらかじめ割込み処理プログラムアドレスを配置したテーブルをメモリ内に用意しておき そのテーブルアドレスの上位アドレスを I レジスタに入れておきます INT 割込みとともにデータバスに テーブルアドレスの下位アドレスを入力することによって メモリの広い範囲に数を制限されることなく必要な割込み処理プログラムを置くことができます 19