📄 d52table.c
字号:
/*
* 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 + -