mirror of
https://github.com/larsbrinkhoff/awesome-cpus
synced 2025-04-18 19:12:42 +03:00
195 lines
5.9 KiB
Plaintext
195 lines
5.9 KiB
Plaintext
68000abc.txt
|
|
Instruction set of the 68000 in alphabetical order
|
|
1988/wjvg
|
|
|
|
0 2 3 4 5
|
|
abcd Ds,Dd 1100 ddd100 000sss
|
|
abcd -(As),-(Ad) 1100 ddd100 001sss
|
|
|
|
add.z a,Dd 1101 ddd0zz aaaaaa
|
|
add.z Ds,a 1101 sss1zz aaaaaa
|
|
adda.z a,Ad 1101 dddz11 aaaaaa
|
|
addi.z #kz,a 0000 0110zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
addq.z #k3,a 0101 kkk0zz aaaaaa
|
|
addx.z Ds,Dd 1101 ddd1zz 000sss
|
|
addx.z -(As),-(Ad) 1101 ddd1zz 001sss
|
|
|
|
and.z a,Dd 1100 ddd0zz aaaaaa
|
|
and.z Ds,a 1100 sss1zz aaaaaa
|
|
andi.z #kz,a 0000 0010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
|
|
asld.z Ds,Dd 1110 sss1zz 100ddd
|
|
asld.z #k,Dd 1110 kkk1zz 000ddd
|
|
asld.w #1,a 1110 000111 aaaaaa
|
|
|
|
asrd.z Ds,Dd 1110 sss0zz 100ddd
|
|
asrd.z #k,Dd 1110 kkk0zz 000ddd
|
|
asrd.w #1,a 1110 000011 aaaaaa
|
|
|
|
bcc label 0110 ccccll llllll if zero, a 16bit address follows
|
|
|
|
bra label 0110 0000ll llllll if zero, a 16bit address follows
|
|
bsr label 0110 0001ll llllll if zero, a 16bit address follows
|
|
|
|
bchg #n,a 0000 100001 aaaaaa 00000000 000nnnnn
|
|
bchg Ds,a 0000 sss101 aaaaaa
|
|
bclr #n,a 0000 100010 aaaaaa 00000000 000nnnnn
|
|
bclr Ds,a 0000 sss110 aaaaaa
|
|
bset #n,a 0000 100011 aaaaaa 00000000 000nnnnn
|
|
bset Ds,a 0000 sss111 aaaaaa
|
|
btst #n,a 0000 100000 aaaaaa 00000000 000nnnnn
|
|
btst Ds,a 0000 sss100 aaaaaa
|
|
|
|
chk.w a,Dd 0100 ddd110 aaaaaa
|
|
clr.z a 0100 0010zz aaaaaa
|
|
|
|
cmp.z a,Dd 1011 ddd0zz aaaaaa
|
|
cmpa.z a,Ad 1011 dddz11 aaaaaa
|
|
cmpi.z #kz,a 0000 1100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
|
|
cmpm.z Ds,Dd 1011 ddd1zz 000sss
|
|
cmpm.z (As)+,(Ad)+ 1011 ddd1zz 001sss
|
|
|
|
db(cc) Ds,label 0101 cccc11 001sss llllllll llllllll
|
|
|
|
divs.w a,Dd 1000 ddd111 aaaaaa
|
|
divu.w a,Dd 1000 ddd011 aaaaaa
|
|
|
|
eor.z a,Dd 1011 ddd1zz aaaaaa
|
|
eori.z #kz,a 0000 1010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
|
|
exg.l As,Ad 1100 ddd101 001sss
|
|
exg.l Ds,Dd 1100 ddd101 000sss
|
|
exg.l As,Dd 1100 ddd110 001sss
|
|
ext.z Dd 0100 10001z 000ddd
|
|
|
|
jmp a 0100 111011 aaaaaa
|
|
jsr a 0100 111010 aaaaaa
|
|
|
|
lea a,Ad 0100 ddd111 aaaaaa
|
|
link As,d16 0100 111001 010sss dddddddd dddddddd
|
|
|
|
lsld.z Ds,Dd 1110 sss1zz 101ddd
|
|
lsld.z #k,Dd 1110 kkk1zz 001ddd
|
|
lsld.w #1,a 1110 001111 aaaaaa
|
|
lsrd.z Ds,Dd 1110 sss0zz 101ddd
|
|
lsrd.z #k,Dd 1110 kkk0zz 001ddd
|
|
lsrd.w #1,a 1110 001011 aaaaaa
|
|
|
|
move SR,a 0100 000011 aaaaaa
|
|
move a,CCR 0100 010011 aaaaaa
|
|
move a,SR 0100 011011 aaaaaa
|
|
move As,USP 0100 111001 100sss
|
|
move USP,Ad 0100 111001 101ddd
|
|
move.b as,ad 0001 dddddd ssssss (dddddd reversed)
|
|
move.l as,ad 0010 dddddd ssssss (dddddd reversed)
|
|
move.w as,ad 0011 dddddd ssssss (dddddd reversed)
|
|
|
|
movem.z a,reg-list 0100 11001z aaaaaa a6543210 d6543210
|
|
movem.z reg-list,a 0100 10001z aaaaaa a6543210 d6543210
|
|
movep.z Ds,d16(Ad) 0000 sss11z 001ddd dddddddd dddddddd
|
|
movep.z d16(As),Dd 0000 ddd10z 001sss dddddddd dddddddd
|
|
|
|
moveq.l #k8,Dd 0111 ddd0kk kkkkkk
|
|
|
|
muls.w a,Dd 1100 ddd111 aaaaaa
|
|
mulu.w a,Dd 1100 ddd011 aaaaaa
|
|
|
|
nbcd a 0100 100000 aaaaaa
|
|
|
|
neg.z a 0100 0100zz aaaaaa
|
|
negx.z a 0100 0000zz aaaaaa
|
|
|
|
nop 0100 111001 110001
|
|
not.z a 0100 0110zz aaaaaa
|
|
|
|
or.z a,Dd 1000 ddd0zz aaaaaa
|
|
or.z Ds,a 1000 sss1zz aaaaaa
|
|
ori.z #kz,a 0000 0000zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
|
|
pea a 0100 100001 aaaaaa
|
|
reset 0100 111001 110000
|
|
|
|
rold.z Ds,Dd 1110 sss1zz 111ddd
|
|
rold.z #k,Dd 1110 kkk1zz 011ddd
|
|
rold.w #1,a 1110 011111 aaaaaa
|
|
rord.z Ds,Dd 1110 sss0zz 111ddd
|
|
rord.z #k,Dd 1110 kkk0zz 011ddd
|
|
rord.w #1,a 1110 011011 aaaaaa
|
|
|
|
roxld.z Ds,Dd 1110 sss1zz 110ddd
|
|
roxld.z #k,Dd 1110 kkk1zz 010ddd
|
|
roxld.w #1,a 1110 010111 aaaaaa
|
|
roxrd.z Ds,Dd 1110 sss0zz 110ddd
|
|
roxrd.z #k,Dd 1110 kkk0zz 010ddd
|
|
roxrd.w #1,a 1110 010011 aaaaaa
|
|
|
|
rte 0100 111001 110011
|
|
rtr 0100 111001 110111
|
|
rts 0100 111001 110101
|
|
|
|
sbcd Ds,Dd 1000 ddd100 000sss
|
|
sbcd -(As),-(Ad) 1000 ddd100 001sss
|
|
stcc.b a 0101 cccc11 aaaaaa
|
|
stop #k16 0100 111001 110010 kkkkkkkk kkkkkkkk
|
|
|
|
sub.z Ds,a 1001 sss1zz aaaaaa
|
|
sub.z a,Dd 1001 ddd0zz aaaaaa
|
|
subi.z #kz,a 0000 0100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk
|
|
suba.z a,Ad 1001 dddz11 aaaaaa
|
|
subq.z #k3,a 0101 kkk1zz aaaaaa
|
|
subx.z Ds,Dd 1001 ddd1zz 000sss
|
|
subx.z -(As),-(Ad) 1001 ddd1zz 001sss
|
|
|
|
swap.w Dd 0100 100001 000ddd
|
|
tas.b a 0100 101011 aaaaaa
|
|
trap vector 0100 111001 00vvvv
|
|
trapv 0100 111001 110110
|
|
tst.z a 0100 1010zz aaaaaa
|
|
|
|
unlk Ad 0100 111001 011ddd
|
|
|
|
general subfields
|
|
|
|
zz 00=b, 01=w, 10=l
|
|
z 0=w, 1=l
|
|
kkk immediate data in addq etc.: 0==8
|
|
immediate data in movq is sign extended to 32bits
|
|
shift count also represents 1..8 (how?)
|
|
|
|
addresssing modes (aaaaaa):
|
|
|
|
000 rrr Dr
|
|
001 rrr Ar
|
|
010 rrr (Ar)
|
|
011 rrr (Ar)+
|
|
100 rrr -(Ar)
|
|
101 rrr d16(Ar) dddddddd dddddddd
|
|
110 rrr d8(Ar,ix) aiiiz000 dddddddd
|
|
111 000 addr16 dddddddd dddddddd
|
|
111 001 addr32 dddddddd dddddddd ddddddddd dddddddd
|
|
111 010 d16(PC) dddddddd dddddddd
|
|
111 011 d8(PC,ix) aiiiz000 dddddddd
|
|
111 100 imm/implied
|
|
|
|
flags:
|
|
|
|
0000 t allways or bra ipv btr
|
|
0001 f never or bsr ipv bnv
|
|
0010 hi
|
|
0011 ls
|
|
0100 cc
|
|
0101 cs
|
|
0110 ne
|
|
0111 eq
|
|
1000 vc
|
|
1001 vs
|
|
1010 pl
|
|
1011 mi
|
|
1100 ge
|
|
1101 lt
|
|
1110 gt
|
|
1111 le
|
|
|
|
|