⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d52table.c

📁 這是一個8051的模擬器 以java寫成
💻 C
📖 第 1 页 / 共 2 页
字号:

/*
 * D52 8052 Disassembler
 * Copyright (C) 1995-2004 by Jeffery L. Post
 * theposts <AT> pacbell <DOT> net
 *
 * d52table.c - Mnemonic Table
 *
 * Version 3.3.5 - 11/27/04
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *	GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 */

#include	<stdio.h>

#include	"d52.h"

struct mnementry mnemtbl[256] = {
   {"nop "},      {"ajmp "},     {"ljmp "},     {"rr a"},           // 00 - 03
   {"inc a"},     {"inc "},      {"inc @r0"},   {"inc @r1"},        // 04 - 07
   {"inc r0"},    {"inc r1"},    {"inc r2"},    {"inc r3"},         // 08 - 0b
   {"inc r4"},    {"inc r5"},    {"inc r6"},    {"inc r7"},         // 0c - 0f
   {"jbc "},      {"acall "},    {"lcall "},    {"rrc a"},          // 10 - 13
   {"dec a"},     {"dec "},      {"dec @r0"},   {"dec @r1"},        // 14 - 17
   {"dec r0"},    {"dec r1"},    {"dec r2"},    {"dec r3"},         // 18 - 1b
   {"dec r4"},    {"dec r5"},    {"dec r6"},    {"dec r7"},         // 1c - 1f
   {"jb "},       {"ajmp "},     {"ret "},      {"rl a"},           // 20 - 23
   {"add a,#"},   {"add a,"},    {"add a,@r0"}, {"add a,@r1"},      // 24 - 27
   {"add a,r0"},  {"add a,r1"},  {"add a,r2"},  {"add a,r3"},       // 28 - 2b
   {"add a,r4"},  {"add a,r5"},  {"add a,r6"},  {"add a,r7"},       // 2c - 2f
   {"jnb "},      {"acall "},    {"reti "},     {"rlc a"},          // 30 - 33
   {"addc a,#"},  {"addc a,"},   {"addc a,@r0"},{"addc a,@r1"},     // 34 - 37
   {"addc a,r0"}, {"addc a,r1"}, {"addc a,r2"}, {"addc a,r3"},      // 38 - 3b
   {"addc a,r4"}, {"addc a,r5"}, {"addc a,r6"}, {"addc a,r7"},      // 3c - 3f
   {"jc "},       {"ajmp "},     {"orl "},      {"orl "},           // 40 - 43
   {"orl a,#"},   {"orl a,"},    {"orl a,@r0"}, {"orl a,@r1"},      // 44 - 47
   {"orl a,r0"},  {"orl a,r1"},  {"orl a,r2"},  {"orl a,r3"},       // 48 - 4b
   {"orl a,r4"},  {"orl a,r5"},  {"orl a,r6"},  {"orl a,r7"},       // 4c - 4f
   {"jnc "},      {"acall "},    {"anl "},      {"anl "},           // 50 - 53
   {"anl a,#"},   {"anl a,"},    {"anl a,@r0"}, {"anl a,@r1"},      // 54 - 57
   {"anl a,r0"},  {"anl a,r1"},  {"anl a,r2"},  {"anl a,r3"},       // 58 - 5b
   {"anl a,r4"},  {"anl a,r5"},  {"anl a,r6"},  {"anl a,r7"},       // 5c - 5f
   {"jz "},       {"ajmp "},     {"xrl "},      {"xrl "},           // 60 - 63
   {"xrl a,#"},   {"xrl a,"},    {"xrl a,@r0"}, {"xrl a,@r1"},      // 64 - 67
   {"xrl a,r0"},  {"xrl a,r1"},  {"xrl a,r2"},  {"xrl a,r3"},       // 68 - 6b
   {"xrl a,r4"},  {"xrl a,r5"},  {"xrl a,r6"},  {"xrl a,r7"},       // 6c - 6f
   {"jnz "},      {"acall "},    {"orl c,"},    {"jmp @a+dptr"},    // 70 - 73
   {"mov a,#"},   {"mov "},      {"mov @r0,#"}, {"mov @r1,#"},      // 74 - 77
   {"mov r0,#"},  {"mov r1,#"},  {"mov r2,#"},  {"mov r3,#"},       // 78 - 7b
   {"mov r4,#"},  {"mov r5,#"},  {"mov r6,#"},  {"mov r7,#"},       // 7c - 7f
   {"sjmp "},     {"ajmp "},     {"anl c,"},    {"movc a,@a+pc"},   // 80 - 83
   {"div ab"},    {"mov "},      {"mov "},      {"mov "},           // 84 - 87
   {"mov "},      {"mov "},      {"mov "},      {"mov "},           // 88 - 8b
   {"mov "},      {"mov "},      {"mov "},      {"mov "},           // 8c - 8f
   {"mov dptr,#"},{"acall "},    {"mov "},      {"movc a,@a+dptr"}, // 90 -93
   {"subb a,#"},  {"subb a,"},   {"subb a,@r0"},{"subb a,@r1"},     // 94 - 97
   {"subb a,r0"}, {"subb a,r1"}, {"subb a,r2"}, {"subb a,r3"},      // 98 - 9b
   {"subb a,r4"}, {"subb a,r5"}, {"subb a,r6"}, {"subb a,r7"},      // 9c - 9f
   {"orl c,/"},   {"ajmp "},     {"mov c,"},    {"inc dptr"},       // a0 - a3
   {"mul ab"},    {"db "},       {"mov @r0,"},  {"mov @r1,"},       // a4 - a7
   {"mov r0,"},   {"mov r1,"},   {"mov r2,"},   {"mov r3,"},        // a8 - ab
   {"mov r4,"},   {"mov r5,"},   {"mov r6,"},   {"mov r7,"},        // ac - af
   {"anl c,/"},   {"acall "},    {"cpl "},      {"cpl c"},          // b0 - b3
   {"cjne a,#"},  {"cjne a,"},   {"cjne @r0,#"},{"cjne @r1,#"},     // b4 - b7
   {"cjne r0,#"}, {"cjne r1,#"}, {"cjne r2,#"}, {"cjne r3,#"},      // b8 - bb
   {"cjne r4,#"}, {"cjne r5,#"}, {"cjne r6,#"}, {"cjne r7,#"},      // bc - bf
   {"push "},     {"ajmp "},     {"clr "},      {"clr c"},          // c0 - c3
   {"swap a"},    {"xch a,"},    {"xch a,@r0"}, {"xch a,@r1"},      // c4 - c7
   {"xch a,r0"},  {"xch a,r1"},  {"xch a,r2"},  {"xch a,r3"},       // c8 - cb
   {"xch a,r4"},  {"xch a,r5"},  {"xch a,r6"},  {"xch a,r7"},       // cc - cf
   {"pop "},      {"acall "},    {"setb "},     {"setb c"},         // d0 - d3
   {"da a"},      {"djnz "},     {"xchd a,@r0"},{"xchd a,@r1"},     // d4 - d7
   {"djnz r0,"},  {"djnz r1,"},  {"djnz r2,"},  {"djnz r3,"},       // d8 - db
   {"djnz r4,"},  {"djnz r5,"},  {"djnz r6,"},  {"djnz r7,"},       // dc - df
   {"movx a,@dptr"},{"ajmp "},   {"movx a,@r0"},{"movx a,@r1"},     // e0 - e3
   {"clr a"},     {"mov a,"},    {"mov a,@r0"}, {"mov a,@r1"},      // e4 - e7
   {"mov a,r0"},  {"mov a,r1"},  {"mov a,r2"},  {"mov a,r3"},       // e8 - eb
   {"mov a,r4"},  {"mov a,r5"},  {"mov a,r6"},  {"mov a,r7"},       // ec - ef
   {"movx @dptr,a"},{"acall "},  {"movx @r0,a"},{"movx @r1,a"},     // f0 - f3
   {"cpl a"},     {"mov "},      {"mov @r0,a"}, {"mov @r1,a"},      // f4 - f7
   {"mov r0,a"},  {"mov r1,a"},  {"mov r2,a"},  {"mov r3,a"},       // f8 - fb
   {"mov r4,a"},  {"mov r5,a"},  {"mov r6,a"},  {"mov r7,a"}        // fc - ff
} ;

