はじめに
- ハンドアセンブル/ダイレクトコーディングのお供にどうぞ。
- ニーモニックはザイログ風にしてあります。
表記
ニーモニック
- 《オペコード》
- 《オペコード》 《オペランド》
- 《オペコード》 《オペランド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 |
LD A,r | 7F | 78 | 79 | 7A | 7B | 7C | 7D |
LD B,r | 47 | 40 | 41 | 42 | 43 | 44 | 45 |
LD C,r | 4F | 48 | 49 | 4A | 4B | 4C | 4D |
LD D,r | 57 | 50 | 51 | 52 | 53 | 54 | 55 |
LD E,r | 5F | 58 | 59 | 5A | 5B | 5C | 5D |
LD H,r | 67 | 60 | 61 | 62 | 63 | 64 | 65 |
LD L,r | 6F | 68 | 69 | 6A | 6B | 6C | 6D |
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 | - |
POP rr | C1 | D1 | E1 | - |
※
-
LD PC,HL
⇒JP (HL)
演算 (8bit)
A | B | C | D | E | H | L | (HL) |
---|---|---|---|---|---|---|---|
INC r | 3C | 04 | 0C | 14 | 1C | 24 | 2C |
DEC r | 3D | 05 | 0D | 15 | 1D | 25 | 2D |
ADD r | 87 | 80 | 81 | 82 | 83 | 84 | 85 |
ADC r | 8F | 88 | 89 | 8A | 8B | 8C | 8D |
SUB r | 97 | 90 | 91 | 92 | 93 | 94 | 95 |
SBC r | 9F | 98 | 99 | 9A | 9B | 9C | 9D |
AND r | A7 | A0 | A1 | A2 | A3 | A4 | A5 |
XOR r | AF | A8 | A9 | AA | AB | AC | AD |
OR r | B7 | B0 | B1 | B2 | B3 | B4 | B5 |
CP r | BF | B8 | B9 | BA | BB | BC | BD |
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 |
DEC rr | 0B | 1B | 2B |
ADD HL,rr | 09 | 19 | 29 |
分岐・制御
- | NZ | Z | NC | C | PO | PE | P | M |
---|---|---|---|---|---|---|---|---|
JP cc,nn | C3 | C2 | CA | D2 | DA | E2 | EA | F2 |
CALL cc,nn | CD | C4 | CC | D4 | DC | E4 | EC | F4 |
RET cc | C9 | C0 | C8 | D0 | D8 | E0 | E8 | F0 |
JP (HL) | E9 | - | - | - | - | - | - | - |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
RST | - | C7 | CF | D7 | DF | E7 | EF | F7 |
NOP | 00 | - | - | - | - | - | - | - |
HALT | 76 | - | - | - | - | - | - | - |
DI | F3 | - | - | - | - | - | - | - |
EI | FB | - | - | - | - | - | - | - |
入出力
A |
---|
OUT (n),A |
IN A,(n) |
フラグのビット配置
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
- 深く感謝いたします。
- お読みいただきましてどうもありがとうございました。
蛇足