| Category | Opcode | Operands | Meaning |
|---|---|---|---|
| Load and store |
ld | ra, c2(rb) | Load from displacement address |
| ld | ra, c2 | Load from absolute address when rb is register 0 | |
| ldr | ra, c1 | Load from relative address | |
| st | ra, c2(rb) | Store into displacement address | |
| st | ra, c2 | Store into absolute address when rb is register 0 | |
| str | ra, c1 | Store into relative address | |
| la | ra, c2(rb) | Load value of displacement address into ra | |
| la | ra, c2 | Load value of absolute address into ra when rb is register 0 | |
| lar | ra, c1 | Load value of relative address into ra | |
| Arithmetic | add | ra, rb, rc | Add rb to rc, and put result in ra |
| addi | ra, rb, c2 | Add rb to immediate constant, and put result in ra | |
| sub | ra, rb, rc | Subtract rc from rb, and put result in ra | |
| neg | ra, rc | Place 2's complement negative of rc into ra | |
| and | ra, rb, rc | AND rb and rc, and put result in ra | |
| andi | ra, rb, c2 | AND rb and immediate constant, and put result in ra | |
| or | ra, rb, rc | OR rb and rc, and put result in ra | |
| ori | ra, rb, c2 | OR rb and immediate constant, and put result in ra | |
| not | ra, rc | Place logical NOT of rc into ra | |
| Shift | shr | ra, rb, c3 | Shift rb right into ra by constant shift count c3 <= 31 |
| shr | ra, rb, rc | Shift rb right into ra by count in rc; c3 is 0 | |
| shra | ra, rb, c3 | Shift rb right with sign-extend into ra by constant c3 | |
| shra | ra, rb, rc | Shift rb right with sign-extend into ra by count in rc | |
| shl | ra, rb, c3 | Shift rb left into ra by constant c3 | |
| shl | ra, rb, rc | Shift rb left into ra by count in rc; c3 is 0 | |
| shc | ra, rb, c3 | Shift rb left circularly into ra by constant c3 | |
| shc | ra, rb, rc | Shift rb left circularly into ra by count in rc; c3 is 0 | |
| Branch | br | rb, rc, c3 | Branch to target in rb if rc satisfies condition c3 |
| br | rb | Branch unconditionally to rb | |
| brnv | Branch never | ||
| brzr | r, rc | Branch to rb if rc is zero | |
| brnz | rb, rc | Branch to rb if rc is nonzero | |
| brpl | rb, rc | Branch to rb if rc is non-negative | |
| brmi | rb, rc | Branch to rb if rc is negative (sign is minus) | |
| brl | ra, rb, rc, c3 | Branch to rb if rc satisfies c3, and save PC in ra | |
| brl | ra, rb | Branch unconditionally to rb, and save PC in ra | |
| brlnv | ra | Do not branch, but save PC in ra | |
| brlzr | ra, rb, rc | Branch to rb if rc is zero, and save PC in ra | |
| brlnz | ra, rb, rc | Branch to rb if rc is nonzero, and save PC in ra | |
| brlmi | ra, rb, rc | Branch to rb if rc is negative, and save PC in ra | |
| brlpl | ra, rb, rc | Branch to rb if rc is non-negative, and save PC in ra |
| Category | Opcode | Operands | Meaning |
|---|---|---|---|
| Misc. | nop | No operation | |
| stop | Set Run to zero, halting the machine | ||
| een | Exception enable | ||
| edi | Exception disable | ||
| rfi | Return from interrupt PC <- IPC; enable exceptions | ||
| svi | ra, rb | Save II and IPC in ra and rb, respectively | |
| ri | ra, rb | Restore II and IPC from ra and rb, respectively |
| .org | VALUE | Load the program starting at the address Value |
| .equ | VALUE | Define the Label symbol to be the constant Value |
| .dcb | VALUE[,VALUE] | Allocate bytes and set to the 8-bit Values |
| .dch | VALUE[,VALUE] | Allocate halfwords and set to the 16-bit Values |
| .dc | VALUE[,VALUE] | Allocate memory words and set to the 32-bit Values |
| .db | COUNT | Allocate storage for Count 8-bit bytes |
| .dh | COUNT | Allocate storage for Count 16-bit halfwords |
| .dw | COUNT | Allocate storage for Count 32-bit words |