diff --git a/libMEDSannotation/include/MEDS_Register.hpp b/libMEDSannotation/include/MEDS_Register.hpp
index d00ff66ab44cda88a6ca5a1bda8416da976f226e..5452489f0f405e89f0a15c15f2c2d4e58f3f292b 100644
--- a/libMEDSannotation/include/MEDS_Register.hpp
+++ b/libMEDSannotation/include/MEDS_Register.hpp
@@ -8,7 +8,7 @@ namespace MEDS_Annotation
 
 class Register {
 public:
-  enum RegisterName { UNKNOWN, EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, AX, BX, CX, DX, AH, BH, CH, DH, AL, BL, CL, DL };
+  enum RegisterName { UNKNOWN, EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, AX, BX, CX, DX, BP, SP, SI, DI, AH, BH, CH, DH, AL, BL, CL, DL };
   static RegisterName getRegister(std::string);
   static RegisterName getRegister(char *str);
   static bool is32bit(RegisterName);
diff --git a/libMEDSannotation/src/MEDS_Register.cpp b/libMEDSannotation/src/MEDS_Register.cpp
index e80ef69a2a3d24bf8196d4890c4d10b9821f4c34..4e72adfc1e7247295ed4f6030a17fad5c2590394 100644
--- a/libMEDSannotation/src/MEDS_Register.cpp
+++ b/libMEDSannotation/src/MEDS_Register.cpp
@@ -36,6 +36,14 @@ Register::RegisterName Register::getRegister(std::string p_reg)
 		return CX;
 	else if (strcasecmp(p_reg.c_str(), "DX") == 0)
 		return DX;
+	else if (strcasecmp(p_reg.c_str(), "BP") == 0)
+		return BP;
+	else if (strcasecmp(p_reg.c_str(), "SP") == 0)
+		return SP;
+	else if (strcasecmp(p_reg.c_str(), "SI") == 0)
+		return SI;
+	else if (strcasecmp(p_reg.c_str(), "DI") == 0)
+		return DI;
 	else if (strcasecmp(p_reg.c_str(), "AH") == 0)
 		return AL;
 	else if (strcasecmp(p_reg.c_str(), "BH") == 0)
@@ -64,7 +72,8 @@ bool Register::is8bit(Register::RegisterName p_reg)
 
 bool Register::is16bit(Register::RegisterName p_reg)
 {
-	return p_reg == AX || p_reg == BX || p_reg == CX || p_reg == DX;
+	return p_reg == AX || p_reg == BX || p_reg == CX || p_reg == DX ||
+		p_reg == BP || p_reg == SP || p_reg == SI || p_reg == DI;
 }
 
 bool Register::is32bit(Register::RegisterName p_reg)
@@ -88,6 +97,10 @@ std::string Register::toString(Register::RegisterName p_reg)
 	else if (p_reg == BX) return std::string("BX");
 	else if (p_reg == CX) return std::string("CX");
 	else if (p_reg == DX) return std::string("DX");
+	else if (p_reg == BP) return std::string("BP");
+	else if (p_reg == SP) return std::string("SP");
+	else if (p_reg == SI) return std::string("SI");
+	else if (p_reg == DI) return std::string("DI");
 	else if (p_reg == AH) return std::string("AH");
 	else if (p_reg == BH) return std::string("BH");
 	else if (p_reg == CH) return std::string("CH");
@@ -118,6 +131,10 @@ int Register::getBitWidth(Register::RegisterName p_reg)
 		case BX:				
 		case CX:				
 		case DX:				
+		case BP:				
+		case SP:				
+		case SI:				
+		case DI:				
 			return 16;
 			break;