mirror of
https://github.com/larsbrinkhoff/awesome-cpus
synced 2025-04-18 19:12:42 +03:00
180 lines
8.3 KiB
Plaintext
180 lines
8.3 KiB
Plaintext
68000bin.txt
|
|
Instruction set of the 68000 in binary order
|
|
1988/wjvg
|
|
|
|
0 2 3 4 5
|
|
0000 0000zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk ori.z #kz,a
|
|
0000 0010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk andi.z #kz,a
|
|
0000 0100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk subi.z #kz,a
|
|
0000 0110zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk addi.z #kz,a
|
|
0000 1010zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk eori.z #kz,a
|
|
0000 1100zz aaaaaa kkkkkkkk kkkkkkkk kifz==lk kifz==lk cmpi.z #kz,a
|
|
|
|
0000 100000 aaaaaa 00000000 000nnnnn btst #n,a
|
|
0000 100001 aaaaaa 00000000 000nnnnn bchg #n,a
|
|
0000 100010 aaaaaa 00000000 000nnnnn bclr #n,a
|
|
0000 100011 aaaaaa 00000000 000nnnnn bset #n,a
|
|
|
|
0000 sss100 aaaaaa btst Ds,a
|
|
0000 sss101 aaaaaa bchg Ds,a
|
|
0000 sss110 aaaaaa bclr Ds,a
|
|
0000 sss111 aaaaaa bset Ds,a
|
|
|
|
0000 ddd10z 001sss dddddddd dddddddd movep.z d16(As),Dd
|
|
0000 sss11z 001ddd dddddddd dddddddd movep.z Ds,d16(Ad)
|
|
|
|
0001 dddddd ssssss (dddddd reversed) move.b as,ad
|
|
0010 dddddd ssssss (dddddd reversed) move.l as,ad
|
|
0011 dddddd ssssss (dddddd reversed) move.w as,ad
|
|
|
|
0100 0000zz aaaaaa negx.z a
|
|
0100 000011 aaaaaa move SR,a
|
|
0100 0010zz aaaaaa clr.z a
|
|
0100 0100zz aaaaaa neg.z a
|
|
0100 010011 aaaaaa move a,CCR
|
|
0100 0110zz aaaaaa not.z a
|
|
0100 011011 aaaaaa move a,SR
|
|
|
|
0100 100000 aaaaaa nbcd a
|
|
0100 100001 000ddd swap.w Dd
|
|
0100 100001 aaaaaa pea a
|
|
0100 10001z 000ddd ext.z Dd
|
|
0100 10001z aaaaaa a6543210 d6543210 movem.z reg-list,a
|
|
0100 1010zz aaaaaa tst.z a
|
|
0100 101011 aaaaaa tas.b a
|
|
0100 11001z aaaaaa a6543210 d6543210 movem.z a,reg-list
|
|
0100 111001 00vvvv trap #vector
|
|
0100 111001 010sss dddddddd dddddddd link As,#k16
|
|
0100 111001 011ddd unlk Ad
|
|
0100 111001 100sss move As,USP
|
|
0100 111001 101ddd move USP,Ad
|
|
0100 111001 110000 reset
|
|
0100 111001 110001 nop
|
|
0100 111001 110010 kkkkkkkk kkkkkkkk stop #k16
|
|
0100 111001 110011 rte
|
|
0100 111001 110101 rts
|
|
0100 111001 110110 trapv
|
|
0100 111001 110111 rtr
|
|
0100 111010 aaaaaa jsr a
|
|
0100 111011 aaaaaa jmp a
|
|
|
|
0100 ddd110 aaaaaa chk.w a,Dd
|
|
0100 ddd111 aaaaaa lea a,Ad
|
|
|
|
0101 cccc11 001sss llllllll llllllll db(cc) Ds,label
|
|
0101 cccc11 aaaaaa stcc.b a
|
|
0101 kkk0zz aaaaaa addq.z #k3,a
|
|
0101 kkk1zz aaaaaa subq.z #k3,a
|
|
0110 0000ll llllll if zero, a 16bit address follows bra label
|
|
0110 0001ll llllll if zero, a 16bit address follows bsr label
|
|
0110 ccccll llllll if zero, a 16bit address follows bcc label
|
|
0111 ddd0kk kkkkkk moveq.l #k8,Dd
|
|
|
|
1000 ddd0zz aaaaaa or.z a,Dd
|
|
1000 ddd011 aaaaaa divu.w a,Dd
|
|
1000 ddd100 000sss sbcd Ds,Dd
|
|
1000 ddd100 001sss sbcd -(As),-(Ad)
|
|
1000 sss1zz aaaaaa or.z Ds,a
|
|
1000 ddd111 aaaaaa divs.w a,Dd
|
|
|
|
1001 ddd0zz aaaaaa sub.z a,Dd
|
|
1001 ddd1zz 000sss subx.z Ds,Dd
|
|
1001 ddd1zz 001sss subx.z -(As),-(Ad)
|
|
1001 sss1zz aaaaaa sub.z Ds,a
|
|
1001 dddz11 aaaaaa suba.z a,Ad
|
|
|
|
1011 ddd0zz aaaaaa cmp.z a,Dd
|
|
1011 ddd1zz 000sss cmpm.z Ds,Dd
|
|
1011 ddd1zz 001sss cmpm.z (As)+,(Ad)+
|
|
1011 ddd1zz aaaaaa eor.z a,Dd
|
|
1011 dddz11 aaaaaa cmpa.z a,Ad
|
|
|
|
1100 ddd0zz aaaaaa and.z a,Dd
|
|
1100 ddd011 aaaaaa mulu.w a,Dd
|
|
1100 ddd100 000sss abcd Ds,Dd
|
|
1100 ddd101 000sss exg.l Ds,Dd
|
|
1100 ddd100 001sss abcd -(As),-(Ad)
|
|
1100 ddd101 001sss exg.l As,Ad
|
|
1100 ddd110 001sss exg.l As,Dd
|
|
1100 sss1zz aaaaaa and.z Ds,a
|
|
1100 ddd111 aaaaaa muls.w a,Dd
|
|
|
|
1101 ddd0zz aaaaaa add.z a,Dd
|
|
1101 ddd1zz 000sss addx.z Ds,Dd
|
|
1101 ddd1zz 001sss addx.z -(As),-(Ad)
|
|
1101 sss1zz aaaaaa add.z Ds,a
|
|
1101 dddz11 aaaaaa adda.z a,Ad
|
|
|
|
1110 kkk0zz 000ddd asrd.z #k,Dd
|
|
1110 kkk0zz 001ddd lsrd.z #k,Dd
|
|
1110 kkk0zz 010ddd roxrd.z #k,Dd
|
|
1110 kkk0zz 011ddd rord.z #k,Dd
|
|
1110 kkk1zz 000ddd asld.z #k,Dd
|
|
1110 kkk1zz 001ddd lsld.z #k,Dd
|
|
1110 kkk1zz 010ddd roxld.z #k,Dd
|
|
1110 kkk1zz 011ddd rold.z #k,Dd
|
|
|
|
1110 sss0zz 100ddd asrd.z Ds,Dd
|
|
1110 sss0zz 101ddd lsrd.z Ds,Dd
|
|
1110 sss0zz 110ddd roxrd.z Ds,Dd
|
|
1110 sss0zz 111ddd rord.z Ds,Dd
|
|
1110 sss1zz 100ddd asld.z Ds,Dd
|
|
1110 sss1zz 101ddd lsld.z Ds,Dd
|
|
1110 sss1zz 110ddd roxld.z Ds,Dd
|
|
1110 sss1zz 111ddd rold.z Ds,Dd
|
|
|
|
1110 000011 aaaaaa asrd.w #1,a
|
|
1110 000111 aaaaaa asld.w #1,a
|
|
1110 001011 aaaaaa lsrd.w #1,a
|
|
1110 001111 aaaaaa lsld.w #1,a
|
|
1110 010011 aaaaaa roxrd.w #1,a
|
|
1110 010111 aaaaaa roxld.w #1,a
|
|
1110 011011 aaaaaa rord.w #1,a
|
|
1110 011111 aaaaaa rold.w #1,a
|
|
|
|
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?)
|
|
|
|
addressing 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
|
|
|
|
*end
|
|
|
|
|