4 * (C) Copyright 1989,1990
11 * 28-Oct-97 Ported from 8085 to 8051 by John Hartman
12 * 30-Jan-98 JLH: add memory-space flags for .AREA
26 { NULL, "CON", S_ATYP, 0, A_CON},
27 { NULL, "OVR", S_ATYP, 0, A_OVR},
28 { NULL, "REL", S_ATYP, 0, A_REL},
29 { NULL, "ABS", S_ATYP, 0, A_ABS|A_OVR},
30 { NULL, "NOPAG", S_ATYP, 0, A_NOPAG},
31 { NULL, "PAG", S_ATYP, 0, A_PAG},
33 { NULL, "CODE", S_ATYP, 0, A_CODE},
34 { NULL, "DATA", S_ATYP, 0, A_DATA},
35 { NULL, "XDATA", S_ATYP, 0, A_XDATA},
36 { NULL, "BIT", S_ATYP, 0, A_BIT},
38 { NULL, ".byte", S_BYTE, 0, 0},
39 { NULL, ".db", S_BYTE, 0, 0},
40 { NULL, ".word", S_WORD, 0, 0},
41 { NULL, ".dw", S_WORD, 0, 0},
42 { NULL, ".ascii", S_ASCII, 0, 0},
43 { NULL, ".asciz", S_ASCIZ, 0, 0},
44 { NULL, ".blkb", S_BLK, 0, 1},
45 { NULL, ".ds", S_BLK, 0, 1},
46 { NULL, ".blkw", S_BLK, 0, 2},
47 { NULL, ".page", S_PAGE, 0, 0},
48 { NULL, ".title", S_TITLE, 0, 0},
49 { NULL, ".sbttl", S_SBTL, 0, 0},
50 { NULL, ".globl", S_GLOBL, 0, 0},
51 { NULL, ".area", S_DAREA, 0, 0},
52 { NULL, ".even", S_EVEN, 0, 0},
53 { NULL, ".odd", S_ODD, 0, 0},
54 { NULL, ".if", S_IF, 0, 0},
55 { NULL, ".else", S_ELSE, 0, 0},
56 { NULL, ".endif", S_ENDIF, 0, 0},
57 { NULL, ".include", S_INCL, 0, 0},
58 { NULL, ".radix", S_RADIX, 0, 0},
59 { NULL, ".org", S_ORG, 0, 0},
60 { NULL, ".module", S_MODUL, 0, 0},
61 { NULL, ".ascis", S_ASCIS, 0, 0},
62 { NULL, ".flat24", S_FLAT24, 0, 0},
63 { NULL, ".optsdcc", S_OPTSDCC, 0, 0},
67 { NULL, "a", S_A, 0, A},
68 { NULL, "ab", S_AB, 0, 0},
69 { NULL, "dptr", S_DPTR, 0, DPTR},
70 { NULL, "pc", S_PC, 0, PC},
71 { NULL, "r0", S_REG, 0, R0},
72 { NULL, "r1", S_REG, 0, R1},
73 { NULL, "r2", S_REG, 0, R2},
74 { NULL, "r3", S_REG, 0, R3},
75 { NULL, "r4", S_REG, 0, R4},
76 { NULL, "r5", S_REG, 0, R5},
77 { NULL, "r6", S_REG, 0, R6},
78 { NULL, "r7", S_REG, 0, R7},
80 { NULL, "nop", S_INH, 0, 0x00},
81 { NULL, "ret", S_INH, 0, 0x22},
82 { NULL, "reti", S_INH, 0, 0x32},
84 { NULL, "ajmp", S_JMP11, 0, 0x01},
85 { NULL, "acall", S_JMP11, 0, 0x11},
86 { NULL, "ljmp", S_JMP16, 0, 0x02},
87 { NULL, "lcall", S_JMP16, 0, 0x12},
89 { NULL, "rr", S_ACC, 0, 0x03},
90 { NULL, "rrc", S_ACC, 0, 0x13},
91 { NULL, "rl", S_ACC, 0, 0x23},
92 { NULL, "rlc", S_ACC, 0, 0x33},
93 { NULL, "swap", S_ACC, 0, 0xC4},
94 { NULL, "da", S_ACC, 0, 0xD4},
96 { NULL, "inc", S_TYP1, 0, 0x00},
97 { NULL, "dec", S_TYP1, 0, 0x10},
99 { NULL, "add", S_TYP2, 0, 0x20},
100 { NULL, "addc", S_TYP2, 0, 0x30},
101 { NULL, "subb", S_TYP2, 0, 0x90},
103 { NULL, "orl", S_TYP3, 0, 0x40},
104 { NULL, "anl", S_TYP3, 0, 0x50},
105 { NULL, "xrl", S_TYP3, 0, 0x60},
107 { NULL, "xch", S_TYP4, 0, 0xC0},
109 { NULL, "mov", S_MOV, 0, 0x00},
111 { NULL, "jbc", S_BITBR, 0, 0x10},
112 { NULL, "jb", S_BITBR, 0, 0x20},
113 { NULL, "jnb", S_BITBR, 0, 0x30},
115 { NULL, "jc", S_BR, 0, 0x40},
116 { NULL, "jnc", S_BR, 0, 0x50},
117 { NULL, "jz", S_BR, 0, 0x60},
118 { NULL, "jnz", S_BR, 0, 0x70},
119 { NULL, "sjmp", S_BR, 0, 0x80},
121 { NULL, "cjne", S_CJNE, 0, 0xB0},
122 { NULL, "djnz", S_DJNZ, 0, 0xD0},
123 { NULL, "jmp", S_JMP, 0, 0x73},
124 { NULL, "movc", S_MOVC, 0, 0x83},
125 { NULL, "movx", S_MOVX, 0, 0x00},
126 { NULL, "div", S_AB, 0, 0x84},
127 { NULL, "mul", S_AB, 0, 0xA4},
128 { NULL, "clr", S_ACBIT, 0, 0xC2},
129 { NULL, "cpl", S_ACBIT, 0, 0xB2},
130 { NULL, "setb", S_SETB, 0, 0xD2},
131 { NULL, "push", S_DIRECT, 0, 0xC0},
132 { NULL, "pop", S_DIRECT, 0, 0xD0},
133 { NULL, "xchd", S_XCHD, S_END, 0xD6}
136 struct PreDef preDef[] = {