         CFlag = false
     }
 
+    /// `XOR r, (a16)`
     public mutating func XOR(_ register: inout UInt8, address: Address) {
-        register = register ^ memory.read(address)
-
-        ZFlag = register == 0
-        NFlag = false
-        HFlag = false
-        CFlag = false
+        XOR(&register, memory.read(address))
     }
     
 }

        CFlag = false
    }

    public mutating func AND(_ register: inout UInt8, address: Address) {
        register = register & memory.read(address)

        ZFlag = register == 0
        NFlag = false
        HFlag = true
        CFlag = false
    }

    /// `LD nn, n` - 8-bit load into register

        ADC(&register, memory.read(address))
    }
    
    /// `SUB r, d8`
    public mutating func SUB(_ register: inout UInt8, _ value: UInt8) {
        let high = UInt16(register) &- UInt16(value)
        let low  = (register & 0x0F) &- (value & 0x0F)
