ほぼネタだけど
(defun dump (addr l16)
(format t "~10,'0x : ~{~3@{~2,'0x ~}~2,'0x~^-~} : ~{~c~}~%"
addr l16 (mapcar #'(lambda (c) (if (<= 32 c 126) (code-char c) #\.)) l16)))

きっちり小分けにして書くならhdump部はloopマクロ、cdump部はdolistかなぁ。