i8080 ニーモニック ⇔ 機械語 対照表

# はじめに
- ハンドアセンブル/ダイレクトコーディングのお供にどうぞ。
- ニーモニックはザイログ風にしてあります。

## 表記
### ニーモニック
- 《オペコード》
- 《オペコード》 《オペランド》
- 《オペコード》 《オペランド1》,《オペランド2》

#### オペランド
- r: 8bitレジスタ
- rr: 16bitレジスタ
- n: 8bitイミディエート
- nn: 16bitイミディエート
- cc: 分岐条件
    - 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

<details><summary>※</summary><div>

- **`LD PC,HL`** ⇒ **`JP (HL)`**

</div></details>

# 演算 (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|-|-|-|-|-|-|-|

<details><summary>※</summary><div>

- 混乱するのですが、**`RLCA`**、**`RRCA`** の **`C`** は'Circular'で、アキュムレータ内で回転するイメージです。
    - 終端で押し出されるビットは、キャリーフラグにも格納されます。
- 対して、**`RLA`**、**`RRA`** は、'through carry'で、キャリーを含めて回転します。

</div></details>

# 演算 (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

# フラグのビット配置

 |&nbsp;|&nbsp;7&nbsp;&nbsp;|&nbsp;&nbsp;6&nbsp;&nbsp;|&nbsp;&nbsp;5&nbsp;&nbsp;|&nbsp;&nbsp;4&nbsp;&nbsp;|&nbsp;&nbsp;3&nbsp;&nbsp;|&nbsp;&nbsp;2&nbsp;&nbsp;|&nbsp;&nbsp;1&nbsp;&nbsp;|&nbsp;&nbsp;0&nbsp;&nbsp;
|:--|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
**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](http://hp.vector.co.jp/authors/VA016157/zk80web05/zk80web.html)
    - 深く感謝いたします。
- お読みいただきましてどうもありがとうございました。

## 蛇足

https://www.zilog.com/docs/z80/um0080.pdf