/* OPTTBL (option table) entries:

   bit 7 = unconditional transfer instruction
   bit 6 = 11 bit addressing
   bit 5 = relative addressing
   bit 4 = bit addressing
   bit 3 = direct addressing
   bit 2 = immediate data
   bit 1 = 3 byte instruction
   bit 0 = 2 byte instruction
      if entry = 0, instruction is single byte, no options
*/

unsigned char opttbl[256] = {
   0x00, 0xc1, 0x86, 0x00, 0x00, 0x09, 0x00, 0x00,    // 00 - 07
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 08 - 0f
   0x32, 0x41, 0x06, 0x00, 0x00, 0x09, 0x00, 0x00,    // 10 - 17
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 18 - 1f
   0x32, 0xc1, 0x80, 0x00, 0x05, 0x09, 0x00, 0x00,    // 20 - 27
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 28 - 2f
   0x32, 0x41, 0x80, 0x00, 0x05, 0x09, 0x00, 0x00,    // 30 - 37
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 38 - 3f
   0x21, 0xc1, 0x09, 0x0e, 0x05, 0x09, 0x00, 0x00,    // 40 - 47
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 48 - 4f
   0x21, 0x41, 0x09, 0x0e, 0x05, 0x09, 0x00, 0x00,    // 50 - 57
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 58 - 5f
   0x21, 0xc1, 0x09, 0x0e, 0x05, 0x09, 0x00, 0x00,    // 60 - 67
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 68 - 6f
   0x21, 0x41, 0x11, 0x80, 0x05, 0x0e, 0x05, 0x05,    // 70 - 77
   0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,    // 78 - 7f
   0xa1, 0xc1, 0x11, 0x00, 0x00, 0x0a, 0x09, 0x09,    // 80 - 87
   0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,    // 88 - 8f
   0x06, 0x41, 0x11, 0x00, 0x05, 0x09, 0x00, 0x00,    // 90 - 97
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // 98 - 9f
   0x11, 0xc1, 0x11, 0x00, 0x00, 0x00, 0x09, 0x09,    // a0 - a7
   0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,    // a8 - af
   0x11, 0x41, 0x11, 0x00, 0x26, 0x2a, 0x26, 0x26,    // b0 - b7
   0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,    // b8 - bf
   0x09, 0xc1, 0x11, 0x00, 0x00, 0x09, 0x00, 0x00,    // c0 - c7
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // c8 - cf
   0x09, 0x41, 0x11, 0x00, 0x00, 0x2a, 0x00, 0x00,    // d0 - d7
   0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,    // d8 - df
   0x00, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,    // e0 - e7
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    // e8 - ef
   0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,    // f0 - f7
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00     // f8 - ff
} ;

