はじめに
- ハンドアセンブル/ダイレクトコーディングのお供にどうぞ。
- ニーモニックはザイログ風にしてあります。
表記
ニーモニック
- 《オペコード》
- 《オペコード》 《オペランド》
- 《オペコード》 《オペランド1》,《オペランド2》
オペランド
- r: 8bitレジスタ
- rr: 16bitレジスタ
- n: 8bitイミディエート
- nn: 16bitイミディエート
- cc: 分岐条件
- 0~2文字で、0文字(無条件)の場合は、続く
,ごと無くなります。
- 0~2文字で、0文字(無条件)の場合は、続く
転送 (8bit)
| A | B | C | D | E | H | L | (HL) | |
|---|---|---|---|---|---|---|---|---|
| LD r,n | 3E | 06 | 0E | 16 | 1E | 26 | 2E | 36 |
| LD A,r | 7F | 78 | 79 | 7A | 7B | 7C | 7D | 7E |
| LD B,r | 47 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
| LD C,r | 4F | 48 | 49 | 4A | 4B | 4C | 4D | 4E |
| LD D,r | 57 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
| LD E,r | 5F | 58 | 59 | 5A | 5B | 5C | 5D | 5E |
| LD H,r | 67 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |
| LD L,r | 6F | 68 | 69 | 6A | 6B | 6C | 6D | 6E |
| LD (HL),r | 77 | 70 | 71 | 72 | 73 | 74 | 75 | - |
| LD (BC),A | 02 | - | - | - | - | - | - | - |
| LD A,(BC) | 0A | - | - | - | - | - | - | - |
| LD (DE),A | 12 | - | - | - | - | - | - | - |
| LD A,(DE) | 1A | - | - | - | - | - | - | - |
| LD (nn),A | 32 | - | - | - | - | - | - | - |
| LD A,(nn) | 3A | - | - | - | - | - | - | - |
転送 (16bit)
| BC | DE | HL | SP | AF | |
|---|---|---|---|---|---|
| LD rr,nn | 01 | 11 | 21 | 31 | - |
| LD (nn),HL | - | - | 22 | - | - |
| LD HL,(nn) | - | - | 2A | - | - |
| EX (SP),HL | - | - | E3 | - | - |
| EX DE,HL | - | - | EB | - | - |
| LD PC,HL$^{※}$ | - | - | E9 | - | - |
| LD SP,HL | - | - | F9 | - | - |
| PUSH rr | C5 | D5 | E5 | - | F5 |
| POP rr | C1 | D1 | E1 | - | F1 |
※
-
LD PC,HL⇒JP (HL)
演算 (8bit)
| A | B | C | D | E | H | L | (HL) | |
|---|---|---|---|---|---|---|---|---|
| INC r | 3C | 04 | 0C | 14 | 1C | 24 | 2C | 34 |
| DEC r | 3D | 05 | 0D | 15 | 1D | 25 | 2D | 35 |
| ADD r | 87 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
| ADC r | 8F | 88 | 89 | 8A | 8B | 8C | 8D | 8E |
| SUB r | 97 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
| SBC r | 9F | 98 | 99 | 9A | 9B | 9C | 9D | 9E |
| AND r | A7 | A0 | A1 | A2 | A3 | A4 | A5 | A6 |
| XOR r | AF | A8 | A9 | AA | AB | AC | AD | AE |
| OR r | B7 | B0 | B1 | B2 | B3 | B4 | B5 | B6 |
| CP r | BF | B8 | B9 | BA | BB | BC | BD | BE |
| ADD A,n | C6 | - | - | - | - | - | - | - |
| ADC A,n | CE | - | - | - | - | - | - | - |
| SUB A,n | D6 | - | - | - | - | - | - | - |
| SBC A,n | DE | - | - | - | - | - | - | - |
| AND A,n | E6 | - | - | - | - | - | - | - |
| XOR A,n | EE | - | - | - | - | - | - | - |
| OR A,n | F6 | - | - | - | - | - | - | - |
| CP A,n | FE | - | - | - | - | - | - | - |
| RLCA$^{※}$ | 07 | - | - | - | - | - | - | - |
| RRCA | 0F | - | - | - | - | - | - | - |
| RLA | 17 | - | - | - | - | - | - | - |
| RRA | 1F | - | - | - | - | - | - | - |
| DAA | 27 | - | - | - | - | - | - | - |
| CPL | 2F | - | - | - | - | - | - | - |
| SCF | 37 | - | - | - | - | - | - | - |
| CCF | 3F | - | - | - | - | - | - | - |
※
- 混乱するのですが、
RLCA、RRCAのCは'Circular'で、アキュムレータ内で回転するイメージです。- 終端で押し出されるビットは、キャリーフラグにも格納されます。
- 対して、
RLA、RRAは、'through carry'で、キャリーを含めて回転します。
演算 (16bit)
| BC | DE | HL | SP | |
|---|---|---|---|---|
| INC rr | 03 | 13 | 23 | 33 |
| DEC rr | 0B | 1B | 2B | 3B |
| ADD HL,rr | 09 | 19 | 29 | 39 |
分岐・制御
| - | NZ | Z | NC | C | PO | PE | P | M | |
|---|---|---|---|---|---|---|---|---|---|
| JP cc,nn | C3 | C2 | CA | D2 | DA | E2 | EA | F2 | FA |
| CALL cc,nn | CD | C4 | CC | D4 | DC | E4 | EC | F4 | FC |
| RET cc | C9 | C0 | C8 | D0 | D8 | E0 | E8 | F0 | F8 |
| JP (HL) | E9 | - | - | - | - | - | - | - | - |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
| RST | - | C7 | CF | D7 | DF | E7 | EF | F7 | FF |
| NOP | 00 | - | - | - | - | - | - | - | - |
| HALT | 76 | - | - | - | - | - | - | - | - |
| DI | F3 | - | - | - | - | - | - | - | - |
| EI | FB | - | - | - | - | - | - | - | - |
入出力
| A | |
|---|---|
| OUT (n),A | D3 |
| IN A,(n) | DB |
フラグのビット配置
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|
| i8080 | $S$ | $Z$ | $0$ | $H$ | $0$ | $P$ | $1$ | $C$ |
| uPD8080A | $S$ | $Z$ | $\scriptsize{SUB}$ | $\small{CY_4}$ | $1$ | $\small{P_{/\overline{M}}}$ | $1$ | $C$ |
おわりに
- 例えば、こちらで遊べます。
- ⇒ ZK-80 web ver 0.5
- 深く感謝いたします。
- お読みいただきましてどうもありがとうございました。
蛇足