Code: Select all
; #############################################################################
; ## Disassembler 8085 ##
; #############################################################################
;
; Author: Vitaliy Poedinok aka Vital72
; License: MIT
; www: http://www.86rk.ru/
; e-mail: vital72@86rk.ru
; Version: 1.0
; Date: 07.02.24
OUT_HEX EQU 0F815h
OUT_CHAR EQU 0F809h
OUT_STR EQU 0F818h
OUT_ADDR EQU 0FB78h
CMP_DE_HL EQU 0F990h
MONITOR_PROMPT EQU 0F86Ch
DISASSM_BUFFER EQU 7633h
MNEMO_MOV EQU 0
MNEMO_MVI EQU 1
MNEMO_STAX EQU 2
MNEMO_LDAX EQU 3
MNEMO_STA EQU 4
MNEMO_LDA EQU 5
MNEMO_LXI EQU 6
MNEMO_SHLD EQU 7
MNEMO_LHLD EQU 8
MNEMO_PUSH EQU 9
MNEMO_POP EQU 10
MNEMO_SPHL EQU 11
MNEMO_XCHG EQU 12
MNEMO_XTHL EQU 13
MNEMO_IN EQU 14
MNEMO_OUT EQU 15
MNEMO_CMC EQU 16
MNEMO_STC EQU 17
MNEMO_CMA EQU 18
MNEMO_DAA EQU 19
MNEMO_INR EQU 20
MNEMO_DCR EQU 21
MNEMO_INX EQU 22
MNEMO_DCX EQU 23
MNEMO_ADD EQU 24
MNEMO_ADC EQU 25
MNEMO_SUB EQU 26
MNEMO_SBB EQU 27
MNEMO_ANA EQU 28
MNEMO_ORA EQU 29
MNEMO_XRA EQU 30
MNEMO_CMP EQU 31
MNEMO_ADI EQU 32
MNEMO_ACI EQU 33
MNEMO_SUI EQU 34
MNEMO_SBI EQU 35
MNEMO_ANI EQU 36
MNEMO_ORI EQU 37
MNEMO_XRI EQU 38
MNEMO_CPI EQU 39
MNEMO_DAD EQU 40
MNEMO_RLC EQU 41
MNEMO_RAL EQU 42
MNEMO_RRC EQU 43
MNEMO_RAR EQU 44
MNEMO_PCHL EQU 45
MNEMO_JMP EQU 46
MNEMO_CALL EQU 47
MNEMO_RST EQU 48
MNEMO_RET EQU 49
MNEMO_JNZ EQU 50
MNEMO_JZ EQU 51
MNEMO_JNC EQU 52
MNEMO_JC EQU 53
MNEMO_JPO EQU 54
MNEMO_JPE EQU 55
MNEMO_JP EQU 56
MNEMO_JM EQU 57
MNEMO_CNZ EQU 58
MNEMO_CZ EQU 59
MNEMO_CNC EQU 60
MNEMO_CC EQU 61
MNEMO_CPO EQU 62
MNEMO_CPE EQU 63
MNEMO_CP EQU 64
MNEMO_CM EQU 65
MNEMO_RNZ EQU 66
MNEMO_RZ EQU 67
MNEMO_RNC EQU 68
MNEMO_RC EQU 69
MNEMO_RPO EQU 70
MNEMO_RPE EQU 71
MNEMO_RP EQU 72
MNEMO_RM EQU 73
MNEMO_EI EQU 74
MNEMO_DI EQU 75
MNEMO_HLT EQU 76
MNEMO_NOP EQU 77
MNEMO_DSUB EQU 78
MNEMO_ARHL EQU 79
MNEMO_RLDE EQU 80
MNEMO_RIM EQU 81
MNEMO_SIM EQU 82
MNEMO_LDHI EQU 83
MNEMO_LDSI EQU 84
MNEMO_RSTV EQU 85
MNEMO_SHLX EQU 86
MNEMO_LHLX EQU 87
MNEMO_JNK EQU 88
MNEMO_JK EQU 89
MNEMO_OP_NONE EQU 0
MNEMO_OP_R8 EQU 1
MNEMO_OP_R16 EQU 2
MNEMO_OP_IM8 EQU 3
MNEMO_OP_IM16 EQU 4
MNEMO_OP_R8_IM8 EQU 5
MNEMO_OP_R16_IM16 EQU 6
MNEMO_OP_N EQU 7
MNEMO_OP_B_R8 EQU 8
MNEMO_OP_C_R8 EQU 9
MNEMO_OP_D_R8 EQU 10
MNEMO_OP_E_R8 EQU 11
MNEMO_OP_H_R8 EQU 12
MNEMO_OP_L_R8 EQU 13
MNEMO_OP_M_R8 EQU 14
MNEMO_OP_A_R8 EQU 15
MNEMO_REG8_B EQU 0
MNEMO_REG8_C EQU 1
MNEMO_REG8_D EQU 2
MNEMO_REG8_E EQU 3
MNEMO_REG8_H EQU 4
MNEMO_REG8_L EQU 5
MNEMO_REG8_M EQU 6
MNEMO_REG8_A EQU 7
MNEMO_REG16_B EQU 0
MNEMO_REG16_D EQU 1
MNEMO_REG16_H EQU 2
MNEMO_REG16_SP EQU 3
MNEMO_REG16_PSW EQU 4
.macro instr
db @1
db (@2 << 4) | @3
.endm
; =============================================================================
disassm:
push d
push h ; addr of first byte
lxi d, disassm_out
push d
mov e, m
mvi d, 0
inx h
push h
lxi h, disassm_table_8085
dad d
dad d
mov b, m ; mnemo
inx h
mov c, m ; operands
mov a, c
ani 0F0h
rrc
rrc
rrc
mov e, a
lxi h, disassm_op
dad d
mov e, m
inx h
mov d, m
xchg
xthl
mov a, c
ani 07h
lxi d, DISASSM_BUFFER
ret
disassm_op:
dw disassm_op_none, disassm_op_r8, disassm_op_r16, disassm_op_im8
dw disassm_op_im16, disassm_op_r8_im8, disassm_op_r16_im16, disassm_op_n
dw disassm_op_b_r8, disassm_op_c_r8, disassm_op_d_r8, disassm_op_e_r8
dw disassm_op_h_r8, disassm_op_l_r8, disassm_op_m_r8, disassm_op_a_r8
disassm_out:
pop d ; addr of first byte
push h ; addr of next byte after last
push b
xchg
mvi b, 4
call OUT_ADDR
mov a, m
inx h
dcr b
call OUT_HEX
call CMP_DE_HL
jnz $-9
mvi c, ' '
call OUT_CHAR
call OUT_CHAR
dcr b
jnz $-7
pop b
lxi h, disassm_mnemo_8085
mov e, b
mvi d, 0
dad d
dad d
dad d
dad d
mvi b, 4
mov c, m
call OUT_CHAR
inx h
dcr b
jnz $-6
mvi c, ' '
call OUT_CHAR
call OUT_CHAR
lxi h, DISASSM_BUFFER
call OUT_STR
pop h
pop d
call CMP_DE_HL
jnc MONITOR_PROMPT
jmp disassm
disassm_hex2str:
push psw
rrc
rrc
rrc
rrc
call $+4
pop psw
ani 0Fh
cpi 10
sbi '0' - 1
daa
stax d
inx d
ret
disassm_get_reg8:
push h
adi low (disassm_reg8_8085)
mov l, a
mvi a, 0
aci high (disassm_reg8_8085)
mov h, a
mov a, m
pop h
ret
disassm_op_r8:
call disassm_get_reg8
jmp disassm_lbl1
disassm_op_r16:
push h
push d
lxi h, disassm_reg16_8085
mov e, a
mvi d, 0
dad d
dad d
dad d
dad d
pop d
mov a, m
inx h
stax d
inx d
ana a
jnz $-5
pop h
ret
disassm_op_im8:
mov a, m
inx h
call disassm_hex2str
jmp disassm_op_none
disassm_op_im16:
inx h
mov a, m
call disassm_hex2str
dcx h
mov a, m
inx h
inx h
call disassm_hex2str
jmp disassm_op_none
disassm_op_r8_im8:
call disassm_get_reg8
stax d
inx d
mvi a, ','
stax d
inx d
mvi a, ' '
stax d
inx d
jmp disassm_op_im8
disassm_op_r16_im16:
call disassm_op_r16
dcx d
mvi a, ','
stax d
inx d
mvi a, ' '
stax d
inx d
jmp disassm_op_im16
disassm_op_n:
adi '0'
jmp disassm_lbl1
disassm_op_b_r8:
mvi a, 'B'
jmp disassm_op_a_r8 + 2
disassm_op_c_r8:
mvi a, 'C'
jmp disassm_op_a_r8 + 2
disassm_op_d_r8:
mvi a, 'D'
jmp disassm_op_a_r8 + 2
disassm_op_e_r8:
mvi a, 'E'
jmp disassm_op_a_r8 + 2
disassm_op_h_r8:
mvi a, 'H'
jmp disassm_op_a_r8 + 2
disassm_op_l_r8:
mvi a, 'L'
jmp disassm_op_a_r8 + 2
disassm_op_m_r8:
mvi a, 'M'
jmp disassm_op_a_r8 + 2
disassm_op_a_r8:
mvi a, 'A'
stax d
inx d
mvi a, ','
stax d
inx d
mvi a, ' '
stax d
inx d
mov a, c
ani 07h
call disassm_get_reg8
disassm_lbl1:
stax d
inx d
disassm_op_none:
xra a
stax d
ret
; =============================================================================
disassm_table_8085:
instr MNEMO_NOP, MNEMO_OP_NONE, 0
instr MNEMO_LXI, MNEMO_OP_R16_IM16, MNEMO_REG16_B
instr MNEMO_STAX, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_INX, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_B
instr MNEMO_RLC, MNEMO_OP_NONE, 0
instr MNEMO_DSUB, MNEMO_OP_NONE, 0
instr MNEMO_DAD, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_LDAX, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_DCX, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_C
instr MNEMO_RRC, MNEMO_OP_NONE, 0
instr MNEMO_ARHL, MNEMO_OP_NONE, 0
instr MNEMO_LXI, MNEMO_OP_R16_IM16, MNEMO_REG16_D
instr MNEMO_STAX, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_INX, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_D
instr MNEMO_RAL, MNEMO_OP_NONE, 0
instr MNEMO_RLDE, MNEMO_OP_NONE, 0
instr MNEMO_DAD, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_LDAX, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_DCX, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_E
instr MNEMO_RAR, MNEMO_OP_NONE, 0
instr MNEMO_RIM, MNEMO_OP_NONE, 0
instr MNEMO_LXI, MNEMO_OP_R16_IM16, MNEMO_REG16_H
instr MNEMO_SHLD, MNEMO_OP_IM16, 0
instr MNEMO_INX, MNEMO_OP_R16, MNEMO_REG16_H
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_H
instr MNEMO_DAA, MNEMO_OP_NONE, 0
instr MNEMO_LDHI, MNEMO_OP_IM8, 0
instr MNEMO_DAD, MNEMO_OP_R16, MNEMO_REG16_H
instr MNEMO_LHLD, MNEMO_OP_IM16, 0
instr MNEMO_DCX, MNEMO_OP_R16, MNEMO_REG16_H
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_L
instr MNEMO_CMA, MNEMO_OP_NONE, 0
instr MNEMO_SIM, MNEMO_OP_NONE, 0
instr MNEMO_LXI, MNEMO_OP_R16_IM16, MNEMO_REG16_SP
instr MNEMO_STA, MNEMO_OP_IM16, 0
instr MNEMO_INX, MNEMO_OP_R16, MNEMO_REG16_SP
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_M
instr MNEMO_STC, MNEMO_OP_NONE, 0
instr MNEMO_LDSI, MNEMO_OP_IM8, 0
instr MNEMO_DAD, MNEMO_OP_R16, MNEMO_REG16_SP
instr MNEMO_LDA, MNEMO_OP_IM16, 0
instr MNEMO_DCX, MNEMO_OP_R16, MNEMO_REG16_SP
instr MNEMO_INR, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_DCR, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_MVI, MNEMO_OP_R8_IM8, MNEMO_REG8_A
instr MNEMO_CMC, MNEMO_OP_NONE, 0
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_B_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_C_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_D_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_E_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_H_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_L_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_L
instr MNEMO_HLT, MNEMO_OP_NONE, 0
instr MNEMO_MOV, MNEMO_OP_M_R8, MNEMO_REG8_A
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_B
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_C
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_D
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_E
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_H
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_L
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_M
instr MNEMO_MOV, MNEMO_OP_A_R8, MNEMO_REG8_A
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_ADD, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_ADC, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_SUB, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_SBB, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_ANA, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_XRA, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_ORA, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_B
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_C
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_D
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_E
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_H
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_L
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_M
instr MNEMO_CMP, MNEMO_OP_R8, MNEMO_REG8_A
instr MNEMO_RNZ, MNEMO_OP_NONE, 0
instr MNEMO_POP, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_JNZ, MNEMO_OP_IM16, 0
instr MNEMO_JMP, MNEMO_OP_IM16, 0
instr MNEMO_CNZ, MNEMO_OP_IM16, 0
instr MNEMO_PUSH, MNEMO_OP_R16, MNEMO_REG16_B
instr MNEMO_ADI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 0
instr MNEMO_RZ, MNEMO_OP_NONE, 0
instr MNEMO_RET, MNEMO_OP_NONE, 0
instr MNEMO_JZ, MNEMO_OP_IM16, 0
instr MNEMO_RSTV, MNEMO_OP_NONE, 0
instr MNEMO_CZ, MNEMO_OP_IM16, 0
instr MNEMO_CALL, MNEMO_OP_IM16, 0
instr MNEMO_ACI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 1
instr MNEMO_RNC, MNEMO_OP_NONE, 0
instr MNEMO_POP, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_JNC, MNEMO_OP_IM16, 0
instr MNEMO_OUT, MNEMO_OP_IM8, 0
instr MNEMO_CNC, MNEMO_OP_IM16, 0
instr MNEMO_PUSH, MNEMO_OP_R16, MNEMO_REG16_D
instr MNEMO_SUI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 2
instr MNEMO_RC, MNEMO_OP_NONE, 0
instr MNEMO_SHLX, MNEMO_OP_NONE, 0
instr MNEMO_JC, MNEMO_OP_IM16, 0
instr MNEMO_IN, MNEMO_OP_IM8, 0
instr MNEMO_CC, MNEMO_OP_IM16, 0
instr MNEMO_JNK, MNEMO_OP_IM16, 0
instr MNEMO_SBI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 3
instr MNEMO_RPO, MNEMO_OP_NONE, 0
instr MNEMO_POP, MNEMO_OP_R16, MNEMO_REG16_H
instr MNEMO_JPO, MNEMO_OP_IM16, 0
instr MNEMO_XTHL, MNEMO_OP_NONE, 0
instr MNEMO_CPO, MNEMO_OP_IM16, 0
instr MNEMO_PUSH, MNEMO_OP_R16, MNEMO_REG16_H
instr MNEMO_ANI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 4
instr MNEMO_RPE, MNEMO_OP_NONE, 0
instr MNEMO_PCHL, MNEMO_OP_NONE, 0
instr MNEMO_JPE, MNEMO_OP_IM16, 0
instr MNEMO_XCHG, MNEMO_OP_NONE, 0
instr MNEMO_CPE, MNEMO_OP_IM16, 0
instr MNEMO_LHLX, MNEMO_OP_NONE, 0
instr MNEMO_XRI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 5
instr MNEMO_RP, MNEMO_OP_NONE, 0
instr MNEMO_POP, MNEMO_OP_R16, MNEMO_REG16_PSW
instr MNEMO_JP, MNEMO_OP_IM16, 0
instr MNEMO_DI, MNEMO_OP_NONE, 0
instr MNEMO_CP, MNEMO_OP_IM16, 0
instr MNEMO_PUSH, MNEMO_OP_R16, MNEMO_REG16_PSW
instr MNEMO_ORI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 6
instr MNEMO_RM, MNEMO_OP_NONE, 0
instr MNEMO_SPHL, MNEMO_OP_NONE, 0
instr MNEMO_JM, MNEMO_OP_IM16, 0
instr MNEMO_EI, MNEMO_OP_NONE, 0
instr MNEMO_CM, MNEMO_OP_IM16, 0
instr MNEMO_JK, MNEMO_OP_IM16, 0
instr MNEMO_CPI, MNEMO_OP_IM8, 0
instr MNEMO_RST, MNEMO_OP_N, 7
disassm_mnemo_8085:
db "MOV ", "MVI ", "STAX", "LDAX", "STA ", "LDA "
db "LXI ", "SHLD", "LHLD", "PUSH", "POP ", "SPHL", "XCHG", "XTHL"
db "IN ", "OUT "
db "CMC ", "STC ", "CMA ", "DAA ", "INR ", "DCR ", "INX ", "DCX "
db "ADD ", "ADC ", "SUB ", "SBB ", "ANA ", "ORA ", "XRA ", "CMP "
db "ADI ", "ACI ", "SUI ", "SBI ", "ANI ", "ORI ", "XRI ", "CPI "
db "DAD "
db "RLC ", "RAL ", "RRC ", "RAR "
db "PCHL", "JMP ", "CALL", "RST ", "RET "
db "JNZ ", "JZ ", "JNC ", "JC ", "JPO ", "JPE ", "JP ", "JM "
db "CNZ ", "CZ ", "CNC ", "CC ", "CPO ", "CPE ", "CP ", "CM "
db "RNZ ", "RZ ", "RNC ", "RC ", "RPO ", "RPE ", "RP ", "RM "
db "EI ", "DI ", "HLT ", "NOP "
db "DSUB", "ARHL", "RLDE", "RIM ", "SIM ", "LDHI", "LDSI"
db "RSTV", "SHLX", "LHLX", "JNK ", "JK "
disassm_reg8_8085:
db "BCDEHLMA"
disassm_reg16_8085:
db "B", 0, 0, 0, "D", 0, 0, 0, "H", 0, 0, 0, "SP", 0, 0, "PSW", 0
; =============================================================================