// Names for Special Function Registers

struct sfrentry sfr[128] = {
    {"p0"},     {"sp"},     {"dpl"},    {"dph"},    // 80 - 83
    {"adat"},   {"85h"},    {"86h"},    {"pcon"},   // 84 - 87
    {"tcon"},   {"tmod"},   {"tl0"},    {"tl1"},    // 88 - 8b
    {"th0"},    {"th1"},    {"pwcm"},   {"pwmp"},   // 8a - 8f
    {"p1"},     {"91h"},    {"92h"},    {"93h"},    // 90 - 93
    {"94h"},    {"95h"},    {"96h"},    {"97h"},    // 94 - 97
    {"scon"},   {"sbuf"},   {"9ah"},    {"9bh"},    // 98 - 9b
    {"9ch"},    {"9dh"},    {"9eh"},    {"9fh"},    // 9c - 9f
    {"p2"},     {"0a1h"},   {"0a2h"},   {"0a3h"},   // a0 - a3
    {"0a4h"},   {"0a5h"},   {"0a6h"},   {"0a7h"},   // a4 - a7
    {"ie"},     {"cml0"},   {"cml1"},   {"cml2"},   // a8 - ab
    {"ctl0"},   {"ctl1"},   {"ctl2"},   {"ctl3"},   // ac - af
    {"p3"},     {"0b1h"},   {"0b2h"},   {"0b3h"},   // b0 - b3
    {"0b4h"},   {"0b5h"},   {"0b6h"},   {"0b7h"},   // b4 - b7
    {"ip"},     {"0b9h"},   {"0bah"},   {"0bbh"},   // b8 - bb
    {"0bch"},   {"0bdh"},   {"0beh"},   {"0bfh"},   // bc - bf
    {"p4"},     {"0c1h"},   {"0c2h"},   {"0c3h"},   // c0 - c3
    {"p5"},     {"adcon"},  {"adch"},   {"0c7h"},   // c4 - c7
    {"t2con"},  {"cmh0"},   {"rcap2l"}, {"rcap2h"}, // c8 - cb
    {"tl2"},    {"th2"},    {"cth2"},   {"cth3"},   // cc - cf
    {"psw"},    {"0d1h"},   {"0d2h"},   {"0d3h"},   // d0 - d3
    {"0d4h"},   {"0d5h"},   {"0d6h"},   {"0d7h"},   // d4 - d7
    {"i2cfg"},  {"s1sta"},  {"s1dat"},  {"s1adr"},  // d8 - db
    {"0dch"},   {"0ddh"},   {"0deh"},   {"0dfh"},   // dc - df
    {"acc"},    {"0e1h"},   {"0e2h"},   {"0e3h"},   // e0 - e3
    {"0e4h"},   {"0e5h"},   {"0e6h"},   {"0e7h"},   // e4 - e7
    {"csr"},    {"0e9h"},   {"tm2con"}, {"ctcon"},  // e8 - eb
    {"tml2"},   {"tmh2"},   {"ste"},    {"rte"},    // ec - ef
    {"b"},      {"0f1h"},   {"0f2h"},   {"0f3h"},   // f0 - f3
    {"0f4h"},   {"0f5h"},   {"0f6h"},   {"0f7h"},   // f4 - f7
    {"i2sta"},  {"0f9h"},   {"0fah"},   {"0fbh"},   // f8 - fb
    {"pwm0"},   {"pwm1"},   {"pwena"},  {"t3"}      // fc - ff
} ;

