Reference
Motorola 68000
115 mnemonics, 162 forms, words big-endian. Generated from crates/isa/src/m68k.rs.
The 68000 packs operand fields into the opcode word itself, and how many extension words follow depends on the effective address those fields select — so a form gives its base opcode word, the sizes it assembles at, and its operands, rather than a fixed byte count.
This is the curriculum subset, and it grows: a mnemonic absent here is absent from the assembler too.
Operands
| Written | Meaning |
|---|---|
<ea> |
A general effective address |
#vec |
A 4-bit TRAP vector |
#imm8 |
MOVEQ’s signed 8-bit immediate |
Dn |
A data register number |
CCR |
The condition-code register |
SR |
The status register |
USP |
The user stack pointer |
An |
An address register number |
#imm |
An immediate sized by the instruction |
#imm16 |
An immediate as one extension word |
disp16 |
A PC-relative branch displacement, word form |
(An) |
An address register in a fixed indirect mode |
#1-8 |
A 3-bit quick immediate, 8 encoded as 000 |
reglist |
A register-list mask |
RTS
Return from subroutine
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E75 |
— |
NOP
No operation
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E71 |
— |
JMP
Jump
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4EC0 |
<ea> |
JSR
Jump to subroutine
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E80 |
<ea> |
RTE
Return from exception
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E73 |
— |
RTR
Return and restore condition codes
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E77 |
— |
TRAPV
Trap on overflow
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E76 |
— |
TRAP
Trap
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E40 |
#vec |
RESET
Reset external devices
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E70 |
— |
ILLEGAL
Take the illegal-instruction trap
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4AFC |
— |
MOVEQ
Move quick (sign-extended 8-bit to long)
| Sizes | Base word | Operands |
|---|---|---|
| .l | 7000 |
#imm8, Dn |
MOVEA
Move address
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0000 |
<ea>, <ea> |
MOVE
Move data
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0000 |
<ea>, <ea> |
| .w | 44C0 |
<ea>, CCR |
| .w | 46C0 |
<ea>, SR |
| .w | 40C0 |
SR, <ea> |
| .w | 4E68 |
USP, An |
| .w | 4E60 |
An, USP |
LEA
Load effective address
| Sizes | Base word | Operands |
|---|---|---|
| .l | 41C0 |
<ea>, An |
ADD
Add binary
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | D000 |
<ea>, Dn |
| .b/.w/.l | D100 |
Dn, <ea> |
| .w/.l | D0C0 |
<ea>, An |
ADDI
Add immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0600 |
#imm, <ea> |
SUBI
Subtract immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0400 |
#imm, <ea> |
CMPI
Compare immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0C00 |
#imm, <ea> |
ORI
Inclusive-OR immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0000 |
#imm, <ea> |
| .w | 003C |
#imm16, CCR |
| .w | 007C |
#imm16, SR |
ANDI
AND immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0200 |
#imm, <ea> |
| .w | 023C |
#imm16, CCR |
| .w | 027C |
#imm16, SR |
EORI
Exclusive-OR immediate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 0A00 |
#imm, <ea> |
| .w | 0A3C |
#imm16, CCR |
| .w | 0A7C |
#imm16, SR |
BRA
Branch always
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6000 |
disp16 |
BSR
Branch to subroutine
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6100 |
disp16 |
BEQ
Branch if equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6700 |
disp16 |
BNE
Branch if not equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6600 |
disp16 |
BHI
Branch if higher
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6200 |
disp16 |
BLS
Branch if lower or same
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6300 |
disp16 |
BCC
Branch if carry clear (higher or same)
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6400 |
disp16 |
BCS
Branch if carry set (lower)
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6500 |
disp16 |
BVC
Branch if overflow clear
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6800 |
disp16 |
BVS
Branch if overflow set
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6900 |
disp16 |
BGE
Branch if greater or equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6C00 |
disp16 |
BLT
Branch if less than
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6D00 |
disp16 |
BGT
Branch if greater than
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6E00 |
disp16 |
BLE
Branch if less or equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6F00 |
disp16 |
BMI
Branch if minus
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6B00 |
disp16 |
BPL
Branch if plus
| Sizes | Base word | Operands |
|---|---|---|
| .w | 6A00 |
disp16 |
SUB
Subtract binary
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 9000 |
<ea>, Dn |
| .b/.w/.l | 9100 |
Dn, <ea> |
| .w/.l | 90C0 |
<ea>, An |
AND
Logical AND
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | C000 |
<ea>, Dn |
| .b/.w/.l | C100 |
Dn, <ea> |
OR
Logical OR
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 8000 |
<ea>, Dn |
| .b/.w/.l | 8100 |
Dn, <ea> |
CMP
Compare
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | B000 |
<ea>, Dn |
| .w/.l | B0C0 |
<ea>, An |
EOR
Exclusive OR
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | B100 |
Dn, <ea> |
MULU
Unsigned multiply
| Sizes | Base word | Operands |
|---|---|---|
| .w | C0C0 |
<ea>, Dn |
DIVU
Unsigned divide
| Sizes | Base word | Operands |
|---|---|---|
| .w | 80C0 |
<ea>, Dn |
MULS
Signed multiply
| Sizes | Base word | Operands |
|---|---|---|
| .w | C1C0 |
<ea>, Dn |
DIVS
Signed divide
| Sizes | Base word | Operands |
|---|---|---|
| .w | 81C0 |
<ea>, Dn |
ADDX
Add extended
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | D100 |
Dn, Dn |
| .b/.w/.l | D108 |
(An), (An) |
SUBX
Subtract extended
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 9100 |
Dn, Dn |
| .b/.w/.l | 9108 |
(An), (An) |
ABCD
Add decimal with extend
| Sizes | Base word | Operands |
|---|---|---|
| .b | C100 |
Dn, Dn |
| .b | C108 |
(An), (An) |
SBCD
Subtract decimal with extend
| Sizes | Base word | Operands |
|---|---|---|
| .b | 8100 |
Dn, Dn |
| .b | 8108 |
(An), (An) |
CMPM
Compare memory with postincrement
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | B108 |
(An), (An) |
EXG
Exchange registers
| Sizes | Base word | Operands |
|---|---|---|
| .w | C140 |
Dn, Dn |
| .w | C148 |
An, An |
| .w | C188 |
Dn, An |
| .w | C188 |
An, Dn |
TST
Test (set flags)
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 4A00 |
<ea> |
CLR
Clear
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 4200 |
<ea> |
NEG
Negate
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 4400 |
<ea> |
NOT
Logical complement
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 4600 |
<ea> |
NEGX
Negate with extend
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 4000 |
<ea> |
NBCD
Negate BCD with extend
| Sizes | Base word | Operands |
|---|---|---|
| .b | 4800 |
<ea> |
TAS
Test and set (atomic)
| Sizes | Base word | Operands |
|---|---|---|
| .b | 4AC0 |
<ea> |
PEA
Push effective address
| Sizes | Base word | Operands |
|---|---|---|
| .l | 4840 |
<ea> |
LINK
Link and allocate stack frame
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E50 |
An, #imm16 |
UNLK
Unlink stack frame
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E58 |
An |
STOP
Load status register and stop
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4E72 |
#imm16 |
CHK
Check register against bounds
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4180 |
<ea>, Dn |
ADDQ
Add quick
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 5000 |
#1-8, <ea> |
SUBQ
Subtract quick
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | 5100 |
#1-8, <ea> |
SWAP
Swap register halves
| Sizes | Base word | Operands |
|---|---|---|
| .w | 4840 |
Dn |
EXT
Sign-extend
| Sizes | Base word | Operands |
|---|---|---|
| .w/.l | 4880 |
Dn |
DBF
Decrement and branch (never on condition)
| Sizes | Base word | Operands |
|---|---|---|
| .w | 51C8 |
Dn, disp16 |
DBRA
Decrement and branch (alias of DBF)
| Sizes | Base word | Operands |
|---|---|---|
| .w | 51C8 |
Dn, disp16 |
DBT
Decrement and branch unless true
| Sizes | Base word | Operands |
|---|---|---|
| .w | 50C8 |
Dn, disp16 |
DBHI
Decrement and branch unless higher
| Sizes | Base word | Operands |
|---|---|---|
| .w | 52C8 |
Dn, disp16 |
DBLS
Decrement and branch unless lower or same
| Sizes | Base word | Operands |
|---|---|---|
| .w | 53C8 |
Dn, disp16 |
DBCC
Decrement and branch unless carry clear
| Sizes | Base word | Operands |
|---|---|---|
| .w | 54C8 |
Dn, disp16 |
DBCS
Decrement and branch unless carry set
| Sizes | Base word | Operands |
|---|---|---|
| .w | 55C8 |
Dn, disp16 |
DBNE
Decrement and branch unless not equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 56C8 |
Dn, disp16 |
DBEQ
Decrement and branch unless equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 57C8 |
Dn, disp16 |
DBVC
Decrement and branch unless overflow clear
| Sizes | Base word | Operands |
|---|---|---|
| .w | 58C8 |
Dn, disp16 |
DBVS
Decrement and branch unless overflow set
| Sizes | Base word | Operands |
|---|---|---|
| .w | 59C8 |
Dn, disp16 |
DBPL
Decrement and branch unless plus
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5AC8 |
Dn, disp16 |
DBMI
Decrement and branch unless minus
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5BC8 |
Dn, disp16 |
DBGE
Decrement and branch unless greater or equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5CC8 |
Dn, disp16 |
DBLT
Decrement and branch unless less than
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5DC8 |
Dn, disp16 |
DBGT
Decrement and branch unless greater than
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5EC8 |
Dn, disp16 |
DBLE
Decrement and branch unless less or equal
| Sizes | Base word | Operands |
|---|---|---|
| .w | 5FC8 |
Dn, disp16 |
SNE
Set if not equal
| Sizes | Base word | Operands |
|---|---|---|
| .b | 56C0 |
<ea> |
SEQ
Set if equal
| Sizes | Base word | Operands |
|---|---|---|
| .b | 57C0 |
<ea> |
ST
Set always
| Sizes | Base word | Operands |
|---|---|---|
| .b | 50C0 |
<ea> |
SF
Set never (clear)
| Sizes | Base word | Operands |
|---|---|---|
| .b | 51C0 |
<ea> |
SHI
Set if higher
| Sizes | Base word | Operands |
|---|---|---|
| .b | 52C0 |
<ea> |
SLS
Set if lower or same
| Sizes | Base word | Operands |
|---|---|---|
| .b | 53C0 |
<ea> |
SCC
Set if carry clear (higher or same)
| Sizes | Base word | Operands |
|---|---|---|
| .b | 54C0 |
<ea> |
SCS
Set if carry set (lower)
| Sizes | Base word | Operands |
|---|---|---|
| .b | 55C0 |
<ea> |
SVC
Set if overflow clear
| Sizes | Base word | Operands |
|---|---|---|
| .b | 58C0 |
<ea> |
SVS
Set if overflow set
| Sizes | Base word | Operands |
|---|---|---|
| .b | 59C0 |
<ea> |
SPL
Set if plus
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5AC0 |
<ea> |
SMI
Set if minus
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5BC0 |
<ea> |
SGE
Set if greater or equal
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5CC0 |
<ea> |
SLT
Set if less than
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5DC0 |
<ea> |
SGT
Set if greater than
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5EC0 |
<ea> |
SLE
Set if less or equal
| Sizes | Base word | Operands |
|---|---|---|
| .b | 5FC0 |
<ea> |
LSL
Logical shift left
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E108 |
#1-8, Dn |
| .b/.w/.l | E128 |
Dn, Dn |
| .w | E3C0 |
<ea> |
LSR
Logical shift right
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E008 |
#1-8, Dn |
| .b/.w/.l | E028 |
Dn, Dn |
| .w | E2C0 |
<ea> |
ASR
Arithmetic shift right
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E000 |
#1-8, Dn |
| .b/.w/.l | E020 |
Dn, Dn |
| .w | E0C0 |
<ea> |
ASL
Arithmetic shift left
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E100 |
#1-8, Dn |
| .b/.w/.l | E120 |
Dn, Dn |
| .w | E1C0 |
<ea> |
ROXR
Rotate right through extend
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E010 |
#1-8, Dn |
| .b/.w/.l | E030 |
Dn, Dn |
| .w | E4C0 |
<ea> |
ROXL
Rotate left through extend
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E110 |
#1-8, Dn |
| .b/.w/.l | E130 |
Dn, Dn |
| .w | E5C0 |
<ea> |
ROR
Rotate right
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E018 |
#1-8, Dn |
| .b/.w/.l | E038 |
Dn, Dn |
| .w | E6C0 |
<ea> |
ROL
Rotate left
| Sizes | Base word | Operands |
|---|---|---|
| .b/.w/.l | E118 |
#1-8, Dn |
| .b/.w/.l | E138 |
Dn, Dn |
| .w | E7C0 |
<ea> |
BTST
Test a bit
| Sizes | Base word | Operands |
|---|---|---|
| .b | 0800 |
#imm16, <ea> |
| .b | 0100 |
Dn, <ea> |
BSET
Test and set a bit
| Sizes | Base word | Operands |
|---|---|---|
| .b | 08C0 |
#imm16, <ea> |
| .b | 01C0 |
Dn, <ea> |
BCHG
Test and change a bit
| Sizes | Base word | Operands |
|---|---|---|
| .b | 0840 |
#imm16, <ea> |
| .b | 0140 |
Dn, <ea> |
BCLR
Test and clear a bit
| Sizes | Base word | Operands |
|---|---|---|
| .b | 0880 |
#imm16, <ea> |
| .b | 0180 |
Dn, <ea> |
MOVEM
Move multiple registers
| Sizes | Base word | Operands |
|---|---|---|
| .w/.l | 4880 |
reglist, <ea> |
| .w/.l | 4C80 |
<ea>, reglist |
MOVEP
Move peripheral data
| Sizes | Base word | Operands |
|---|---|---|
| .w/.l | 0108 |
disp16, Dn |
| .w/.l | 0188 |
Dn, disp16 |
Machines
Sources
Encodings on this page were taken from:
- M68000 Family Programmer’s Reference Manual — Motorola, 1992
- MC68000 8-/16-/32-Bit Microprocessors User’s Manual — Motorola, 1993