📄 disasm.cpp
字号:
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, NULL, strRM);
if(iValPrefix)
{
wOffset = *(WORD*)(pCodeData+iCodeSize);
sprintf(strIM, "%04XH", wOffset);
iCodeSize += 2;
}
else
{
dwOffset = *(DWORD*)(pCodeData+iCodeSize+iOpcodeOffset);
sprintf(strIM, "%08XH", dwOffset);
iCodeSize += 4;
}
sprintf(szAsmCode, "%s, %s", strRM, strIM);
return iCodeSize;
}
int Func_RM8_IM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strRM[64];
char strIM[16];
int iOpcodeOffset = iOpcodeCnt -1;
unsigned char cOffset = 0;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 1, 0, NULL, strRM);
cOffset = *(unsigned char*)(pCodeData+iCodeSize);
sprintf(strIM, "%02XH", cOffset);
iCodeSize += 1;
sprintf(szAsmCode, "%s, %s", strRM, strIM);
return iCodeSize;
}
int Func_RM16_32_IM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strRM[64];
char strIM[16];
int iOpcodeOffset = iOpcodeCnt -1;
unsigned char cOffset = 0;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, NULL, strRM);
cOffset = *(unsigned char*)(pCodeData+iCodeSize);
sprintf(strIM, "%02XH", cOffset);
iCodeSize += 1;
sprintf(szAsmCode, "%s, %s", strRM, strIM);
return iCodeSize;
}
int Func_RM8_R8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
unsigned char cDirection = 2;
int iOpcodeOffset = iOpcodeCnt -1;
cDirection = (cDirection & (*pCodeData+iOpcodeOffset));
cDirection = cDirection >> 1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 1, 1, strR, strRM);
if(cDirection == 1)
sprintf(szAsmCode, "%s, %s", strR, strRM);
else
sprintf(szAsmCode, "%s, %s", strRM, strR);
return iCodeSize;
}
int Func_R16_32_RM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 1, strR, strRM);
sprintf(szAsmCode, "%s, %s", strR, strRM);
return iCodeSize;
}
int Func_R32_RM16(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 2, 3, strR, strRM);
sprintf(szAsmCode, "%s, %s", strR, strRM);
return iCodeSize;
}
int Func_RM16_32_R16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
unsigned char cDirection = 2;
int iOpcodeOffset = iOpcodeCnt -1;
cDirection = (cDirection & (*pCodeData+iOpcodeOffset));
cDirection = cDirection >> 1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
if(cDirection == 1)
sprintf(szAsmCode, "%s, %s", strR, strRM);
else
sprintf(szAsmCode, "%s, %s", strRM, strR);
return iCodeSize;
}
int Func_R16_32_M16AND16_32AND32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
sprintf(szAsmCode, "%s, %s", strR, strRM);
return iCodeSize;
}
int Func_R16_32_M16_16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
sprintf(szAsmCode, "%s, %s", strR, strRM);
return iCodeSize;
}
int Func_R16_32_M(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
sprintf(szAsmCode, "%s, %s", strR, strRM);
return iCodeSize;
}
int Func_REL8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
char cOffset = 0;
iCodeSize += 1;
cOffset = *(pCodeData+1+iOpcodeOffset);
sprintf(szAsmCode, "%08X", dwAddr+iCodeSize+cOffset);
return iCodeSize;
}
int Func_REL16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
short shOffset = 0;
int iOffset = 0;
if(iValPrefix)
{
iCodeSize += 2;
shOffset = *(short*)(pCodeData+1+iOpcodeOffset);
sprintf(szAsmCode, "%08X", dwAddr+iCodeSize+shOffset);
}
else
{
iCodeSize += 4;
iOffset = *(int*)(pCodeData+1+iOpcodeOffset);
sprintf(szAsmCode, "%08X", dwAddr+iCodeSize+iOffset);
}
return iCodeSize;
}
int Func_RM16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_PTR16_16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
char strRM[64];
if(iValPrefix)
{
sprintf(strRM, "%04XH:%04XH", *(WORD*)(pCodeData+3+iOpcodeOffset), *(WORD*)(pCodeData+1+iOpcodeOffset));
iCodeSize += 4;
}
else
{
sprintf(strRM, "%04XH:%08XH", *(WORD*)(pCodeData+5+iOpcodeOffset), *(DWORD*)(pCodeData+1+iOpcodeOffset));
iCodeSize += 6;
}
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_M16_16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
char strRM2[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, NULL, strRM);
strcpy(strRM2, strRM);
sprintf(strRM, "far %s", strRM2);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_M16AND16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_RM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 1, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_M16INT_FP(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 2, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_M32INT_FP(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 3, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_M64INT_FP(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
char strRM[64];
int iCodeSize = iOpcodeCnt;
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 4, 0, NULL, strRM);
strcpy(szAsmCode, strRM);
return iCodeSize;
}
int Func_R16_32_RM16_32_IM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
char strIM[20];
int iOpcodeOffset = iOpcodeCnt -1;
unsigned char cOffset = 0;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
cOffset = *(unsigned char*)(pCodeData+iCodeSize);
sprintf(strIM, "%02XH", cOffset);
iCodeSize += 1;
sprintf(szAsmCode, "%s, %s, %s", strR, strRM, strIM);
return iCodeSize;
}
int Func_RM16_32_R16_32_CL(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
int iOpcodeOffset = iOpcodeCnt -1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
sprintf(szAsmCode, "%s, %s, CL", strRM, strR);
return iCodeSize;
}
int Func_RM16_32_R16_32_IM8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
char strIM[20];
int iOpcodeOffset = iOpcodeCnt -1;
unsigned char cOffset = 0;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
cOffset = *(unsigned char*)(pCodeData+iCodeSize);
sprintf(strIM, "%02XH", cOffset);
iCodeSize += 1;
sprintf(szAsmCode, "%s, %s, %s", strRM, strR, strIM);
return iCodeSize;
}
int Func_R16_32_RM16_32_IM16_32(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
char strIM[20];
int iOpcodeOffset = iOpcodeCnt -1;
WORD wOffset = 0;
DWORD dwOffset = 0;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 0, 0, strR, strRM);
if(iValPrefix)
{
wOffset = *(WORD*)(pCodeData+iCodeSize);
sprintf(strIM, "%04XH", wOffset);
iCodeSize += 2;
}
else
{
dwOffset = *(DWORD*)(pCodeData+iCodeSize);
sprintf(strIM, "%08XH", dwOffset);
iCodeSize += 4;
}
sprintf(szAsmCode, "%s, %s, %s", strR, strRM, strIM);
return iCodeSize;
}
int Func_RM16_SREG(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
char strR[64];
char strRM[64];
unsigned char cDirection = 2;
int iOpcodeOffset = iOpcodeCnt -1;
cDirection = (cDirection & (*pCodeData+iOpcodeOffset));
cDirection = cDirection >> 1;
iCodeSize = Func_RM(pCodeData, iCodeSize, iOpcodeOffset, iValPrefix, iSegPrefix, 2, 4, strR, strRM);
if(cDirection == 1)
sprintf(szAsmCode, "%s, %s", strR, strRM);
else
sprintf(szAsmCode, "%s, %s", strRM, strR);
return iCodeSize;
}
int Func_AL_MOFFS8(char* const pData, DWORD dwAddr, int iOpcodeCnt, int iValPrefix, int iAddrPrefix, int iSegPrefix, char* szAsmCode)
{
char* pCodeData = pData;
int iCodeSize = iOpcodeCnt;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -