.. include:: .. include:: /_static/isonum.txt .. include:: /_static/icons.txt .. |_| unicode:: U+000A0 .. NO-BREAK SPACE ####################################### APPENDIX A: ALTAIR 8800 INSTRUCTION SET ####################################### .. table:: Definitions: === ==================== DDD Destination Register SSS Source Register rp Register Pair === ==================== .. table:: Register Designations ===================== =========== Register (SSS or DDD) Bit Pattern ===================== =========== B 000 C 001 D 010 E 011 H 100 L 101 Memory 110 Accumulator 111 ===================== =========== .. table:: Register Designations ============= =========== Register Pair Bit Pattern ============= =========== B and C 00 D and E 01 H and L 10 SP 11 ============= =========== A. COMMAND INSTRUCTIONS ======================= 1. Input/Output Instructions ---------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`IN ` | 2 | 3 | 11 011 011 | 333 | DB | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`OUT ` | 2 | 3 | 11 010 011 | 323 | D3 | +--------------------+-------+--------+----------------+-------------+----------+ 2. Interrupt Instructions ------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`EI ` | 1 | 1 | 11 111 011 | 373 | FB | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`DI ` | 1 | 1 | 11 110 011 | 363 | F3 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`HLT ` | 1 | 1 | 01 110 110 | 166 | 76 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RST ` | 1 | 3 | 11 (exp) 111 | 3(exp)7 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 0* | *11 000 111* | *3 0 7* | *C7* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 1* | *11 001 111* | *3 1 7* | *CF* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 2* | *11 010 111* | *3 2 7* | *D7* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 3* | *11 011 111* | *3 3 7* | *DF* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 4* | *11 100 111* | *3 4 7* | *E7* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 5* | *11 101 111* | *3 5 7* | *EF* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 6* | *11 110 111* | *3 6 7* | *F7* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *RST 7* | *11 111 111* | *3 7 7* | *FF* | +--------------------+-------+--------+----------------+-------------+----------+ 3. Carry Bit Instructions ------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`CMC ` | 1 | 1 | 00 111 111 | 077 | 3F | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`STC ` | 1 | 1 | 00 110 111 | 067 | 37 | +--------------------+-------+--------+----------------+-------------+----------+ 4. No Operation Instruction --------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`NOP ` | 1 | 1 | 00 000 000 | 000 | 00 | +--------------------+-------+--------+----------------+-------------+----------+ B. SINGLE REGISTER INSTRUCTIONS =============================== .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`INR ` | 1 | 3 | 00 (DDD) 100 | 0(DDD)4 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR B* | *00 000 100* | *0 0 4* | *04* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR C* | *00 001 100* | *0 1 4* | *0C* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR D* | *00 010 100* | *0 2 4* | *14* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR E* | *00 011 100* | *0 3 4* | *1C* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR H* | *00 100 100* | *0 4 4* | *24* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR L* | *00 101 100* | *0 5 4* | *2C* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR M* | *00 110 100* | *0 6 4* | *34* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INR A* | *00 111 100* | *0 7 4* | *3C* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`DCR ` | 1 | 3 | 00 (DDD) 101 | 0(DDD)5 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR B* | *00 000 101* | *0 0 5* | *05* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR C* | *00 001 101* | *0 1 5* | *0D* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR D* | *00 010 101* | *0 2 5* | *15* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR E* | *00 011 101* | *0 3 5* | *1D* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR H* | *00 100 101* | *0 4 5* | *25* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR L* | *00 101 101* | *0 5 5* | *2D* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR M* | *00 110 101* | *0 6 5* | *35* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCR A* | *00 111 101* | *0 7 5* | *3D* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CMA ` | 1 | 1 | 00 101 111 | 057 | 2F | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`DAA ` | 1 | 1 | 00 100 111 | 047 | 27 | +--------------------+-------+--------+----------------+-------------+----------+ C. REGISTER PAIR INSTRUCTIONS ============================= .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`PUSH ` | 1 | 3 | 11 (rp)0 101 | 3(rp)5 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *PUSH B* | *11 000 101* | *3 0 5* | *C5* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *PUSH D* | *11 010 101* | *3 2 5* | *D5* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *PUSH H* | *11 100 101* | *3 4 5* | *E5* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *PUSH PSW* | *11 110 101* | *3 6 5* | *F5* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`POP ` | 1 | 3 | 11 (rp)0 001 | 3(rp)1 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *POP B* | *11 000 001* | *3 0 1* | *C1* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *POP D* | *11 010 001* | *3 2 1* | *D1* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *POP H* | *11 100 001* | *3 4 1* | *E1* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *POP PSW* | *11 110 001* | *3 6 1* | *F1* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`DAD ` | 1 | 3 | 00 (rp)1 001 | 0(rp)1 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DAD B* | *00 001 001* | *3 1 1* | *09* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DAD D* | *00 011 001* | *3 3 1* | *19* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DAD H* | *00 101 001* | *3 5 1* | *29* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DAD SP* | *00 111 001* | *3 7 1* | *39* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`INX ` | 1 | 1 | 00 (rp)0 011 | 0(rp)3 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INX B* | *00 000 011* | *0 0 3* | *03* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INX D* | *00 010 011* | *0 2 3* | *13* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INX H* | *00 100 011* | *0 4 3* | *23* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *INX SP* | *00 110 011* | *0 6 3* | *33* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`DCX ` | 1 | 1 | 00 (rp)1 011 | 0(rp)3 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCX B* | *00 001 011* | *0 1 3* | *0B* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCX D* | *00 011 011* | *0 3 3* | *1B* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCX H* | *00 101 011* | *0 5 3* | *2B* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *DCX SP* | *00 111 011* | *0 7 3* | *3B* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`XCHG ` | 1 | 1 | 11 101 011 | 353 | *EB* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`XTHL ` | 1 | 5 | 11 100 011 | 343 | *E3* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SPHL ` | 1 | 1 | 11 111 001 | 371 | *F9* | +--------------------+-------+--------+----------------+-------------+----------+ D. ROTATE ACCUMULATOR INSTRUCTIONS ================================== .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`RLC ` | 1 | 1 | 00 000 111 | 007 | 07 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RRC ` | 1 | 1 | 00 001 111 | 017 | 0F | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RAL ` | 1 | 1 | 00 010 111 | 027 | 17 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RAR ` | 1 | 1 | 00 011 111 | 037 | 1F | +--------------------+-------+--------+----------------+-------------+----------+ E. DATA TRANSFER INSTRUCTIONS ============================= 1. Data Transfer Instructions ----------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+-----------------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+=======================+=============+==========+ | :ref:`MOV ` | 1 | 1 or 2 | 01 (DDD) (SSS) | 1(DDD)(SSS) | | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,B* | *01 000 000* | *1 0 0* | *40* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,C* | *01 000 001* | *1 0 1* | *41* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,D* | *01 000 010* | *1 0 2* | *42* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,E* | *01 000 011* | *1 0 3* | *43* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,H* | *01 000 100* | *1 0 4* | *44* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,L* | *01 000 101* | *1 0 5* | *45* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,M* | *01 000 110* | *1 0 6* | *46* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV B,A* | *01 000 111* | *1 0 7* | *47* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV C,B* | *01 001 000* | *1 1 0* | *48* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |note| **There are 46 additional variants of the MOV instruction. (Total: 64)** | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV M,A* | *01 110 111* | *1 6 7* | *77* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,B* | *01 111 000* | *1 7 0* | *78* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,C* | *01 111 001* | *1 7 1* | *79* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,D* | *01 111 010* | *1 7 2* | *7A* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,E* | *01 111 011* | *1 7 3* | *7B* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,H* | *01 111 100* | *1 7 4* | *7C* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,L* | *01 111 101* | *1 7 5* | *7D* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,M* | *01 111 110* | *1 7 6* | *7E* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MOV A,A* | *01 111 111* | *1 7 7* | *7F* | +--------------------+-------+--------+-----------------------+-------------+----------+ | :ref:`STAX ` | 1 | 2 | 00 0(X)0 010\ |note|\ | 0(X)2 | | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *STAX B* | *00 000 010* | *0 0 2* | *02* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *STAX D* | *00 010 010* | *0 2 2* | *12* | +--------------------+-------+--------+-----------------------+-------------+----------+ | :ref:`LDAX ` | 1 | 2 | 00 0(X)1 010\ |note|\ | 0(X)2 | | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LDAX B* | *00 001 010* | *0 1 2* | *0A* | +--------------------+-------+--------+-----------------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LDAX D* | *00 011 010* | *0 3 2* | *1A* | +--------------------+-------+--------+-----------------------+-------------+----------+ .. note:: Register Pair B and C |--| 0 at X Register Pair D and E |--| 1 at X 2. Register/Memory to Accumulator Transfers ------------------------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`ADD ` | 1 | 1 | 10 000 (SSS) | 20(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD B* | *10 000 000* | *2 0 0* | *80* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD C* | *10 000 001* | *2 0 1* | *81* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD D* | *10 000 010* | *2 0 2* | *82* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD E* | *10 000 011* | *2 0 3* | *83* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD H* | *10 000 100* | *2 0 4* | *84* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD L* | *10 000 101* | *2 0 5* | *85* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD M* | *10 000 110* | *2 0 6* | *86* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADD A* | *10 000 111* | *2 0 7* | *87* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ADC ` | 1 | 1 | 10 001 (SSS) | 21(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC B* | *10 001 000* | *2 1 0* | *88* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC C* | *10 001 001* | *2 1 1* | *89* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC D* | *10 001 010* | *2 1 2* | *8A* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC E* | *10 001 011* | *2 1 3* | *8B* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC H* | *10 001 100* | *2 1 4* | *8C* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC L* | *10 001 101* | *2 1 5* | *8D* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC M* | *10 001 110* | *2 1 6* | *8E* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ADC A* | *10 001 111* | *2 1 7* | *8F* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SUB ` | 1 | 1 | 10 010 (SSS) | 22(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB B* | *10 010 000* | *2 2 0* | *90* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB C* | *10 010 000* | *2 2 1* | *91* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB D* | *10 010 000* | *2 2 2* | *92* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB E* | *10 010 000* | *2 2 3* | *93* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB H* | *10 010 000* | *2 2 4* | *94* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB L* | *10 010 000* | *2 2 5* | *95* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB M* | *10 010 000* | *2 2 6* | *96* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SUB A* | *10 010 000* | *2 2 7* | *97* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SBB ` | 1 | 1 | 10 011 (SSS) | 23(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB B* | *10 011 000* | *2 3 0* | *98* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB C* | *10 011 000* | *2 3 1* | *99* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB D* | *10 011 000* | *2 3 2* | *9A* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB E* | *10 011 000* | *2 3 3* | *9B* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB H* | *10 011 000* | *2 3 4* | *9C* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB L* | *10 011 000* | *2 3 5* | *9D* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB M* | *10 011 000* | *2 3 6* | *9E* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *SBB A* | *10 011 000* | *2 3 7* | *9F* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ANA ` | 1 | 1 | 10 100 (SSS) | 24(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA B* | *10 100 000* | *2 4 0* | *A0* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA C* | *10 100 000* | *2 4 1* | *A1* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA D* | *10 100 000* | *2 4 2* | *A2* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA E* | *10 100 000* | *2 4 3* | *A3* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA H* | *10 100 000* | *2 4 4* | *A4* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA L* | *10 100 000* | *2 4 5* | *A5* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA M* | *10 100 000* | *2 4 6* | *A6* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ANA A* | *10 100 000* | *2 4 7* | *A7* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`XRA ` | 1 | 1 | 10 101 (SSS) | 25(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA B* | *10 101 000* | *2 5 0* | *A8* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA C* | *10 101 000* | *2 5 1* | *A9* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA D* | *10 101 000* | *2 5 2* | *AA* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA E* | *10 101 000* | *2 5 3* | *AB* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA H* | *10 101 000* | *2 5 4* | *AC* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA L* | *10 101 000* | *2 5 5* | *AD* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA M* | *10 101 000* | *2 5 6* | *AE* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *XRA A* | *10 101 000* | *2 5 7* | *AF* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ORA ` | 1 | 1 | 10 110 (SSS) | 26(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA B* | *10 110 000* | *2 6 0* | *B0* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA C* | *10 110 000* | *2 6 1* | *B1* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA D* | *10 110 000* | *2 6 2* | *B2* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA E* | *10 110 000* | *2 6 3* | *B3* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA H* | *10 110 000* | *2 6 4* | *B4* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA L* | *10 110 000* | *2 6 5* | *B5* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA M* | *10 110 000* | *2 6 6* | *B6* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *ORA A* | *10 110 000* | *2 6 7* | *B7* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CMP ` | 1 | 1 | 10 111 (SSS) | 27(SSS) | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP B* | *10 111 000* | *2 7 0* | *B8* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP C* | *10 111 000* | *2 7 1* | *B9* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP D* | *10 111 000* | *2 7 2* | *BA* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP E* | *10 111 000* | *2 7 3* | *BB* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP H* | *10 111 000* | *2 7 4* | *BC* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP L* | *10 111 000* | *2 7 5* | *BD* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP M* | *10 111 000* | *2 7 6* | *BE* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *CMP A* | *10 111 000* | *2 7 7* | *BF* | +--------------------+-------+--------+----------------+-------------+----------+ 3. Direct Addressing Instructions --------------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`STA ` | 3 | 4 | 00 110 010 | 062 | 32 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`LDA ` | 3 | 4 | 00 111 010 | 072 | 3A | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SHLD ` | 3 | 5 | 00 100 010 | 042 | 22 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`LHLD ` | 3 | 5 | 00 101 010 | 052 | 2A | +--------------------+-------+--------+----------------+-------------+----------+ F. IMMEDIATE INSTRUCTIONS ------------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`LXI ` | 3 | 3 | 00 (rp)0 001 | 0(rp)1 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LXI B* | *00 000 001* | *0 0 1* | *01* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LXI D* | *00 010 001* | *0 1 1* | *11* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LXI H* | *00 100 001* | *0 2 1* | *21* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *LXI SP* | *00 110 001* | *0 3 1* | *31* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`MVI ` | 2 | 2 or 3 | 00 (SSS) 110 | 0(SSS)6 | | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI B* | *00 000 110* | *0 0 6* | *06* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI C* | *00 001 110* | *0 1 6* | *0E* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI D* | *00 010 110* | *0 2 6* | *16* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI E* | *00 011 110* | *0 3 6* | *1E* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI H* | *00 100 110* | *0 4 6* | *26* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI L* | *00 101 110* | *0 5 6* | *2E* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI M* | *00 110 110* | *0 6 6* | *36* | +--------------------+-------+--------+----------------+-------------+----------+ | \ |_|\ |_|\ |_|\ *MVI A* | *00 111 110* | *0 7 6* | *3E* | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ADI ` | 2 | 2 | 11 000 110 | 306 | C6 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ACI ` | 2 | 2 | 11 001 110 | 316 | CE | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SUI ` | 2 | 2 | 11 010 110 | 326 | D6 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`SBI ` | 2 | 2 | 11 011 110 | 336 | DE | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ANI ` | 2 | 2 | 11 100 110 | 346 | E6 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`XRI ` | 2 | 2 | 11 101 110 | 356 | EE | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`ORI ` | 2 | 2 | 11 110 110 | 366 | F6 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CPI ` | 2 | 3 | 11 111 110 | 376 | FE | +--------------------+-------+--------+----------------+-------------+----------+ G. BRANCHING INSTRUCTIONS ========================= 1. Jump Instructions -------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`PCHL ` | 1 | 1 | 11 101 001 | 351 | E9 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JMP ` | 3 | 3 | 11 000 011 | 303 | C3 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JC ` | 3 | 3 | 11 011 010 | 332 | DA | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JNC ` | 3 | 3 | 11 010 010 | 322 | D2 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JZ ` | 3 | 3 | 11 001 010 | 312 | CA | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JNZ ` | 3 | 3 | 11 000 010 | 302 | C2 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JM ` | 3 | 3 | 11 111 010 | 372 | FA | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JP ` | 3 | 3 | 11 110 010 | 362 | F2 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JPE ` | 3 | 3 | 11 101 010 | 352 | EA | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`JPO ` | 3 | 3 | 11 100 010 | 342 | E2 | +--------------------+-------+--------+----------------+-------------+----------+ 2. Call Instructions -------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`CALL ` | 3 | 5 | 11 001 101 | 315 | CD | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CC ` | 3 | 3 or 5 | 11 011 100 | 334 | DC | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CNC ` | 3 | 3 or 5 | 11 010 100 | 324 | D4 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CZ ` | 3 | 3 or 5 | 11 001 100 | 314 | CC | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CNZ ` | 3 | 3 or 5 | 11 000 100 | 304 | C4 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CM ` | 3 | 3 or 5 | 11 111 100 | 374 | FC | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CP ` | 3 | 3 or 5 | 11 110 100 | 364 | F4 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CPE ` | 3 | 3 or 5 | 11 101 100 | 354 | EC | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`CPO ` | 3 | 3 or 5 | 11 100 100 | 344 | E4 | +--------------------+-------+--------+----------------+-------------+----------+ 3. Return Instructions ---------------------- .. table:: :widths: 2 1 1 2 2 1 :header-alignment: center center center center center center :column-alignment: left center center center center center :column-dividers: single single single single single single single +--------------------+-------+--------+----------------+-------------+----------+ | Mnemonic | Bytes | Cycles | Binary Code | Octal Code | Hex Code | +====================+=======+========+================+=============+==========+ | :ref:`RET ` | 1 | 3 | 11 001 001 | 311 | C9 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RC ` | 1 | 1 or 3 | 11 011 000 | 330 | D8 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RNC ` | 1 | 1 or 3 | 11 010 000 | 320 | D0 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RZ ` | 1 | 1 or 3 | 11 001 000 | 310 | C8 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RNZ ` | 1 | 1 or 3 | 11 000 000 | 300 | C0 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RM ` | 1 | 1 or 3 | 11 111 000 | 370 | F8 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RP ` | 1 | 1 or 3 | 11 110 000 | 360 | F0 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RPE ` | 1 | 1 or 3 | 11 101 000 | 350 | E8 | +--------------------+-------+--------+----------------+-------------+----------+ | :ref:`RPO ` | 1 | 1 or 3 | 11 100 000 | 340 | E0 | +--------------------+-------+--------+----------------+-------------+----------+