diff --git a/nemu/src/monitor/debug/ui.cc b/nemu/src/monitor/debug/ui.cc
index 32f7dada9037b3a4c89b72877042b5f1486ff1ee..2b97f289ec97b4e1283cbd9d8d5e78f1c5370a19 100644
--- a/nemu/src/monitor/debug/ui.cc
+++ b/nemu/src/monitor/debug/ui.cc
@@ -131,9 +131,10 @@ using namespace rlib;
 using namespace rlib::literals;
 
 #include <sstream>
+#include <iomanip>
 
 auto dumpReg(uint32_t val) {
-  return string("[32b={}{}, L16b={}{}]").format(std::hex, val, (uint16_t)val, std::dec);
+  return string("{}{}[32b=0x{}{}, {}L16b=0x{}{}]").format(std::setfill('0'), std::setw(8), std::hex, val, std::setw(4), (uint16_t)val, std::dec);
 }
 
 static int cmd_info(char *args) {