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

    public mutating func LD(_ register: inout UInt8, address: Address) {
        register = memory.read(address)
    }
    
    public mutating func LDH(offset: UInt8, _ value: UInt8) {
        let address = Address(0xFF, offset)
        memory.write(address, value)
    }
    
    public mutating func LDH(_ register: inout UInt8, offset: UInt8) {
        let address = Address(0xFF, offset)
        register = memory.read(address)
    }
    
    public mutating func LDHL(offset: Int8) {
        ZFlag = false
        NFlag = false

        ADD(&register, memory.read(address))
    }

    /// `AND r, d8`
    public mutating func AND(_ register: inout UInt8, _ value: UInt8) {
        register = register & value

