Actions

SCHG

68000 Instruction Set

From Sonic Retro

Segaretro-round.svg It has been suggested that this page be moved over to Sega Retro as to be in accordance with both sites' policies.
Please see the talk page for relevant discussion and export procedure.
Instruction Description Assembler Syntax Data Size Condition Codes
X N Z V C
ABCD Add BCD with Extend Dx,Dy
-(Ax),-(Ay)
B-- * U * U *
ADD ADD binary Dn,< ea >
< ea >,Dn
BWL * * * * *
ADDA ADD binary to An < ea >,An -WL - - - - -
ADDI Add Immediate #x,< ea > BWL * * * * *
ADDQ ADD 3-bit immediate #<1-8>,< ea > BWL * * * * *
ADDX ADD eXtended Dy,Dx
-(Ay),-(Ax)
BWL * * * * *
AND Bit-wise AND < ea >,Dn
Dn,< ea >
BWL - * * 0 0
ANDI Bit-wise AND with Immediate #< data>,< ea > BWL - * * 0 0
ASL Arithmetic Shift Left #<1-8>,Dy
Dx,Dy
< ea >
BWL * * * * *
ASR Arithmetic Shift Right BWL * * * * *
Bcc Conditional Branch Bcc.S < label>
Bcc.W < label>
BW- - - - - -
BCHG Test a Bit and ChanGe Dn,< ea >
#< data>,< ea >
B-L - - * - -
BCLR Test a Bit and CLEAR B-L - - * - -
BSET Test a Bit and SET B-L - - * - -
BSR Branch to SubRoutine BSR.S < label>
BSR.W < label>
BW- - - - - -
BTST Bit TeST Dn,< ea >
#< data>,< ea >
B-L - - * - -
CHK CHecK Dn Against Bounds < ea >,Dn -W- - * U U U
CLR CLEAR < ea > BWL - 0 1 0 0
CMP CoMPare < ea >,Dn BWL - * * * *
CMPA CoMPare Address < ea >,An -WL - * * * *
CMPI CoMPare Immediate #< data>,< ea > BWL - * * * *
CMPM CoMPare Memory (Ay)+,(Ax)+ BWL - * * * *
DBcc Looping Instruction DBcc Dn,< label> -W- - - - - -
DIVS DIVide Signed < ea >,Dn -W- - * * * 0
DIVU DIVide Unsigned < ea >,Dn -W- - * * * 0
EOR Exclusive OR Dn,< ea > BWL - * * 0 0
EORI Exclusive OR Immediate #< data>,< ea > BWL - * * 0 0
EXG Exchange any two registers Rx,Ry --L - - - - -
EXT Sign EXTend Dn -WL - * * 0 0
ILLEGAL ILLEGAl-Instruction Exception ILLEGAL - - - - -
JMP JuMP to Affective Address < ea > - - - - -
JSR Jump to SubRoutine < ea > - - - - -
LEA Load Effective Address < ea >,An --L - - - - -
LINK Allocate Stack Frame An,#< displacement> - - - - -
LSL Logical Shift Left Dx,Dy
#<1-8>,Dy
< ea >
BWL * * * 0 *
LSR Logical Shift Right BWL * * * 0 *
MOVE Between Effective Addresses < ea >,< ea > BWL - * * 0 0
MOVE To CCR < ea>,CCR -W- I I I I I
MOVE To SR < ea >,SR -W- I I I I I
MOVE From SR SR,< ea > -W- - - - - -
MOVE USP to/from Address Register USP,An
An,USP
--L - - - - -
MOVEA MOVE Address < ea >,An -WL - - - - -
MOVEM MOVE Multiple <register list>,< ea >
< ea >,<register list>
-WL - - - - -
MOVEP Move Peripheral Dn,x(An)
x(An),Dn
-WL - - - - -
MOVEQ Move 8-bit immediate #<-128.+127>,Dn --L - * * 0 0
MULS MULtiply Signed < ea >,Dn -W- - * * 0 0
MULU MULtiply Unsigned < ea >,Dn -W- - * * 0 0
NBCD Negate BCD < ea > B-- * U * U *
NEG NEGate < ea > BWL * * * * *
NEGX NEGate with eXtend < ea > BWL * * * * *
NOP No OPeration NOP - - - - -
NOT Form one's complement < ea > BWL - * * 0 0
OR Bit-wise OR < ea >,Dn
Dn,< ea >
BWL - * * 0 0
ORI Bit-wise OR with Immediate #< data>,< ea > BWL - * * 0 0
PEA Push Effective Address < ea > --L - - - - -
RESET RESET all external devices RESET - - - - -
ROL ROtate Left #<1-8>,Dy
Dx,Dy
< ea >
BWL - * * 0 *
ROR ROtate Right BWL - * * 0 *
ROXL ROtate Left with eXtend BWL * * * 0 *
ROXR ROtate Right with eXtend BWL * * * 0 *
RTE ReTurn from Exception RTE I I I I I
RTR ReTurn and Restore RTR I I I I I
RTS ReTurn from Subroutine RTS - - - - -
SBCD Subtract BCD with eXtend Dx,Dy
-(Ax),-(Ay)
B-- * U * U *
Scc Set to -1 if True, 0 if False < ea > B-- - - - - -
STOP Enable & wait for interrupts #< data> I I I I I
SUB SUBtract binary Dn,< ea >
< ea >,Dn
BWL * * * * *
SUBA SUBtract binary from An < ea >,An -WL - - - - -
SUBI SUBtract Immediate #x,< ea > BWL * * * * *
SUBQ SUBtract 3-bit immediate #< data>,< ea > BWL * * * * *
SUBX SUBtract eXtended Dy,Dx
-(Ay),-(Ax)
BWL * * * * *
SWAP SWAP words of Dn Dn -W- - * * 0 0
TAS Test & Set MSB & Set N/Z-bits < ea > B-- - * * 0 0
TRAP Execute TRAP Exception #< vector> - - - - -
TRAPV TRAPV Exception if V-bit Set TRAPV - - - - -
TST TeST for negative or zero < ea > BWL - * * 0 0
UNLK Deallocate Stack Frame An - - - - -

