Intel 8080 assembler instruction.
Top-level assembly function. Everything cascades downward from here. Repeat the parsing twice. Pass 1 gathers symbols and their addresses/values. Pass 2 emits code.
Get a 16-bit address.
aci (0xce)
adc (0x88 + 8-bit register offset)
add (0x80 + 8-bit register offset)
Add a symbol to the symbol table.
adi (0xc6)
ana (0xa0 + 8-bit register offset)
ani (0xe6)
Check arguments.
call (0xcd)
cc (0xdc)
cm (0xfc)
cma (0x2f)
cmc (0x3f)
cmp (0xb8 + 8-bit register offset)
cnc (0xd4)
cnz (0xc4)
cp (0xf4)
cpe (0xec)
cpi (0xfe)
cpo (0xe4)
cz (0xcc)
daa (0x27)
dad (0x09 + 16 bit register offset)
Place a byte.
dcr (0x05 + 8 bit register offset)
dcx (0x0b + 16 bit register offset)
di (0xf3)
ei (0xfb)
Define a constant.
Nice error messages.
After all code is emitted, write it out to a file.
hlt (0x76)
in (0xdb)
out (0xd3)
Get an 8 or 16 bit immediate.
inr (0x04 + 8 bit register offset)
inx (0x03 + 16 bit register offset)
jc (0xda)
jm (0xfa)
jmp (0xc3)
jnc (0xd2)
jnz (0xc2)
jp (0xf2)
jpe (0xea)
jpo (0xe2)
jz (0xca)
lda (0x3a)
ldax (0x0a + 16 bit register offset)
lhld (0x2a)
lxi (0x01 + 16 bit register offset)
mov (0x40 + (8-bit register offset << 3) + 8-bit register offset We allow mov m, m (0x76) But that will result in HLT.
mvi (0x06 + (8 bit register offset << 3))
nop (0x00)
ora (0xb0 + 8-bit register offset)
Force updated the address counter.
ori (0xf6)
Take action depending on which pass this is.
pchl (0xe9)
pop (0xc1 + 16 bit register offset)
Figure out which op we have.
push (0xc5 + 16 bit register offset)
ral (0x17)
rar (0x1f)
rc (0xd8)
Return the 16 bit register offset.
Return the 8 bit register offset.
rcl (0x07)
rm (0xf8)
rnc (0xd0)
rnz (0xc0)
rp (0xf0)
rpe (0xe8)
rpo (0xe0)
rrc (0x0f)
rst (0xc7 + offset)
rz (0xc8)
sbb (0x98 + 8-bit register offset)
sbi (0xde)
shld (0x22)
sphl (0xf9)
sta (0x32)
stax (0x02 + 16 bit register offset)
stc (0x37)
sub (0x90 + 8-bit register offset)
sui (0xd6)
xchg (0xeb)
xra (0xa8 + 8-bit register offset)
xri (0xee)
xthl (0xe3)
Address for labels.
Line number.
Output stored in memory until we're finished.
Pass.
Symbol table is an array of entries.
Symbol table.
Intel 8080 assembler.