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