#pragma once
#include "..\Common\Base.h"

struct Register_16_Bit
{
	// General Register
	struct
	{
		BYTE AH; // 8Bit
		BYTE AL; // 8Bit
	}AX;
	struct
	{
		BYTE BH; // 8Bit
		BYTE BL; // 8Bit
	}BX;
	struct
	{
		BYTE CH; // 8Bit
		BYTE CL; // 8Bit
	}CX;
	struct
	{
		BYTE DH; // 8Bit
		BYTE DL; // 8Bit
	}DX;

	// Segment Register
	USHORT CS;
	USHORT DS;
	USHORT SS;
	USHORT ES;

	// Special Register
	USHORT IP;
	USHORT SP;
	USHORT BP;
	USHORT SI;
	USHORT DI;
	struct
	{
		BYTE OF : 1;
		BYTE DF : 1;
		BYTE IF : 1;
		BYTE TF : 1;
		BYTE SF : 1;
		BYTE ZF : 1;
		BYTE AF : 1;
		BYTE PF : 1;
		BYTE CF : 1;
		BYTE Reserve : 7;
	}FR;

	Register_16_Bit()
	{
		memset(this,0,sizeof(Register_16_Bit));
	}
};