00 | NOP | |
01 0203 | LXI B,0302 | |
02 | STAX B | store X だからメモリ書き込み命令じゃね? |
03 | INX B | IncrimentX B だから BC <= BC+1 じゃね? |
04 | INR B | B <= B+1 じゃね? |
05 | DCR B | B <= B-1 じゃね? |
06 07 | MVI B,07 | B <= 0x07 |
07 | RLC | Aを左ローテートじゃね? |
08 | ??? | 対応アセンブラなし |
09 | DAD B | なんだろこれ。 |
0a | LDAX B | A <= (BC) |
0b | DCX B | DecrimentX B, BC <= BC-1じゃないかな |
0c | INR C | Incriment C, C <= C+1じゃないかな |
0d | DCR C | Decriment C, C <= C-1じゃないかな |
0e 0f | MVI C,0F | C <= 0x0fじゃないかな |
0f | RRC | A <= A >> 1bitシフト |
10 11 | DJNZ C013 | 特殊条件ジャンプ命令? DJNZ e の事かな? Bをデクリメントして、 B=0ならジャンプするらしい |
11 1917 | LXI D,1917 | |
12 | stax D | (DE) <- A メモリ書き込み |
13 | INX D | Incriment(16bit) DE, DE <- DE+1かな? |
14 | INR D | Incriment D, D <- D+1かな? |
15 | DCR D | D <= D-1 |
16 17 | MVI D,17 | D <= 0x17 |
17 | RAL | A <= A << 1 A[0] <= 0? |
16 17 | MVI D,17 | D <- 0x17 かな? |
17 | RAL | Rotate A To Left?左論理シフト命令かな?? |
18 19 | JMPR C023 | PC <= PC + 0x19 + 2。相対ジャンプ |
19 | DAD D | なんだろこれ??? |
1a | LDAX D | A <= (DE) |
1b | DCX D | DE <= DE-1 |
1c | INR E | E <= E+1 |
1d | DCR E | E <= E-1 |
1e 1f | MVI E,1F | E <= 0x1f |
1f | RAR | A <= A>>1 |
20 21 | JRNZ C023 | PC <=if NC, PC + 0x21 + 2(相対ジャンプ) |
21 23 22 | LXI H,2322 | HL <= 0x2322 |
22 24 23 | SHLD 2423 | (2423) <= L, (2423+1) <= H |
23 | INX H | HL <= HL+1 |
24 | INR H | H <= H+1 |
25 | DCR H | H <= H-1 |
26 27 | MVI H,27 | H <= 0x27 |
27 | DAA | for decimal packed BCD演算関係らしいけど |
28 29 | JRZ C033 | PC <= PC + 0x29+2 c008からc033への相対ジャンプ |
29 | DAD H | (BCD演算関係???) |
2A 2C2B | LHLD 2c2b | 0x2c2b番地からLHレジスタに読み込み、らしい |
2B | DCX H | decriment HL |
2C | INR L | incriment L |
2D | DCR L | decriment L |
2e 2f | MVI L,2f | L <- 0x2f じゃね? |
2f | CMA | Complement acc. A 補数をA に入れる |
30 31 | JRNC C133 | If NC, PC<= 0x31 x 2 + 0x2 じゃないの? |
31 c7c4 | LXI SP,c7c4 | SP <= 0xc7c4 じゃないの? |
32 3433 | STA 3433 | 0x3433番地にAを書き込む |
33 | INX SP | |
34 | INR M | |
35 | DCR M | |
36 37 | MVI M,37 | |
37 | STC | Set Cary Flag。 |
38 39 | JRC C143 | |
39 | DAD SP | |
3a 3c3b | LDA 3c3b | |
3b | DCX SP | |
3c | INR A | |
3d | DCR A | |
3e 3f | MVI A,3f | |
3f | CMC | Complement CarryFlag キャリーフラグの1の補数をキャリーフラグに入れる |
40-47 | MOV B, B/C/D/E/H/L/M/A | |
48-4f | MOV C, B/C/D/E/H/L/M/A | |
50-57 | MOV D, B/C/D/E/H/L/M/A | |
58-5F | MOV E, B/C/D/E/H/L/M/A | |
60-67 | MOV H, B/C/D/E/H/L/M/A | |
68-6F | MOV L, B/C/D/E/H/L/M/A | |
70-75 | MOV M,B/C/D/E/H/L | |
76 | HLT | |
77 | MOV M,A | |
78-7F | MOV A,B/C/D/E/H/L/M/A | |
88-8f | ADD B/C/D/E/H/L/M/A | |
80-87 | ADC B/C/D/E/H/L/M/A | |
90-97 | SUB B/C/D/E/H/L/M/A | |
98-9F | SBB B/C/D/E/H/L/M/A | |
A0-A7 | ANA B/C/D/E/H/L/M/A | Aレジスタと各レジスタをの論理積を取る、らしい |
A8-AF | XRA B/C/D/E/H/L/M/A | Aレジスタと各レジスタをの排他的論理積を取る、らしい |
B0-B7 | ORA B/C/D/E/H/L/M/A | Aレジスタと各レジスタをのORを取る、らしい |
B8-BF | CMP B/C/D/E/H/L/M/A | |
C0 | RNZ | return NZ の事じゃね? |
C1 | POP B | |
C2 C4C3 | JNZ C4C3 | Z=1の時ジャンプ? |
C3 C7C4 | JMP C7C4 | 無条件絶対アドレス指定分岐かな? |
C4 c7c7 | CNZ C7C4 | ジャンプ系命令だろうけど何だろこれ… |
C5 | PUSH B | |
C6 C7 | ADI C7 | たぶんAレジスタに即値 C7 を足すって意味じゃね? |
C7 | RST 0 | |
C8 | RZ | return Z の事じゃね? |
C9 | RET | |
CA CCCB | JZ CCCB | |
CB xx | BIT b,(HL) Z ← (IX+d)b | |
CB 00 07 | RLC A with carry, left rotate, C< = A[0] |
|
CB 00 01-06 | RLC B/C/D/E/H/L/(HL) with carry, left rotate, C <= A[0] |
|
CB 00 0f | RRC A, right rotate, A[7] <= A[0] A[n] <= A[n+1] C <= A[0] CB 00 (0000 1sss) sss=111:A, 000:B,001:C,010:D,011:E,100:H,101:L |
|
CB 00 08-0F | RRC B/C/D/E/H/L/M/A | |
CC 23CB | CZ 23cb | Call when Z の事じゃね? |
CD CFCE | CALL CFCE | |
CE CF | ACI CF | |
CF | RST 1 | |
D0 | RNC | return NC の事じゃね? |
D1 | POP D | |
D2 D4D3 | JNC D4D3 | |
D3 D4 | OUT D4 | |
D4 E3DC | CNC E3DC | call when C=1じゃね? |
D5 | push D | |
D6 D7 | SUI D7 | sub r の事らしい A <- A - 0xXX |
D7 | RST 2 | |
D8 | RC | return When C=1 の事じゃね? |
D9 | exx, BC<->BC',DE<->DE',HL<->HL' を行う。非公開命令じゃん? |
|
DA DCDB | JC DCDB | |
db dc | IN DC | JC DCDB |
DC c4e3 | CC c4e3 | call when C=1じゃないの? |
DD 21 nn MM | LD IX,MMnn | レジスタIX <=固定値 0xMMnn IX <= 0xMMnn |
DD 22 nn MM | LD IX,MMnn | メモリ(アドレス直接指定)<=レジスタの値 (0xMMnn) <= IX[7:0] (0xMMnn+1) <= IX[15:8] ちょっと変わってるなぁコレ。レジスタIXの値を メモリ 0xMMnn に書き込むらしい |
DD 2A nn MM | LD IX,(MMnn) | レジスタ <= メモリ(アドレス直接指定) IX[7:0] <= (MMnn) IX[15:8] <= (MMnn+1) |
DD 36 dd nn | LD (IX+0xdd),nn | メモリ(IX+オフセット指定) <= 即値 0xnn (IX+0xdd) <= 0xnn |
DD 70-75/77 dd | LD (IX+0xdd),B/C/D/E/H/L/A | メモリ(IX+オフセット指定) <= レジスタ (IX + 0xdd) <= A |
DE | (調査ミス、抜け) | |
DF | SBI DF(調査ミス) | |
E0 | RPO | Return POじゃね? |
E1 | POP H | |
E2 E4E3 | JPO E4E3 | jmp when PO |
E3 | (調査ミス、抜け) | |
E4 | CPO e7e3 | Call when PO の事じゃね? |
E5 | PUSH H | |
E6 e7 | ANI e7 | And n. A <- A and n |
E7 | RST 4 | |
E8 | RPE | return PE の事じゃね? |
E9 | PCHL | jmp hl. PC <- HLのこと |
Ea eceb | jpe eceb | |
EB | XCHG | H<->D,L<->E |
E9 | PCHL | jmp hl PC <- HLのこと |
Ea eceb | jpe eceb | jump when PE=1 じゃね? |
EB | XCHG | H<->D,L<->E |
ec efeb | CPE efeb | CALL when PE=1 じゃね? |
Ed xx | ??? | IN r,(C)相当らしい 11101101 01DDD000 |
ee ef | xri ef | xor xx. A <- A xor xx |
EF | RST 5 | |
f0 | RP | return when P...じゃないのかな? |
F1 | POP PSW | pop AF という事らしい。 |
F2 F4F3 | JP F4F3 | |
F3 | DI | Disable Interrpt flag(I<=0) |
f4 F7F3 | CP f7f3 | |
F5 | PUSH PSW | push AF という事らしい。 |
F6 f7 | ORI F7 | |
F7 | RST 6 | restart命令 |
f8 | RM | なんだろこれw多分 returns memory(HL)って事だろうね |
F9 | SPHL | exchange SP <-> HL って事じゃないの |
fa fcfb | JM FCFB | Jamp memory's address って事だろうね |
FB | EI | |
fc fffb | CM fffb | call memory fffb 番地に書いてあるアドレス >って事じゃないの |
FD 2A | ??? | LD IY,nnmm IY <= nnmm あってんのかなこれ・・・怪しいw |
FD 21 nn MM | ??? | LD IY,MMnn レジスタIY <=固定値 0xMMnn IY <= 0xMMnn |
FD 22 nn MM | ??? | LD (MMnn),IY メモリ(アドレス直接指定)<=レジスタの値 (0xMMnn) <= IY[7:0] (0xMMnn+1) <= IY[15:8] |
FD 2A nn MM | ??? | LD IY,(MMnn) レジスタ <= メモリ(アドレス直接指定) IY[7:0] <= (MMnn) IY[15:8] <= (MMnn+1) |
FD 36 dd nn | ??? | (IY+0xdd),nn メモリ(IY+オフセット指定) <= 即値 0xnn (IY+0xdd) <= 0xnn |
FD 77/70-75 dd | ??? | LD (IY+0xdd),A/B/C/D/E/H/L メモリ(IY+オフセット指定) <= レジスタ (IY + 0xdd) <= A/B/C/D/E/H/L |
FD 7e nn | ??? | LD A,(IY+0xnn) レジスタ<= メモリ(IY+オフセット指定) A <= (IY + 0xnn) |
FD 46/4e/56/5e/66/6e nn | ??? | LD B/C/D/E/H/L,(IY+0xnn) (IY系未検証) |
FE ff | CPI ff | |
FF | RST 7 | restart命令。int命令だけどフラグは保存しないらしい SPにはPCを保存するらしい ジャンプ先は8かけるn? |
mov | a, m | (HL) -> a の事らしいw |
mov | m, a | a -> (HL) の事らしいw |
LDA | 0000 | 0000番地をAに読み込む、という事らしいw |
LXI | H,0 | HL <= 0000 となるらしい。 |
LXI | D,ffff | DE <= ffff |
LHLD | 2c2b | 0x2c2b番地からLHレジスタに読み込み、らしいw |
mvi | a,12 | A <= 12 /td> |
INR | A | A <= A + 1 |
DCR | A | A <= A - 1 |
ANA | B | A <= A and B |
cpi | 34 | A - 34 の結果をフラグレジスタにセット |
jmp | XXXX | XXXX番地にジャンプ |
レジスタ <= 数値セット 命令 |
MVI B/C/D/E/H/L/M/A,12 | B/C/D/E/H/L/(HL)/A <= 0x12 |
LXI B/D/H/SP,0302 | BC/DE/HL/SP <= 0x0302 16bit | |
レジスタ <= メモリ、 ロード命令 |
LDA 0000 | 0000番地からAに読み込む、という事らしい |
LHLD 2c2b | 0x2c2b番地からLHレジスタに読み込み、らしい | |
LDAX B/D | A <= (BC)/(DE) | |
SHLD 2423 | (2423) <= L, (2423+1) <= H | |
メモリ <= レジスタ、 ストア命令 |
STA 1234 | 0x1234番地にAレジスタの値を書き込む |
STAX B/D | (BC)/(DE) <= A | |
インクリメント デクリメント命令 |
INR B/C/D/E/H/L/M/A | B/C/D/E/H/L/(HL)/A <= B/C/D/E/H/L/(HL)/A+1 | DCR B/C/D/E/H/L/M/A | B/C/D/E/H/L/(HL)/A <= B/C/D/E/H/L/(HL)/A-1 |
INX B/D/H/SP | BC/DE/SP <= BC/DE/HL/SP+1 | |
DCX B/D/H/SP | BC/DE/SP <= BC/DE/HL/SP-1 | |
シフト命令 | RAL | A <= A<<1 |
RAR | A <= A>>1 | RRC | A <= A>>1 | Carry8かな… |
mvi | a,12 | |
cpi | 11 | |
jnc | 7ffc | 7ffc に飛ぶ。 |
rst 7 | 7 |
mvi | a,11 | |
cpi | 12 | |
jnc | 7ffc | |
jmp | c007 | c007 の無限ループになる。 |
mon ac000 mvi b,40 in 9 ana b cpi 40 jnz c002 rst 7 (リターンで入力モード抜ける) gc000 |