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

📄 disasm.cpp

📁 将exe等可执行文件转化成c程序的反编译程序,先到汇编再到c
💻 CPP
📖 第 1 页 / 共 4 页
字号:

// Copyright(C) 1999-2005 LiuTaoTao,bookaa@rorsoft.com

#include "stdafx.h"
#include	<windows.h>
#include	<stdio.h>

#include "dasm.h"

//**************************************

typedef union MODRM
{
	BYTE	v;
	struct
	{
		BYTE	rm:3;
		BYTE	reg:3;
		BYTE	mod:2;
	};	
} *PMODRM;	

typedef union SIB
{
	BYTE	v;
	struct
	{
		BYTE	base:3;
		BYTE	index:3;
		BYTE	ss:2;
	};	
} *PSIB;

#define	SIZE_B		1
#define	SIZE_W		2
#define	SIZE_V		3
#define	SIZE_D		4
#define	SIZE_P		5
#define	SIZE_A		6


PSTR SegReg[8]={
"ES","CS","SS","DS","FS","GS","??","??"
};

PSTR RegByte[8]={
"AL","CL","DL","BL","AH","CH","DH","BH"
};

PSTR RegWord[8]={
"AX","CX","DX","BX","SP","BP","SI","DI"
};

PSTR RegDWord[8]={
"EAX","ECX","EDX","EBX","ESP","EBP","ESI","EDI"
};

//******************************************************

DWORD	U_Size	= BIT32;
//	So default disassembler is bit16


//****************

DWORD	SegPrefix;
//index of segment register (prefix)
//default is !!!_NOSEG_!!!

DWORD	LockPrefix;
PSTR	LockName;
DWORD	RepPrefix;
PSTR	RepName;

//****************

//**************************************

static XCPUCODE	xcpu;

XCPUCODE* CDisasm::get_xcpu()
{
    return &xcpu;
}

//**************************************

// The list of the types of Opdata1, Opdata2, Opdata3
typedef enum
{
	D_NONE,			// No any types
	D_EB,D_EW,D_EV,	// A ModR/M bytes, specifies the operand size.
	D_GB,D_GW,D_GV,	// The reg field of the ModR/M BYTE selects a normal register.
	D_IB,D_IW,D_IV,	// Immediate data.
	D_SB,			// Signed Immediate data.
	D_SW,			// The reg field of the ModR/M BYTE selects a segment register.
	D_MV,D_MP,D_MA,	// The ModR/M BYTE may refer only to memory.
	D_OB,D_OV,		// The offset of the operand is coded as a WORD or d-WORD ( no ModR/M )
	D_JB,D_JV,D_JP,	// The instruction contains a relative offset to be added to EIP.
	D_RD,			// The mod field of the ModR/M BYTE may refer only to a general register.
	D_CD,			// The reg field of the ModR/M BYTE selects a control register.
	D_DD,			// The reg field of the ModR/M BYTE selects a debug register.

	D_1,			// Only used for ( Group2 SHL/SHR... instruction )

	D_AL,			// Specifying AL register
	D_CL,			// Specifying CL register
	D_DL,			// Specifying DL register
	D_BL,			// Specifying BL register
	D_AH,			// Specifying AH register
	D_CH,			// Specifying CH register
	D_DH,			// Specifying DH register
	D_BH,			// Specifying BH register

	D_AX,			// Specifying AX register
	D_CX,			// Specifying CX register
	D_DX,			// Specifying DX register
	D_BX,			// Specifying BX register
	D_SP,			// Specifying SP register
	D_BP,			// Specifying BP register
	D_SI,			// Specifying SI register
	D_DI,			// Specifying DI register

	D_AXV,			// Specifying eAX register
	D_CXV,			// Specifying eCX register
	D_DXV,			// Specifying eDX register
	D_BXV,			// Specifying eBX register
	D_SPV,			// Specifying eSP register
	D_BPV,			// Specifying eBP register
	D_SIV,			// Specifying eSI register
	D_DIV,			// Specifying eDI register

	D_ES,			// Specifying ES register
	D_CS,			// Specifying CS register
	D_SS,			// Specifying SS register
	D_DS,			// Specifying DS register
	D_FS,			// Specifying FS register
	D_GS,			// Specifying GS register
	
	D_V,			// Used for PUSHA/POPA, PUSHF/POPF, SHAF/LAHF
	D_XB,D_XV		// Used for ( MOVS, LODS, OUTS, ... )
}	OPDATATYPE;	

//**************************************


