merge next branch
diff --git a/arch/X86/X86ATTInstPrinter.c b/arch/X86/X86ATTInstPrinter.c
index 91f171f..d4aeba8 100644
--- a/arch/X86/X86ATTInstPrinter.c
+++ b/arch/X86/X86ATTInstPrinter.c
@@ -356,6 +356,10 @@
 			else
 				SStream_concat(O, "-%"PRIu64, -imm);
 		} else {
+			// handle 16bit segment bound
+			if (MI->csh->mode == CS_MODE_16 && imm > 0x100000)
+				imm -= 0x10000;
+
 			if (imm > HEX_THRESHOLD)
 				SStream_concat(O, "0x%"PRIx64, imm);
 			else
diff --git a/arch/X86/X86IntelInstPrinter.c b/arch/X86/X86IntelInstPrinter.c
index 676ef9d..38def2d 100644
--- a/arch/X86/X86IntelInstPrinter.c
+++ b/arch/X86/X86IntelInstPrinter.c
@@ -395,6 +395,10 @@
 			else
 				SStream_concat(O, "-%"PRIu64, -imm);
 		} else {
+			// handle 16bit segment bound
+			if (MI->csh->mode == CS_MODE_16 && imm > 0x100000)
+				imm -= 0x10000;
+
 			if (imm > HEX_THRESHOLD)
 				SStream_concat(O, "0x%"PRIx64, imm);
 			else