// Names for Special Function Registers for Keil A51 compatibility

struct sfrentry keilsfr[128] = {
    {"p0"},     {"sp"},     {"dpl"},    {"dph"},    // 80 - 83
    {"84h"},    {"85h"},    {"86h"},    {"pcon"},   // 84 - 87
    {"tcon"},   {"tmod"},   {"tl0"},    {"tl1"},    // 88 - 8b
    {"th0"},    {"th1"},    {"8eh"},    {"8fh"},    // 8a - 8f
    {"p1"},     {"91h"},    {"92h"},    {"93h"},    // 90 - 93
    {"94h"},    {"95h"},    {"96h"},    {"97h"},    // 94 - 97
    {"scon"},   {"sbuf"},   {"9ah"},    {"9bh"},    // 98 - 9b
    {"9ch"},    {"9dh"},    {"9eh"},    {"9fh"},    // 9c - 9f
    {"p2"},     {"0a1h"},   {"0a2h"},   {"0a3h"},   // a0 - a3
    {"0a4h"},   {"0a5h"},   {"0a6h"},   {"0a7h"},   // a4 - a7
    {"ie"},     {"0a9h"},   {"0aah"},   {"0abh"},   // a8 - ab
    {"a0ch"},   {"0adh"},   {"0aeh"},   {"0afh"},   // ac - af
    {"p3"},     {"0b1h"},   {"0b2h"},   {"0b3h"},   // b0 - b3
    {"0b4h"},   {"0b5h"},   {"0b6h"},   {"0b7h"},   // b4 - b7
    {"ip"},     {"0b9h"},   {"0bah"},   {"0bbh"},   // b8 - bb
    {"0bch"},   {"0bdh"},   {"0beh"},   {"0bfh"},   // bc - bf
    {"0c0h"},   {"0c1h"},   {"0c2h"},   {"0c3h"},   // c0 - c3
    {"0c4h"},   {"0c5h"},   {"0c6h"},   {"0c7h"},   // c4 - c7
    {"0c8h"},   {"0c9h"},   {"0cah"},   {"0cbh"},   // c8 - cb

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -