anchor.diff:    `(let* ((mod-r/m (next-instruction)) (r/m-bits (logand mod-r/m #b00000111)) (mod-bits (ash (logand mod-r/m #b11000000) -6)) (reg-bits (ash (logand mod-r/m #b00111000) -3)))
        ,@body))
   
  +;; Templates
  +
  +(defmacro xchg (op1 op2)
  +  `(disasm-instr (list "xchg" :op1 ,op1 :op2 ,op2)
  +     (rotatef ,op1 ,op2)))
  +
   ;; One-byte opcodes on registers
   
   (defun clear-carry-flag ()
  
positive.code:     ((in-6-byte-block-p opcode #x30) (parse-alu-opcode opcode xor-operation))
      ((in-6-byte-block-p opcode #x38) (parse-alu-opcode opcode cmp-operation))
      ((in-4-byte-block-p opcode #x80) (parse-group1-opcode opcode))
      ((in-paired-byte-block-p opcode #xfe) (parse-group4/5-opcode opcode))))
  
  ;;; Main functions
  
negative.code: 
  (defun xchg-register (reg)
    (disasm-instr (if (eql reg :ax) '("nop") (list "xchg" :op1 :ax :op2 reg))
      (xchg (register :ax) (register reg))))
  
  (defun mov-byte-to-register (opcode)
    (let ((reg (bits->byte-reg (mod opcode #x08))))
  