Mercurial > hg > ede
view docs/elb816_opcodes.csv @ 42:792da050d8c4 tip
more dox
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Tue, 22 Apr 2014 14:25:14 +0100 |
parents | |
children |
line wrap: on
line source
ELB816 instruction set V1.0 Dec HEX Binary Mnemonic Register transfer description Comments 0 00 00000000 NOP PC = PC+1 No Operation 1 01 00000001 reserved currently unallocated opcode - treat as NOP 2 02 00000010 reserved currently unallocated opcode - treat as NOP 3 03 00000011 reserved currently unallocated opcode - treat as NOP 4 04 00000100 reserved currently unallocated opcode - treat as NOP 5 05 00000101 reserved currently unallocated opcode - treat as NOP 6 06 00000110 reserved currently unallocated opcode - treat as NOP 7 07 00000111 reserved currently unallocated opcode - treat as NOP 8 08 00001000 SET C 1 -> CY Set carry bit to 1 9 09 00001001 CLR C 0 -> CY Set carry bit to 0 10 0A 00001010 SET BS 1 -> BS Switch to register bank 1 11 0B 00001011 CLR BS 0 -> BS Switch to register bank 0 12 0C 00001100 SET IE 1 -> IE Enable interrupts 13 0D 00001101 CLR IE 0 -> IE Disable interrupts 14 0E 00001110 CPL C not CY -> CY Complement carry bit 15 0F 00001111 CPL A not A -> A Complement accumulator 16 10 00010000 XCSD SP -> DPTR : DPTR -> SP Exchange SP with DPTR 17 11 00010001 SFA FLAGS -> A store flags to accumulator 18 12 00010010 LAF A -> FLAGS load accumulator to flags 19 13 00010011 MOV DPTR, SP SP -> DPTR move word SP to DPTR 20 14 00010100 MOV SP, DPTR DPTR -> SP move word DPTR to SP 21 15 00010101 MOV A, #data8 data8 -> A move immediate byte to accumulator 22 16 00010110 MOV SP, #data16 data16 -> SP move immediate word to SP 23 17 00010111 MOV DPTR, #data16 data16 -> DPTR move immediate word to DPTR 24 18 00011000 MOV A, addr16 main[addr16] -> A move data from direct address to accumulator 25 19 00011001 MOV addr16, A A -> main[addr16] move data from accumulator to direct address 26 1A 00011010 MOV A, @A+DPTR main[DPTR+A] -> A indexed move relative to DPTR to accumulator 27 1B 00011011 MOV A, @A+PC main[PC+A] -> A indexed move relative to PC to accumulator 28 1C 00011100 MOV A, @addr16 main[main[addr16]] -> A move data from indirect address to accumulator 29 1D 00011101 MOV @addr16, A A -> main[main[addr16]] move data from accumulator to indirect address 30 1E 00011110 MOV A, @DPTR main[DPTR] -> A register indirect move to accumulator 31 1F 00011111 MOV @DPTR, A A -> main[DPTR] register indirect move from accumulator 32 20 00100000 MOV @DPTR, R0 R0 -> main[DPTR] 33 21 00100001 MOV @DPTR, R1 R1 -> main[DPTR] 34 22 00100010 MOV @DPTR, R2 R2 -> main[DPTR] 35 23 00100011 MOV @DPTR, R3 R3 -> main[DPTR] 36 24 00100100 MOV @DPTR, DPH DPH -> main[DPTR] 37 25 00100101 MOV @DPTR, DPL DPL -> main[DPTR] 38 26 00100110 MOV @DPTR, SPH SPH -> main[DPTR] 39 27 00100111 MOV @DPTR, SPL SPL -> main[DPTR] 40 28 00101000 MOV R0, #data8 data8 -> R0 41 29 00101001 MOV R1, #data8 data8 -> R1 42 2A 00101010 MOV R2, #data8 data8 -> R2 43 2B 00101011 MOV R3, #data8 data8 -> R3 44 2C 00101100 MOV DPH, #data8 data8 -> DPH 45 2D 00101101 MOV DPL, #data8 data8 -> DPL 46 2E 00101110 MOV SPH, #data8 data8 -> SPH 47 2F 00101111 MOV SPL, #data8 data8 -> SPL 48 30 00110000 MOV R0, A A -> R0 49 31 00110001 MOV R1, A A -> R1 50 32 00110010 MOV R2, A A -> R2 51 33 00110011 MOV R3, A A -> R3 52 34 00110100 MOV DPH, A A -> DPH 53 35 00110101 MOV DPL, A A -> DPL 54 36 00110110 MOV SPH, A A -> SPH 55 37 00110111 MOV SPL, A A -> SPL 56 38 00111000 MOV A, R0 R0 -> A 57 39 00111001 MOV A, R1 R1 -> A 58 3A 00111010 MOV A, R2 R2 -> A 59 3B 00111011 MOV A, R3 R3 -> A 60 3C 00111100 MOV A, DPH DPH -> A 61 3D 00111101 MOV A, DPL DPL -> A 62 3E 00111110 MOV A, SPH SPH -> A 63 3F 00111111 MOV A, SPL SPL -> A 64 40 01000000 MOV R0, @DPTR main[DPTR] -> R0 65 41 01000001 MOV R0, R1 R1 -> R0 66 42 01000010 MOV R0, R2 R2 -> R0 67 43 01000011 MOV R0, R3 R3 -> R0 68 44 01000100 MOV R0, DPH DPH -> R0 69 45 01000101 MOV R0, DPL DPL -> R0 70 46 01000110 MOV R0, SPH SPH -> R0 71 47 01000111 MOV R0, SPL SPL -> R0 72 48 01001000 MOV R1, R0 R0 -> R1 73 49 01001001 MOV R1, @DPTR main[DPTR] -> R1 74 4A 01001010 MOV R1, R2 R2 -> R1 75 4B 01001011 MOV R1, R3 R3 -> R1 76 4C 01001100 MOV R1, DPH DPH -> R1 77 4D 01001101 MOV R1, DPL DPL -> R1 78 4E 01001110 MOV R1, SPH SPH -> R1 79 4F 01001111 MOV R1, SPL SPL -> R1 80 50 01010000 MOV R2, R0 R0 -> R2 81 51 01010001 MOV R2, R1 R1 -> R2 82 52 01010010 MOV R2, @DPTR main[DPTR] -> R2 83 53 01010011 MOV R2, R3 R3 -> R2 84 54 01010100 MOV R2, DPH DPH -> R2 85 55 01010101 MOV R2, DPL DPL -> R2 86 56 01010110 MOV R2, SPH SPH -> R2 87 57 01010111 MOV R2, SPL SPL -> R2 88 58 01011000 MOV R3, R0 R0 -> R3 89 59 01011001 MOV R3, R1 R1 -> R3 90 5A 01011010 MOV R3, R2 R2 -> R3 91 5B 01011011 MOV R3, @DPTR main[DPTR] -> R3 92 5C 01011100 MOV R3, DPH DPH -> R3 93 5D 01011101 MOV R3, DPL DPL -> R3 94 5E 01011110 MOV R3, SPH SPH -> R3 95 5F 01011111 MOV R3, SPL SPL -> R3 96 60 01100000 MOV DPH, R0 R0 -> DPH 97 61 01100001 MOV DPH, R1 R1 -> DPH 98 62 01100010 MOV DPH, R2 R2 -> DPH 99 63 01100011 MOV DPH, R3 R3 -> DPH 100 64 01100100 MOV DPH, @DPTR main[DPTR] -> DPH 101 65 01100101 MOV DPH, DPL DPL -> DPH 102 66 01100110 MOV DPH, SPH SPH -> DPH 103 67 01100111 MOV DPH, SPL SPL -> DPH 104 68 01101000 MOV DPL, R0 R0 -> DPL 105 69 01101001 MOV DPL, R1 R1 -> DPL 106 6A 01101010 MOV DPL, R2 R2 -> DPL 107 6B 01101011 MOV DPL, R3 R3 -> DPL 108 6C 01101100 MOV DPL, DPH DPH -> DPL 109 6D 01101101 MOV DPL, @DPTR main[DPTR] -> DPL 110 6E 01101110 MOV DPL, SPH SPH -> DPL 111 6F 01101111 MOV DPL, SPL SPL -> DPL 112 70 01110000 MOV SPH, R0 R0 -> SPH 113 71 01110001 MOV SPH, R1 R1 -> SPH 114 72 01110010 MOV SPH, R2 R2 -> SPH 115 73 01110011 MOV SPH, R3 R3 -> SPH 116 74 01110100 MOV SPH, DPH DPH -> SPH 117 75 01110101 MOV SPH, DPL DPL -> SPH 118 76 01110110 MOV SPH, @DPTR main[DPTR] -> SPH 119 77 01110111 MOV SPH, SPL SPL -> SPH 120 78 01111000 MOV SPL, R0 R0 -> SPL 121 79 01111001 MOV SPL, R1 R1 -> SPL 122 7A 01111010 MOV SPL, R2 R2 -> SPL 123 7B 01111011 MOV SPL, R3 R3 -> SPL 124 7C 01111100 MOV SPL, DPH DPH -> SPL 125 7D 01111101 MOV SPL, DPL DPL -> SPL 126 7E 01111110 MOV SPL, SPH SPH -> SPL 127 7F 01111111 MOV SPL, @DPTR main[DPTR] -> SPL 128 80 10000000 ANL A, R0 A and R0 -> A 129 81 10000001 ANL A, R1 A and R1 -> A 130 82 10000010 ANL A, R2 A and R2 -> A 131 83 10000011 ANL A, R3 A and R3 -> A 132 84 10000100 ANL A, DPH A and DPH -> A 133 85 10000101 ANL A, DPL A and DPL -> A 134 86 10000110 ANL A, #data8 A and data8 -> A 135 87 10000111 ANL A, @DPTR A and main[DPTR] -> A 136 88 10001000 ORL A, R0 A or R0 -> A 137 89 10001001 ORL A, R1 A or R1 -> A 138 8A 10001010 ORL A, R2 A or R2 -> A 139 8B 10001011 ORL A, R3 A or R3 -> A 140 8C 10001100 ORL A, DPH A or DPH -> A 141 8D 10001101 ORL A, DPL A or DPL -> A 142 8E 10001110 ORL A, #data8 A or data8 -> A 143 8F 10001111 ORL A, @DPTR A or main[DPTR] -> A 144 90 10010000 XRL A, R0 A xor R0 -> A 145 91 10010001 XRL A, R1 A xor R1 -> A 146 92 10010010 XRL A, R2 A xor R2 -> A 147 93 10010011 XRL A, R3 A xor R3 -> A 148 94 10010100 XRL A, DPH A xor DPH -> A 149 95 10010101 XRL A, DPL A xor DPL -> A 150 96 10010110 XRL A, #data8 A xor data8 -> A 151 97 10010111 XRL A, @DPTR A xor main[DPTR] -> A 152 98 10011000 RL A rotate accumulator left 153 99 10011001 RLC A rotate accumulator left through carry 154 9A 10011010 RR A rotate accumulator right 155 9B 10011011 RRC A rotate accumulator right through carry 156 9C 10011100 INC DPTR DPTR + 1 -> DPTR Increment DPTR 157 9D 10011101 DEC DPTR DPTR -1 -> DPTR Decrement DPTR 158 9E 10011110 INC A A + 1 -> A Increment accumulator 159 9F 10011111 DEC A A - 1 -> A Decrement accumulator 160 A0 10100000 ADD A, R0 A + R0 -> A 161 A1 10100001 ADD A, R1 A + R1 -> A 162 A2 10100010 ADD A, R2 A + R2 -> A 163 A3 10100011 ADD A, R3 A + R3 -> A 164 A4 10100100 ADD A, DPH A + DPH -> A 165 A5 10100101 ADD A, DPL A + DPL -> A 166 A6 10100110 ADD A, #data8 A + data8 -> A 167 A7 10100111 ADD A, @DPTR A + main[DPTR] -> A 168 A8 10101000 ADDC A, R0 A + R0 + CY -> A 169 A9 10101001 ADDC A, R1 A + R1 + CY -> A 170 AA 10101010 ADDC A, R2 A + R2 + CY -> A 171 AB 10101011 ADDC A, R3 A + R3 + CY -> A 172 AC 10101100 ADDC A, DPH A + DPH + CY -> A 173 AD 10101101 ADDC A, DPL A + DPL + CY -> A 174 AE 10101110 ADDC A, #data8 A + data8 + CY -> A 175 AF 10101111 ADDC A, @DPTR A + main[DPTR] + CY -> A 176 B0 10110000 SUB A, R0 A - R0 -> A 177 B1 10110001 SUB A, R1 A - R1 -> A 178 B2 10110010 SUB A, R2 A - R2 -> A 179 B3 10110011 SUB A, R3 A - R3 -> A 180 B4 10110100 SUB A, DPH A - DPH -> A 181 B5 10110101 SUB A, DPL A - DPL -> A 182 B6 10110110 SUB A, #data8 A - data8 -> A 183 B7 10110111 SUB A, @DPTR A - main[DPTR] -> A 184 B8 10111000 SUBB A, R0 A - R0 - CY -> A 185 B9 10111001 SUBB A, R1 A - R1 - CY -> A 186 BA 10111010 SUBB A, R2 A - R2 - CY -> A 187 BB 10111011 SUBB A, R3 A - R3 - CY -> A 188 BC 10111100 SUBB A, DPH A - DPH - CY -> A 189 BD 10111101 SUBB A, DPL A - DPL - CY -> A 190 BE 10111110 SUBB A, #data8 A - data8 - CY -> A 191 BF 10111111 SUBB A, @DPTR A - main[DPTR] - CY -> A 192 C0 11000000 PJMP addr11 Page Jump [PC(15:11) 0 0 0 addr8] 193 C1 11000001 PJMP addr11 Page Jump [PC(15:11) 0 0 1 addr8] 194 C2 11000010 PJMP addr11 Page Jump [PC(15:11) 0 1 0 addr8] 195 C3 11000011 PJMP addr11 Page Jump [PC(15:11) 0 1 1 addr8] 196 C4 11000100 PJMP addr11 Page Jump [PC(15:11) 1 0 0 addr8] 197 C5 11000101 PJMP addr11 Page Jump [PC(15:11) 1 0 1 addr8] 198 C6 11000110 PJMP addr11 Page Jump [PC(15:11) 1 1 0 addr8] 199 C7 11000111 PJMP addr11 Page Jump [PC(15:11) 1 1 1 addr8] 200 C8 11001000 PCALL addr11 Page Call [PC(15:11) 0 0 0 addr8] 201 C9 11001001 PCALL addr11 Page Call [PC(15:11) 0 0 1 addr8] 202 CA 11001010 PCALL addr11 Page Call [PC(15:11) 0 1 0 addr8] 203 CB 11001011 PCALL addr11 Page Call [PC(15:11) 0 1 1 addr8] 204 CC 11001100 PCALL addr11 Page Call [PC(15:11) 1 0 0 addr8] 205 CD 11001101 PCALL addr11 Page Call [PC(15:11) 1 0 1 addr8] 206 CE 11001110 PCALL addr11 Page Call [PC(15:11) 1 1 0 addr8] 207 CF 11001111 PCALL addr11 Page Call [PC(15:11) 1 1 1 addr8] 208 D0 11010000 DJNZ R0, rel8 Decrement R0 and jump if not zero 209 D1 11010001 DJNZ R1, rel8 Decrement R1 and jump if not zero 210 D2 11010010 DJNZ R2, rel8 Decrement R2 and jump if not zero 211 D3 11010011 DJNZ R3, rel8 Decrement R3 and jump if not zero 212 D4 11010100 CJNE R0, #data, rel8 Compare R0 with data8 and jump if not equal 213 D5 11010101 CJNE R1, #data, rel8 Compare R1 with data8 and jump if not equal 214 D6 11010110 CJNE R2, #data, rel8 Compare R2 with data8 and jump if not equal 215 D7 11010111 CJNE R3, #data, rel8 Compare R3 with data8 and jump if not equal 216 D8 11011000 LJMP addr16 Long jump to addr16 217 D9 11011001 LCALL addr16 Long call to subroutine at addr16 218 DA 11011010 RET return from subroutine 219 DB 11011011 RETI return from interrupt 220 DC 11011100 SJMP rel8 short (relative) jump 221 DD 11011101 JMP @A+DPTR Indexed indirect jump relative to DPTR 222 DE 11011110 JMP @DPTR jump indirect to DPTR 223 DF 11011111 CJNE A, #data8, rel8 Compare A with data8 and jump if not equal 224 E0 11100000 JZ rel8 Jump if zero 225 E1 11100001 JNZ rel8 Jump if not zero 226 E2 11100010 JC rel8 Jump if carry 227 E3 11100011 JNC rel8 Jump if not carry 228 E4 11100100 JPO rel8 Jump if parity odd 229 E5 11100101 JPE rel8 Jump if parity even 230 E6 11100110 JS rel8 Jump if sign (negative) 231 E7 11100111 JNS rel8 Jump if not sign (positive) 232 E8 11101000 PUSH R0 Push R0 to the stack 233 E9 11101001 PUSH R1 Push R1 to the stack 234 EA 11101010 PUSH R2 Push R2 to the stack 235 EB 11101011 PUSH R3 Push R3 to the stack 236 EC 11101100 PUSH DPH Push DPH to the stack 237 ED 11101101 PUSH DPL Push DPL to the stack 238 EE 11101110 PUSH A Push Accumulator to the stack 239 EF 11101111 PUSH FLAGS Push Flags register to the stack 240 F0 11110000 POP R0 Pop top off stack to R0 241 F1 11110001 POP R1 Pop top off stack to R1 242 F2 11110010 POP R2 Pop top off stack to R2 243 F3 11110011 POP R3 Pop top off stack to R3 244 F4 11110100 POP DPH Pop top off stack to DPH 245 F5 11110101 POP DPL Pop top off stack to DPL 246 F6 11110110 POP A Pop top off stack to Accumulator 247 F7 11110111 POP FLAGS Pop top off stack to Flags register 248 F8 11111000 MUL R0, R1 R0 * R1 -> {R0 R1} unsigned integer multiply R0 by R1, 16-bit result left in R0 and R1, R0 holds most significant byte 249 F9 11111001 DIV R0, R1 R0 / R1 -> {R0 R1} unsigned integer division R0 by R1, 16-bit result left in R0 and R1, R0 holds most significant byte 250 FA 11111010 DA A Decimal adjust accumulator 251 FB 11111011 reserved currently unallocated opcode - treat as NOP 252 FC 11111100 IN A, port_addr Input value on I/O port 'port_addr' to accumulator 253 FD 11111101 OUT port_addr, A Output accumulator value to I/O port 'port_addr' 254 FE 11111110 INT vect8 Software interrupt at vector vect8 255 FF 11111111 HLT Halt processor