diff --git a/x86/x86asm/format_test.go b/x86/x86asm/format_test.go
index 2750a28..9f110f8 100644
--- a/x86/x86asm/format_test.go
+++ b/x86/x86asm/format_test.go
@@ -13,6 +13,8 @@
 	switch addr {
 	case 0x424080:
 		return "runtime.printint", 0x424080
+	case 0x4c8068:
+		return "main.A", 0x4c8068
 	}
 	return "", 0
 }
@@ -33,9 +35,9 @@
 			"mov rax, qword ptr [rsp+0x8]",
 			"mov 0x8(%rsp),%rax"},
 		{0x450678, "488b05e9790700",
-			"MOVQ 0x779e9(IP), AX",
-			"mov rax, qword ptr [rip+0x779e9]",
-			"mov 0x779e9(%rip),%rax"},
+			"MOVQ main.A(SB), AX",
+			"mov rax, qword ptr [main.A]",
+			"mov main.A,%rax"},
 		{0x450664, "e8173afdff",
 			"CALL runtime.printint(SB)",
 			"call runtime.printint",
diff --git a/x86/x86asm/gnu.go b/x86/x86asm/gnu.go
index 5bb54df..75cff72 100644
--- a/x86/x86asm/gnu.go
+++ b/x86/x86asm/gnu.go
@@ -539,6 +539,13 @@
 		}
 		return gccRegName[x]
 	case Mem:
+		if s, disp := memArgToSymbol(x, pc, inst.Len, symname); s != "" {
+			suffix := ""
+			if disp != 0 {
+				suffix = fmt.Sprintf("%+d", disp)
+			}
+			return fmt.Sprintf("%s%s", s, suffix)
+		}
 		seg := ""
 		var haveCS, haveDS, haveES, haveFS, haveGS, haveSS bool
 		switch x.Segment {
diff --git a/x86/x86asm/intel.go b/x86/x86asm/intel.go
index 4c32d9d..472eabd 100644
--- a/x86/x86asm/intel.go
+++ b/x86/x86asm/intel.go
@@ -428,6 +428,13 @@
 		}
 
 		prefix += "ptr "
+		if s, disp := memArgToSymbol(a, pc, inst.Len, symname); s != "" {
+			suffix := ""
+			if disp != 0 {
+				suffix = fmt.Sprintf("%+d", disp)
+			}
+			return prefix + fmt.Sprintf("[%s%s]", s, suffix)
+		}
 		if a.Segment != 0 {
 			prefix += strings.ToLower(a.Segment.String()) + ":"
 		}
diff --git a/x86/x86asm/plan9x.go b/x86/x86asm/plan9x.go
index d5cf614..a93bffd 100644
--- a/x86/x86asm/plan9x.go
+++ b/x86/x86asm/plan9x.go
@@ -121,14 +121,12 @@
 		}
 		return fmt.Sprintf("$%#x", uint64(a))
 	case Mem:
-		if a.Segment == 0 && a.Disp != 0 && a.Base == 0 && (a.Index == 0 || a.Scale == 0) {
-			if s, base := symname(uint64(a.Disp)); s != "" {
-				suffix := ""
-				if uint64(a.Disp) != base {
-					suffix = fmt.Sprintf("%+d", uint64(a.Disp)-base)
-				}
-				return fmt.Sprintf("%s%s(SB)", s, suffix)
+		if s, disp := memArgToSymbol(a, pc, inst.Len, symname); s != "" {
+			suffix := ""
+			if disp != 0 {
+				suffix = fmt.Sprintf("%+d", disp)
 			}
+			return fmt.Sprintf("%s%s(SB)", s, suffix)
 		}
 		s := ""
 		if a.Segment != 0 {
@@ -150,6 +148,25 @@
 	return arg.String()
 }
 
+func memArgToSymbol(a Mem, pc uint64, instrLen int, symname SymLookup) (string, int64) {
+	if a.Segment != 0 || a.Disp == 0 || a.Index != 0 || a.Scale != 0 {
+		return "", 0
+	}
+
+	var disp uint64
+	switch a.Base {
+	case IP, EIP, RIP:
+		disp = uint64(a.Disp + int64(pc) + int64(instrLen))
+	case 0:
+		disp = uint64(a.Disp)
+	default:
+		return "", 0
+	}
+
+	s, base := symname(disp)
+	return s, int64(disp) - int64(base)
+}
+
 var plan9Suffix = [maxOp + 1]bool{
 	ADC:       true,
 	ADD:       true,
