#include "stdafx.h"
#include "..\..\Common\Application.h"
#include "Jmp.h"

bool CJmp::Disasm(BYTE*& ptr)
{
	if(Jmp_Short(ptr)) return true;
	else if(Jmp_Near(ptr)) return true;
	else if(Jmp_Far(ptr)) return true;
	else return false;
}

bool CJmp::Jmp_Short(BYTE*& ptr)
{
	if(*ptr == JMP_SHORT)
	{
		ptr++;
		memcpy(&theApp.Real_Register.IP,ptr,1); // for 1bit
		ptr++;
		return true;
	}
	return false;
}

bool CJmp::Jmp_Near(BYTE*& ptr)
{
	if(*ptr == JMP_NEAR)
	{
		ptr++;
		memcpy(&theApp.Real_Register.IP,ptr,2); // for 2bit
		ptr += 2;
		return true;
	}
	return false;
}

bool CJmp::Jmp_Far(BYTE*& ptr)
{
	if(*ptr == JMP_FAR)
	{
		ptr++;
		memcpy(&theApp.Real_Register.IP,ptr,2); // for 2bit
		ptr += 2;
		memcpy(&theApp.Real_Register.CS,ptr,2); // for 2bit
		ptr += 2;
		return true;
	}
	return false;
}