INSTRUCTION grouptable1[8] =
{
	{ C_ADD,		"ADD",		D_NONE,	D_NONE,	D_NONE },
	{ C_OR,			"OR",		D_NONE,	D_NONE,	D_NONE },
	{ C_ADC,		"ADC",		D_NONE,	D_NONE,	D_NONE },
	{ C_SBB,		"SBB",		D_NONE,	D_NONE,	D_NONE },
	{ C_AND,		"AND",		D_NONE,	D_NONE,	D_NONE },
	{ C_SUB,		"SUB",		D_NONE,	D_NONE,	D_NONE },
	{ C_XOR,		"CMP",		D_NONE,	D_NONE,	D_NONE },
	{ C_CMP,		"CMP",		D_NONE,	D_NONE,	D_NONE }
};	

INSTRUCTION grouptable2[8] =
{
	{ C_ROL,		"ROL",		D_NONE,	D_NONE,	D_NONE },
	{ C_ROR,		"ROR",		D_NONE,	D_NONE,	D_NONE },
	{ C_RCL,		"RCL",		D_NONE,	D_NONE,	D_NONE },
	{ C_RCR,		"RCR",		D_NONE,	D_NONE,	D_NONE },
	{ C_SHL,		"SHL",		D_NONE,	D_NONE,	D_NONE },
	{ C_SHR,		"SHR",		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_SAR,		"SAR",		D_NONE,	D_NONE,	D_NONE }
};

INSTRUCTION grouptable3[8] =
{
	{ C_MOV,		"MOV",		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE }
};	

INSTRUCTION grouptable4[8] =
{
	{ C_TEST,		"TEST",		D_NONE,	D_IB,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_NOT,		"NOT",		D_NONE,	D_NONE,	D_NONE },
	{ C_NEG,		"NEG",		D_NONE,	D_NONE,	D_NONE },
	{ C_MUL,		"MUL",		D_NONE,	D_NONE,	D_NONE },
	{ C_IMUL,		"IMUL",		D_NONE,	D_NONE,	D_NONE },
	{ C_DIV,		"DIV",		D_NONE,	D_NONE,	D_NONE },
	{ C_IDIV,		"IDIV",		D_NONE,	D_NONE,	D_NONE }
};	

INSTRUCTION grouptable5[8] =
{
	{ C_TEST,		"TEST",		D_NONE,	D_IV,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_NOT,		"NOT",		D_NONE,	D_NONE,	D_NONE },
	{ C_NEG,		"NEG",		D_NONE,	D_NONE,	D_NONE },
	{ C_MUL,		"MUL",		D_NONE,	D_NONE,	D_NONE },
	{ C_IMUL,		"IMUL",		D_NONE,	D_NONE,	D_NONE },
	{ C_DIV,		"DIV",		D_NONE,	D_NONE,	D_NONE },
	{ C_IDIV,		"IDIV",		D_NONE,	D_NONE,	D_NONE }
};	

INSTRUCTION grouptable6[8] =
{
	{ C_INC,		"INC",		D_NONE,	D_NONE,	D_NONE },
	{ C_DEC,		"DEC",		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE }
};	

INSTRUCTION grouptable7[8] =
{
	{ C_INC,		"INC",		D_NONE,	D_NONE,	D_NONE },
	{ C_DEC,		"DEC",		D_NONE,	D_NONE,	D_NONE },
	{ C_CALL,		"CALL",		D_NONE,	D_NONE,	D_NONE },
	{ C_CALLFAR,	"CALL FAR",	D_MP,	D_NONE,	D_NONE },
	{ C_JMP,		"JMP",		D_NONE,	D_NONE,	D_NONE },
	{ C_JMPFAR,		"JMP  FAR",	D_MP,	D_NONE,	D_NONE },
	{ C_PUSH,		"PUSH",		D_NONE,	D_NONE,	D_NONE },
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE }
};	

//**************************************

INSTRUCTION	instruction0FH[] =
{
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x00,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x01,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x02,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x03,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x04,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x05,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x06,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x07,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x08,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x09,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x0f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x10,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x11,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x12,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x13,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x14,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x15,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x16,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x17,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x18,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x19,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x1f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x20,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x21,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x22,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x23,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x24,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x25,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x26
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x27,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x28,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x29,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2e
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x2f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x30,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x31,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x32,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x33,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x34,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x35,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x36
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x37,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x38,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x39,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3e
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x3f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x40,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x41,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x42,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x43,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x44,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x45,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x46,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x47,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x48,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x49,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x4f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x50,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x51,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x52,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x53,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x54,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x55,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x56,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x57,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x58,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x59,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x5f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x60,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x61,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x62,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x63,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x64
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x65
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x66
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x67
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x68,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x69,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x6f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x70,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x71,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x72,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x73,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x74,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x75,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x76,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x77,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x78,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x79,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7a,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7b,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7c,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7d,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7e,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0x7f,
	{ C_JO,			"JO",		D_JV,	D_NONE,	D_NONE },	//0x80,
	{ C_JNO,		"JNO",		D_JV,	D_NONE,	D_NONE },	//0x81,
	{ C_JB,			"JB",		D_JV,	D_NONE,	D_NONE },	//0x82,
	{ C_JNB,		"JNB",		D_JV,	D_NONE,	D_NONE },	//0x83,
	{ C_JZ,			"JZ",		D_JV,	D_NONE,	D_NONE },	//0x84,
	{ C_JNZ,		"JNZ",		D_JV,	D_NONE,	D_NONE },	//0x85,
	{ C_JNA,		"JNA",		D_JV,	D_NONE,	D_NONE },	//0x86,
	{ C_JA,			"JA",		D_JV,	D_NONE,	D_NONE },	//0x87,
	{ C_JS,			"JS",		D_JV,	D_NONE,	D_NONE },	//0x88,
	{ C_JNS,		"JNS",		D_JV,	D_NONE,	D_NONE },	//0x89,
	{ C_JP,			"JP",		D_JV,	D_NONE,	D_NONE },	//0x8a,
	{ C_JNP,		"JNP",		D_JV,	D_NONE,	D_NONE },	//0x8b,
	{ C_JL,			"JL",		D_JV,	D_NONE,	D_NONE },	//0x8c,
	{ C_JNL,		"JNL",		D_JV,	D_NONE,	D_NONE },	//0x8d,
	{ C_JLE,		"JLE",		D_JV,	D_NONE,	D_NONE },	//0x8e,
	{ C_JNLE,		"JNLE",		D_JV,	D_NONE,	D_NONE },	//0x8f,
	{ C_SETO,		"SETO",		D_EB,	D_NONE,	D_NONE },	//0x90,
	{ C_SETNO,		"SETNO",	D_EB,	D_NONE,	D_NONE },	//0x91,
	{ C_SETB,		"SETB",		D_EB,	D_NONE,	D_NONE },	//0x92,
	{ C_SETNB,		"SETNB",	D_EB,	D_NONE,	D_NONE },	//0x93,
	{ C_SETZ,		"SETZ",		D_EB,	D_NONE,	D_NONE },	//0x94,
	{ C_SETNZ,		"SETNZ",	D_EB,	D_NONE,	D_NONE },	//0x95,
	{ C_SETNA,		"SETNA",	D_EB,	D_NONE,	D_NONE },	//0x96,
	{ C_SETA,		"SETA",		D_EB,	D_NONE,	D_NONE },	//0x97,
	{ C_SETS,		"SETS",		D_EB,	D_NONE,	D_NONE },	//0x98,
	{ C_SETNS,		"SETNS",	D_EB,	D_NONE,	D_NONE },	//0x99,
	{ C_SETP,		"SETP",		D_EB,	D_NONE,	D_NONE },	//0x9a,
	{ C_SETNP,		"SETNP",	D_EB,	D_NONE,	D_NONE },	//0x9b,
	{ C_SETL,		"SETL",		D_EB,	D_NONE,	D_NONE },	//0x9c,
	{ C_SETNL,		"SETNL",	D_EB,	D_NONE,	D_NONE },	//0x9d,
	{ C_SETLE,		"SETLE",	D_EB,	D_NONE,	D_NONE },	//0x9e,
	{ C_SETNLE,		"SETNLE",	D_EB,	D_NONE,	D_NONE },	//0x9f,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa0,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa1,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa2,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa3,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa4,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa5,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa6,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa8,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xa9,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xaa,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xab,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xac,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xad,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xae,
//	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xaf,		//----
	{ C_IMUL,		"IMUL",		D_GV,	D_EV,	D_NONE },	//0xaf,		//++++
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xb0,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xb1,
	{ C_LSS,		"LSS",		D_GV,	D_MP,	D_NONE },	//0xb2,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xb3,
	{ C_LFS,		"LFS",		D_GV,	D_MP,	D_NONE },	//0xb4,
	{ C_LGS,		"LGS",		D_GV,	D_MP,	D_NONE },	//0xb5,
	{ C_MOVZX,		"MOVZX",	D_GV,	D_EB,	D_NONE },	//0xb6,
	{ C_MOVZX,		"MOVZX",	D_GV,	D_EW,	D_NONE },	//0xb7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xb8,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xb9,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xba,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xbb,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xbc,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xbd,
	{ C_MOVSX,		"MOVSX",	D_GV,	D_EB,	D_NONE },	//0xbe,
	{ C_MOVSX,		"MOVSX",	D_GV,	D_EW,	D_NONE },	//0xbf,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc0,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc1,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc2,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc3,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc4,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc5,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc6,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc8,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xc9,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xca,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xcb,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xcc,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xcd,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xce,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xcf,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd0,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd1,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd2,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd3,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd4,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd5,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd6,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd7,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd8,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xd9,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xda,
	{ C_ERROR,		NULL,		D_NONE,	D_NONE,	D_NONE },	//0xdb,

⌨️ 快捷键说明

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