3 Copyright (C) 1989-1995 Alan R. Baldwin
4 721 Berkeley St., Kent, Ohio 44240
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the
8 Free Software Foundation; either version 3, or (at your option) any
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 * 28-Oct-97 Ported from 8085 to 8051 by John Hartman
21 * 30-Jan-98 JLH: add memory-space flags for .AREA
35 { NULL, "CON", S_ATYP, 0, A_CON},
36 { NULL, "OVR", S_ATYP, 0, A_OVR},
37 { NULL, "REL", S_ATYP, 0, A_REL},
38 { NULL, "ABS", S_ATYP, 0, A_ABS},
39 { NULL, "NOPAG", S_ATYP, 0, A_NOPAG},
40 { NULL, "PAG", S_ATYP, 0, A_PAG},
42 { NULL, "CODE", S_ATYP, 0, A_CODE},
43 { NULL, "DATA", S_ATYP, 0, A_DATA},
44 { NULL, "XDATA", S_ATYP, 0, A_XDATA},
45 { NULL, "BIT", S_ATYP, 0, A_BIT},
47 { NULL, ".byte", S_BYTE, 0, 0},
48 { NULL, ".db", S_BYTE, 0, 0},
49 { NULL, ".word", S_WORD, 0, 0},
50 { NULL, ".dw", S_WORD, 0, 0},
51 { NULL, ".ascii", S_ASCII, 0, 0},
52 { NULL, ".asciz", S_ASCIZ, 0, 0},
53 { NULL, ".blkb", S_BLK, 0, 1},
54 { NULL, ".ds", S_BLK, 0, 1},
55 { NULL, ".blkw", S_BLK, 0, 2},
56 { NULL, ".page", S_PAGE, 0, 0},
57 { NULL, ".title", S_TITLE, 0, 0},
58 { NULL, ".sbttl", S_SBTL, 0, 0},
59 { NULL, ".globl", S_GLOBL, 0, 0},
60 { NULL, ".area", S_DAREA, 0, 0},
61 { NULL, ".even", S_EVEN, 0, 0},
62 { NULL, ".odd", S_ODD, 0, 0},
63 { NULL, ".if", S_IF, 0, 0},
64 { NULL, ".else", S_ELSE, 0, 0},
65 { NULL, ".endif", S_ENDIF, 0, 0},
66 { NULL, ".include", S_INCL, 0, 0},
67 { NULL, ".radix", S_RADIX, 0, 0},
68 { NULL, ".org", S_ORG, 0, 0},
69 { NULL, ".module", S_MODUL, 0, 0},
70 { NULL, ".ascis", S_ASCIS, 0, 0},
71 { NULL, ".flat24", S_FLAT24, 0, 0},
72 { NULL, ".optsdcc", S_OPTSDCC, 0, 0},
76 { NULL, "a", S_A, 0, A},
77 { NULL, "ab", S_AB, 0, 0},
78 { NULL, "dptr", S_DPTR, 0, DPTR},
79 { NULL, "pc", S_PC, 0, PC},
80 { NULL, "r0", S_REG, 0, R0},
81 { NULL, "r1", S_REG, 0, R1},
82 { NULL, "r2", S_REG, 0, R2},
83 { NULL, "r3", S_REG, 0, R3},
84 { NULL, "r4", S_REG, 0, R4},
85 { NULL, "r5", S_REG, 0, R5},
86 { NULL, "r6", S_REG, 0, R6},
87 { NULL, "r7", S_REG, 0, R7},
89 { NULL, "nop", S_INH, 0, 0x00},
90 { NULL, "ret", S_INH, 0, 0x22},
91 { NULL, "reti", S_INH, 0, 0x32},
93 { NULL, "ajmp", S_JMP11, 0, 0x01},
94 { NULL, "acall", S_JMP11, 0, 0x11},
95 { NULL, "ljmp", S_JMP16, 0, 0x02},
96 { NULL, "lcall", S_JMP16, 0, 0x12},
98 { NULL, "rr", S_ACC, 0, 0x03},
99 { NULL, "rrc", S_ACC, 0, 0x13},
100 { NULL, "rl", S_ACC, 0, 0x23},
101 { NULL, "rlc", S_ACC, 0, 0x33},
102 { NULL, "swap", S_ACC, 0, 0xC4},
103 { NULL, "da", S_ACC, 0, 0xD4},
105 { NULL, "inc", S_TYP1, 0, 0x00},
106 { NULL, "dec", S_TYP1, 0, 0x10},
108 { NULL, "add", S_TYP2, 0, 0x20},
109 { NULL, "addc", S_TYP2, 0, 0x30},
110 { NULL, "subb", S_TYP2, 0, 0x90},
112 { NULL, "orl", S_TYP3, 0, 0x40},
113 { NULL, "anl", S_TYP3, 0, 0x50},
114 { NULL, "xrl", S_TYP3, 0, 0x60},
116 { NULL, "xch", S_TYP4, 0, 0xC0},
118 { NULL, "mov", S_MOV, 0, 0x00},
120 { NULL, "jbc", S_BITBR, 0, 0x10},
121 { NULL, "jb", S_BITBR, 0, 0x20},
122 { NULL, "jnb", S_BITBR, 0, 0x30},
124 { NULL, "jc", S_BR, 0, 0x40},
125 { NULL, "jnc", S_BR, 0, 0x50},
126 { NULL, "jz", S_BR, 0, 0x60},
127 { NULL, "jnz", S_BR, 0, 0x70},
128 { NULL, "sjmp", S_BR, 0, 0x80},
130 { NULL, "cjne", S_CJNE, 0, 0xB0},
131 { NULL, "djnz", S_DJNZ, 0, 0xD0},
132 { NULL, "jmp", S_JMP, 0, 0x73},
133 { NULL, "movc", S_MOVC, 0, 0x83},
134 { NULL, "movx", S_MOVX, 0, 0x00},
135 { NULL, "div", S_AB, 0, 0x84},
136 { NULL, "mul", S_AB, 0, 0xA4},
137 { NULL, "clr", S_ACBIT, 0, 0xC2},
138 { NULL, "cpl", S_ACBIT, 0, 0xB2},
139 { NULL, "setb", S_SETB, 0, 0xD2},
140 { NULL, "push", S_DIRECT, 0, 0xC0},
141 { NULL, "pop", S_DIRECT, 0, 0xD0},
142 { NULL, "xchd", S_XCHD, S_END, 0xD6}
145 struct PreDef preDef[] = {