diff --git a/irdb-libs/libIRDB-util/src/registers.cpp b/irdb-libs/libIRDB-util/src/registers.cpp
index b8d02ec4ac8aeab3ef3132aa6c90a3b6c323f81d..8239122ba74778120463d7d536cadd2775aa16fc 100644
--- a/irdb-libs/libIRDB-util/src/registers.cpp
+++ b/irdb-libs/libIRDB-util/src/registers.cpp
@@ -429,11 +429,18 @@ RegisterID_t IRDB_SDK::convertRegisterTo16bit(const RegisterID_t p_reg)
 	}
 }
 
+// Does not guarantee, whether the returned register is the lower or upper half 
+// of the lowest 16 bits
 RegisterID_t IRDB_SDK::convertRegisterTo8bit(const RegisterID_t p_reg)
 {
 	if (is8bitRegister(p_reg))
 		return p_reg;
 
+	return convertRegisterTo8bitLower(p_reg);
+}
+
+RegisterID_t IRDB_SDK::convertRegisterTo8bitLower(const RegisterID_t p_reg)
+{
 	switch (p_reg)
 	{
 		case rn_RAX: case  rn_EAX:  case   rn_AX:  return rn_AL;
@@ -458,3 +465,16 @@ RegisterID_t IRDB_SDK::convertRegisterTo8bit(const RegisterID_t p_reg)
 	}
 }
 
+RegisterID_t IRDB_SDK::convertRegisterTo8bitUpper(const RegisterID_t p_reg)
+{
+	switch (convertRegisterTo8bitLower(p_reg))
+	{
+		case rn_AL: return rn_AH;
+		case rn_BL: return rn_BH;
+		case rn_CL: return rn_CH;
+		case rn_DL: return rn_DH;
+		default:
+			return rn_UNKNOWN;
+			break;
+	}
+}
\ No newline at end of file