{
    "id": "intel_8085_cheat_sheet",
    "name": "Intel 8085 Instruction Set",
    "description": "8085 instructions and their explanations",
    "metadata": {
        "sourceName": "Scanftree",
        "sourceUrl": "http://scanftree.com/microprocessor/Instruction-Set-In-8085"
    },
    "template_type": "reference",
    "section_order": [
        "Data Transfer Instructions",
        "Control Transfer Instructions",
        "Logical Instructions",
        "Rotate Instructions", 
        "Arithmetic Instructions",
        "Control Instructions"
    ],
    "aliases": [
        "8085",
        "8085 instructionset",
        "8085 instruction set",
        "8085 programming",
        "8085 instructions"
    ],
    "sections": {
        "Data Transfer Instructions": [
            {
                "key": "MOV Destination, Source",
                "val": "Copies a word or byte of data from 'source' to 'destination'"
            },
            {
                "key": "MVI Destination, 8 bit data",
                "val": "Copies the given byte of data  to 'destination'"
            },
            {
                "key": "LDA 16-bit address",
                "val": "Loads the 16-bit address in Accumulator"
            },
            {
                "key": "LDAX B/D Reg. pair",
                "val": "Load accumulator indirect"
            },
            {
                "key": "LXI Reg.Pair, 16-bit data",
                "val": "Loads 16-bit data in the register pair"
            },
            {
                "key": "STA 16-bit address",
                "val": "Stores the content of Accumulator in memory location specified by the 16-bit address"
            },
            {
                "key": "STAX Reg. pair",
                "val": "Stores the content of Accumulator in memory location specified by the contents of operand(Reg. pair)"
            },
            {
                "key": "XCHG",
                "val": "Contents of register H are exchanged with the contents of register D, and the contents of register L are exchanged with the contents of register E"
            },
            {
                "key": "LHLD 16-bit address",
                "val": "Copies the contents of the memory location pointed out by the 16-bit address into register L and copies the contents of the next memory location into register H"
            },
            {
                "key": "SPHL",
                "val": "The instruction loads the contents of the H and L registers into the stack pointer register, the contents of the H register provide the high-order address and the contents of the L register provide the low-order address."
            },
            {
                "key": "XTHL",
                "val": "The contents of the L register are exchanged with the stack location pointed out by the contents of the stack pointer register"
            },
            {
                "key": "SHLD 16-bit address",
                "val": "Contents of register L are stored into the memory location specified by the 16-bit address in the operand and the contents of H register are stored into the next memory location"
            },
            {
                "key": "OUT 8-bit port address",
                "val": "Contents of the accumulator are copied into the I/O port specified by the operand"
            },
            {
                "key": "IN 8-bit port address",
                "val": "Contents of the input port designated in the operand are read and loaded into the accumulator"
            }
        ],
        "Arithmetic Instructions": [
            {
                "key": "ADD R/M",
                "val": "Adds the content of register or memory location  to the content of Accumulator and put the result in the Accumulator"
            },
            {
                "key": "SUB R/M",
                "val": "Subtracts the content of register or memory location  from the content of Accumulator and put the result in the Accumulator"
            },
            {
                "key": "INX Reg.pair",
                "val": "Contents of the designated register pair are incremented by 1"
            },
            {
                "key": "DCX Reg.pair",
                "val": "Contents of the designated register pair are decremented by 1"
            },
            {
                "key": "INR R/M",
                "val": "Contents of the designated register or memory location is incremented by one"
            },
            {
                "key": "DCR R/M",
                "val": "Contents of the designated register or memory location  is decremented by one"
            },
            {
                "key": "DAA",
                "val": "Decimal Adjust Accumulator"
            }
        ],
        "Logical Instructions": [
            {
                "key": "ANA R/M",
                "val": "Content of the Accumulator is logically ANDed with  the content of the operand"
            },
            {
                "key": "ANI 8-bit data",
                "val": "Content of the Accumulator is logically ANDed with 8-bit data given as the operand"
            },
            {
                "key": "ORA R/M",
                "val": "Content of the Accumulator is logically ORed with  the content of the operand"
            },
            {
                "key": "ORI 8-bit data",
                "val": "Content of the Accumulator is logically ANDed with 8-bit data given as the operand"
            },
            {
                "key": "XRA R/M",
                "val": "Content of the Accumulator is Exclusive-ORed with  the content of the operand"
            },
            {
                "key": "XRI 8-bit data",
                "val": "Content of the Accumulator is Exclusive-ORed with  8-bit data given as the operand"
            },
            {
                "key": "CMP R/M",
                "val": "Compares the content in the register or memory location with content in Accumulator"
            },
            {
                "key": "CPI 8-bit data",
                "val": "Compares the 8-bit data given as the operand with content in Accumulator"
            }
        ],
        "Rotate Instructions": [
            {
                "key": "RCL",
                "val": "Rotates each bits in the Accumulator to the left once. MSB is circled back into the LSB and CF contains a copy of the bit most recently moved out of the MSB"
            },
            {
                "key": "RCR",
                "val": "Rotates each bits in the Accumulator to the right once. LSB is circled back into the MSB and CF contains a copy of the bit most recently moved out of the LSB"
            },
            {
                "key": "RAL",
                "val": "Rotate accumulator left through carry"
            },
            {
                "key": "RAR",
                "val": "Rotate accumulator right through carry"
            },
            {
                "key": "SHL Destination, Count",
                "val": "Shifts each bit in the 'destination' to the left 'count' number of times and  a 0 is put in the LSB position for each shift"
            },
            {
                "key": "SHR Destination, Count",
                "val": "Shifts each bit in the 'destination' to the right 'count' number of times and  a 0 is put in the MSB position for each shift"
            }
        ],
        "Control Transfer Instructions": [
            {
                "key": "JMP 16-bit address",
                "val": "Unconditional jump to the specified 16-bit address"
            },
            {
                "key": "JC 16-bit address",
                "val": "Jump to the specified 16-bit address if carry flag is set"
            },
            {
                "key": "JZ 16-bit address",
                "val": "Jump to the specified 16-bit address if zero flag is set"
            },
            {
                "key": "JM 16-bit address",
                "val": "Jump to the specified 16-bit address if sign flag is set"
            },
            {
                "key": "JP 16-bit address",
                "val": "Jump to the specified 16-bit address if sign flag is zero"
            },
            {
                "key": "CALL 16-bit address",
                "val": "Program sequence is transferred to the memory location specified by the 16-bit address"
            },
            {
                "key": "CC 16-bit address",
                "val": "Program sequence is transferred to the memory location specified by the 16-bit address if carry flag is set"
            },
            {
                "key": "CZ 16-bit address",
                "val": "Program sequence is transferred to the memory location specified by the 16-bit address if zero flag is set"
            },
            {
                "key": "CM 16-bit address",
                "val": "Program sequence is transferred to the memory location specified by the 16-bit address if sign flag is set"
            },
            {
                "key": "CP 16-bit address",
                "val": "Program sequence is transferred to the memory location specified by the 16-bit address if sign flag is zero"
            }
        ],
        "Control Instructions": [
            {
                "key": "NOP",
                "val": "No operation is performed"
            },
            {
                "key": "HLT",
                "val": "Halt and enter wait state"
            },
            {
                "key": "DI",
                "val": "Disable Interrupts"
            },
            {
                "key": "EI",
                "val": "Enable Interrupts"
            },
            {
                "key": "RIM",
                "val": "Read Interrupt Mask"
            },
            {
                "key": "SIM",
                "val": "Set Interrupt Mask"
            },
            {
                "key": "CLI",
                "val": "Clear Interrupt Flag"
            }
        ]
    }
}
