SHOW:
|
|
- or go back to the newest paste.
1 | ------------------------------------------------------------------------------------------------------------------------------------------- | |
2 | Multiple CPU Assembly Mnemonic Table v0.1 210299/GPZ-HIT | |
3 | ------------------------------------------------------------------------------------------------------------------------------------------- | |
4 | ||
5 | Registers: | |
6 | ---------- | |
7 | ||
8 | A : akku | |
9 | F : flag-register | |
10 | ||
11 | B,C,D,E,H,L : 8080/z80 registers | |
12 | X,Y : 6502/6510 index registers | |
13 | ||
14 | SP : 8080/z80 Stack Pointer | |
15 | AF,BC,DE,HL : 8080/z80 register pairs | |
16 | ||
17 | PSW : alias for the AF register pair on 8080 | |
18 | M : alias for the HL register pair on 8080 | |
19 | ||
20 | Flags: | |
21 | ------ | |
22 | ||
23 | Z : zero flag | |
24 | C : carry flag | |
25 | H : 8080/z80 half-carry flag (carry from least significant nibble) | |
26 | N : 6502 negative (sign) flag | |
27 | 8080/z80 substract flag (?!) | |
28 | ||
29 | Arguments: | |
30 | ---------- | |
31 | ||
32 | x8 : 8 bit constant that is implied with the opcode | |
33 | ||
34 | p8 : 8 bit Port-Address | |
35 | ||
36 | r8,r8' : one of the 8 bit registers | |
37 | r16,r16' : one of the register-pairs/16 bit registers | |
38 | ||
39 | m8,m8' : 8 bit memory adress or offset (eg zeropage adressing modes) | |
40 | i8,i8' : 8 bit immediate value | |
41 | ||
42 | m16,m16' : 16 bit memory adress | |
43 | i16,i16' : 16 bit immediate value | |
44 | ||
45 | markers: | |
46 | -------- | |
47 | ||
48 | ~ : opcode doesnt exactly match the comparison | |
49 | * : opcode is undocumented ('illegal') | |
50 | ||
51 | ------------------------------------------------------------------------------------------------------------------------------------------- | |
52 | ||
53 | Gameboy note: | |
54 | ------------- | |
55 | ||
56 | zero-page location: $ff00-$ffff (only $ff80-$ffff useable) | |
57 | stack-location: set by user, SP after reset: $ffff | |
58 | opcode-syntax referring to: Rednex Gameboy Development System (asMotor of RGBDS) | |
59 | ||
60 | 6502 note: | |
61 | ---------- | |
62 | ||
63 | since there is no HL register for pointers, absolute memory adresses are used | |
64 | instead. Also 6502 cpu's dont have the (limited) support for 16-bit stuff like | |
65 | some other 8 bit cpu's (aka register-pairs) so respective opcodes work in 8 bit | |
66 | only. | |
67 | ||
68 | zero-page location: $0000-$00ff (only $0002-$00ff useable) | |
69 | stack-location: $0100-$01ff (fixed), SP after reset: $01ff | |
70 | opcode-syntax referring to: Omikron Turbo Assembler (c64) | |
71 | ||
72 | ------------------------------------------------------------------------------------------------------------------------------------------- | |
73 | ||
74 | ||
75 | 8080 Z80 Gameboy(~z80) 6502/6510 | |
76 | ------ ------ --------------- ----------- | |
77 | ||
78 | loading/storing data: | |
79 | --------------------- | |
80 | MVI r8 [i8] LD r8, i8 LD r8, i8 LDA #i8 / LDX #i8 / LDY #i8 | |
81 | MOV r8, r8' LD r8, r8' LD r8, r8' TAX / TXA / TAY / TYA / TXS / TSX | |
82 | ||
83 | LDA [m8] [m8'] LD A, (m16) LD A, [m16] LDA m16 | |
84 | LDAX B LD A, (BC) LD A, [BC] - | |
85 | LDAX D LD A, (DE) LD A, [DE] - | |
86 | LHLD [m8] [m8'] LD HL, (m16) LD HL, [m16] - | |
87 | LXI B [i8] [i8'] LD BC, i16 LD BC, i16 - | |
88 | LDID [i8] [i8'] LD DE, i16 LD DE, i16 - | |
89 | LXI H [i8] [i8'] LD HL, i16 LD HL, i16 - | |
90 | ||
91 | STA [m8] [m8'] LD (m16), A LD [m16], A STA m16 | |
92 | SHLD [m8] [m8'] LD (m16), HL LD [m16], HL - | |
93 | STAX B LD (BC), A LD [BC], A - | |
94 | STAX D LD (DE), A LD [DE], A - | |
95 | ||
96 | MOV M, r8 LD (HL), r8 LD [HL], r8 - | |
97 | MOV r8, M LD r8, (HL) LD r8, [HL] - | |
98 | ||
99 | MVI M [i8] LD (HL), i8 LD [HL], i8 - | |
100 | ||
101 | store via HL and inc. HL - - LDI [HL],A - | |
102 | load via HL and inc. HL - - LDI A,[HL] - | |
103 | ||
104 | store via HL and dec. HL - - LDD [HL],A - | |
105 | load via HL and dec. HL - - LDD A,[HL] - | |
106 | ||
107 | load from zeropage - - LDH A,[$ff00+m8] LDA $00+m8 | |
108 | store to zeropage - - LDH [$ff00+m8],A STA $00+m8 | |
109 | ||
110 | load indexed from zeropage - - LD A,[$ff00+C] LDA $00,Y | |
111 | store indexed to zeropage - - LD [$ff00+C],A STA $00,Y | |
112 | ||
113 | ||
114 | logical instructions: | |
115 | --------------------- | |
116 | logical AND ANA M AND (HL) AND [HL] ~AND m16 | |
117 | " ANA r8 AND r8 AND r8 - | |
118 | " ANI [i8] AND i8 AND i8 AND #i8 | |
119 | logical OR ORA M OR (HL) OR [HL] ~OR m16 | |
120 | " ORA r8 OR r8 OR r8 - | |
121 | " ORI [i8] OR i8 OR i8 ORA #i8 | |
122 | logical EXCLUSIVE OR XRA M XOR (HL) XOR [HL] ~EOR m16 | |
123 | " XRA r8 XOR r8 XOR r8 - | |
124 | " XRI [i8] XOR i8 XOR i8 EOR #i8 | |
125 | ||
126 | arithmetic instructions: | |
127 | ------------------------ | |
128 | dec. byte in memory - - DEC [HL] ~DEC m16 | |
129 | dec. register DCR r8 DEC r8 DEC r8 DEX / DEY | |
130 | dec. register-pair DCX B DEC BC DEC BC - | |
131 | " DCX D DEC DE DEC DE - | |
132 | " DCX H DEC HL DEC HL - | |
133 | ||
134 | inc. byte in memory INR M INC (HL) INC [HL] ~INC m16 | |
135 | inc. register INR r8 INC r8 INC r8 INX / INY | |
136 | inc. register-pair INX B INC BC INC BC - | |
137 | " INX D INC DE INC DE - | |
138 | " INX H INC HL INC HL - | |
139 | ||
140 | add with carry ACI [i8] ADC A, i8 ADC A, i8 ADC #i8 | |
141 | " ADC M ADC A, (HL) ADC A, [HL] ~ADC m16 | |
142 | " ADC r8 ADC A, r8 ADC A, r8 - | |
143 | ||
144 | add ADD M ADD A, (HL) ADD A, [HL] ~CLC ; ADC m16 | |
145 | " ADD r8 ADD A, r8 ADD A, r8 - | |
146 | " ADI [i8] ADD A, i8 ADD A, i8 CLC ; ADC #i8 | |
147 | " DAD B ADD HL, BC ADD HL, BC - | |
148 | " DAD D ADD HL, DE ADD HL, DE - | |
149 | " DAD H ADD HL, HL ADD HL, HL - | |
150 | ||
151 | substract with carry SBB M SBC A, (HL) SBC A, [HL] SBC m16 | |
152 | " SBB r8 SBC A, r8 SBC A, r8 - | |
153 | " SBI [i8] SBC A, i8 SBC A, i8 SBC #i8 | |
154 | ||
155 | substract SUB M SUB (HL) SUB [HL] ~SEC ; SBC m16 | |
156 | " SUB r8 SUB r8 SUB r8 - | |
157 | " SUI [i8] SUB i8 SUB i8 SEC ; SBC #i8 | |
158 | ||
159 | ||
160 | compares: | |
161 | --------- | |
162 | comp. with memory CMP M CP (HL) CP [HL] ~CMP m16 | |
163 | comp. with register CMP r8 CP r8 CP r8 - | |
164 | comp. with immediate byte CPI [i8] CP i8 CP i8 CMP #i8 | |
165 | ||
166 | bit-shifts: | |
167 | ----------- | |
168 | shift left with Carry RAL RLA RLA ROL A | |
169 | " - - RL r8 - | |
170 | shift right with Carry RAR RRA RRA ROR A | |
171 | " - - RR r8 - | |
172 | shift left - - SLA ASL A | |
173 | shift right - - SRL LSR A | |
174 | RLC RLCA RLCA - | |
175 | - - RLC r8 - | |
176 | RRC RRCA RRCA - | |
177 | - - RRC r8 - | |
178 | - - SRA - | |
179 | ||
180 | misc operations on registers: | |
181 | ----------------------------- | |
182 | Complement A CMA CPL CPL EOR #$ff | |
183 | Decimal Adjust A DAA DAA DAA - | |
184 | Swap low and high nibble - - SWAP r8 - | |
185 | exchange DE and HL XCHG EX DE, HL - - | |
186 | ||
187 | setting/resetting flags: | |
188 | ------------------------ | |
189 | Set Carry Flag STC SCF SCF SEC | |
190 | Clear Carry Flag STC ; CMC SCF ; CCF SCF ; CCF CLC | |
191 | Complement Carry Flag CMC CCF CCF - | |
192 | ||
193 | far branch: | |
194 | ----------- | |
195 | jump to address JMP [m8] [m8'] JP m16 JP m16 JMP m16 | |
196 | jump indirekt via pointer PCHL JP (HL) JP [HL] ~JMP (m16) | |
197 | ||
198 | far conditional branch: | |
199 | ----------------------- | |
200 | branch if Z==1 JZ [m8] [m8'] JP Z, m16 JP Z, m16 BNE *+3 ; JMP m16 | |
201 | Z==0 JNZ [m8] [m8'] JP NZ, m16 JP NZ, m16 BEQ *+3 ; JMP m16 | |
202 | C==1 JC [m8] [m8'] JP C, m16 JP C, m16 BCC *+3 ; JMP m16 | |
203 | C==0 JNC [m8] [m8'] JP NC, m16 JP NC, m16 BCS *+3 ; JMP m16 | |
204 | JM [m8] [m8'] JP M, m16 - - | |
205 | JP [m8] [m8'] JP P, m16 - - | |
206 | JPE [m8] [m8'] JP PE, m16 - - | |
207 | JPO [m8] [m8'] JP PO, m16 - - | |
208 | ||
209 | near conditional branch: | |
210 | ------------------------ | |
211 | branch if Z==1 - - JR Z, m16 BEQ m16 | |
212 | Z==0 - - JR NZ, m16 BNE m16 | |
213 | C==1 - - JR C, m16 BCS m16 | |
214 | C==0 - - JR NC, m16 BCC m16 | |
215 | - - - - | |
216 | - - - - | |
217 | - - - - | |
218 | - - - - | |
219 | ||
220 | subroutine call: | |
221 | ---------------- | |
222 | CALL [m8] [m8'] CALL m16 CALL m16 JSR m16 | |
223 | ||
224 | conditional subroutine call: | |
225 | ---------------------------- | |
226 | call if Z==1 CZ [m8] [m8'] CALL Z, m16 CALL Z, m16 BNE *+3 ; JSR m16 | |
227 | Z==0 CNZ [m8] [m8'] CALL NZ, m16 CALL NZ, m16 BEQ *+3 ; JSR m16 | |
228 | C==1 CC [m8] [m8'] CALL C, m16 CALL C, m16 BCC *+3 ; JSR m16 | |
229 | C==0 CNC [m8] [m8'] CALL NC, m16 CALL NC, m16 BCS *+3 ; JSR m16 | |
230 | CM [m8] [m8'] CALL M, m16 - - | |
231 | CP [m8] [m8'] CALL P, m16 - - | |
232 | CPE [m8] [m8'] CALL PE, m16 - - | |
233 | CPO [m8] [m8'] CALL PO ,m16 - - | |
234 | ||
235 | subroutine return: | |
236 | ------------------ | |
237 | RET RET RET RTS | |
238 | ||
239 | conditional subroutine return: | |
240 | ------------------------------ | |
241 | return if Z==1 RZ RET Z RET Z BNE *+1 ; RTS | |
242 | Z==0 RNZ RET NZ RET NZ BEQ *+1 ; RTS | |
243 | C==1 RC RET C RET C BCC *+1 ; RTS | |
244 | C==0 RNC RET NC RET NC BCS *+1 ; RTS | |
245 | RM RET M - - | |
246 | RP RET P - - | |
247 | RPE RET PE - - | |
248 | RPO RET PO - - | |
249 | ||
250 | interupt related instructions: | |
251 | ------------------------------ | |
252 | set irq flag (irq's off) DI DI DI SEI | |
253 | clear irq flag (irq's on) EI EI EI CLI | |
254 | issue a hard irq RST RST x8 RST x8 BRK | |
255 | ||
256 | i/o specific: | |
257 | ------------- | |
258 | Get Byte from In-Port IN [p8] IN A, (p8) - - | |
259 | Send Byte to Out-Port OUT [p8] OUT (p8), A - - | |
260 | ||
261 | stack related: | |
262 | -------------- | |
263 | put reg. on Stack PUSH B PUSH BC PUSH BC - | |
264 | PUSH D PUSH DE PUSH DE - | |
265 | PUSH H PUSH HL PUSH HL - | |
266 | PUSH PSW PUSH AF PUSH AF PHA ; PHP | |
267 | ||
268 | get reg. from Stack POP B POP BC POP BC - | |
269 | POP D POP DE POP DE - | |
270 | POP H POP HL POP HL - | |
271 | POP PSW POP AF POP AF PLP ; PLA | |
272 | ||
273 | load Stack Pointer LXI SP [i8] [i8'] LD SP, i16 LD SP, i16 LDX #i8 ; TXS | |
274 | SPHL LD SP, HL LD SP, HL - | |
275 | - - LD [m16], SP - | |
276 | - - LD HL,SP+n - | |
277 | ||
278 | dec. Stack-Pointer DCX SP DEC SP DEC SP TSX ; DEX ; TXS | |
279 | inc. Stack-Pointer INX SP INC SP INC SP TSX ; INX ; TXS | |
280 | ||
281 | DAD SP ADD HL, SP ADD HL, SP - | |
282 | add to Stack-Pointer - - ADD SP, i8 TSX ; TXA ; CLC ; ADC #i8 ; TAX ; TXS | |
283 | ||
284 | XTHL EX (SP), HL - - | |
285 | ||
286 | misc: | |
287 | ----- | |
288 | No Operation (Delay) NOP NOP NOP NOP | |
289 | halt operation (until irq) HALT HLT HLT *JAM | |
290 | stop cpu (until exception) - - STOP *JAM | |
291 | ||
292 | ------------------------------------------------------------------------------------------------------------------------------------------- |