Legend

  • * - Set according to result of operation
  • - - Not affected
  • 0 - Cleared
  • 1 - Set
  • U - Outcome (state after operation) undefined
  • I - Set by immediate data
  • < ea > - Effective Address Operand
  • < data> - Immediate data
  • < label> - Assembler label
  • < vector> TRAP instruction Exception vector (0-15)
  • < rg.lst> MOVEM instruction register specification list
  • < displ.> LINK instruction negative displacement
Addressing Modes Syntax
Data Register Direct Dn
Address Register Direct An
Address Register Indirect (An)
Address Register Indirect with Post-Increment (An)+
Address Register Indirect with Pre-Decrement -(An)
Address Register Indirect with Displacement w(An)
Address Register Indirect with Index b(An,Rx)
Absolute Short w
Absolute Long l
Program Counter with Displacement w(PC)
Program Counter with Index b(PC,Rx)
Immediate #x
Status Register SR
Condition Code Register CCR

Legend

  • Dn - Data Register (n is 0-7)
  • An - Address Register (n is 0-7)
  • b - 08-bit constant
  • w - 16-bit constant
  • l - 32-bit constant
  • x - 8-, 16-, 32-bit constant
  • Rx - Index Register Specification, one of:
  • Dn.W - Low 16 bits of Data Register
  • Dn.L - All 32 bits of Data Register
  • An.W - Low 16 bits of Address Register
  • An.L - All 32 bits of Address Register


Condition Codes for Bcc, DBcc and Scc Instructions

Condition Codes set after CMP D0,D1 Instruction.

Relationship Unsigned Signed
D1 < D0 CS - Carry Bit Set/LO - LOwer LT - Less Than
D1 <= D0 LS - Lower or Same LE - Less than or Equal
D1 = D0 EQ - Equal (Z-bit Set)
D1 != D0 NE - Not Equal (Z-bit Clear)
D1 > D0 HI - HIgher than GT - Greater Than
D1 >= D0 CC - Carry Bit Clear/HS - Higher or Same GE - Greater than or Equal
D0 >= 0 PL - PLus (N-bit Clear)
D0 < 0 MI - MInus (N-bit Set)
VC - V-bit Clear (No Overflow)
VS - V-bit Set (Overflow)
Bcc only
RA - BRanch Always
DBcc only
F - Never Terminate (DBRA is an alternate to DBF)
T - Always Terminate
Scc only
SF - Never Set
ST - Always Set

References


Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information