Un autre exemple plutôt simple à comprendre:
clr_buffer
moveq.l #0,d0
move.l d0,d1
move.l d1,d2
move.l d2,d3
move.l d3,d4
move.l d4,d5
move.l d5,d6
move.l d6,d7
move.l d7,a1
move.l a1,a2
move.l a2,a3
move.l a3,a4
move.l a4,a5
move.l a5,a6
movem.l d0-d7/a1-a6,(a0) ;56 bytes
movem.l d0-d7/a1-a6,56(a0)
movem.l d0-d7/a1-a6,112(a0)
movem.l d0-d7/a1-a6,168(a0)
movem.l d0-d7/a1-a6,224(a0)
movem.l d0-d7/a1-a6,280(a0)
movem.l d0-d7/a1-a6,336(a0)
movem.l d0-d7/a1-a6,392(a0)
movem.l d0-d7/a1-a6,448(a0)
movem.l d0-d7/a1-a6,504(a0)
movem.l d0-d7/a1-a6,560(a0)
movem.l d0-d7/a1-a6,616(a0)
movem.l d0-d7/a1-a6,672(a0)
movem.l d0-d7/a1-a6,728(a0)
movem.l d0-d7/a1-a6,784(a0)
movem.l d0-d7/a1-a6,840(a0)
movem.l d0-d7/a1-a6,896(a0)
movem.l d0-d7/a1-a6,952(a0)
movem.l d0-d7/a1-a6,1008(a0)
movem.l d0-d7/a1-a6,1064(a0)
movem.l d0-d7/a1-a6,1120(a0)
[...]
A la base, c'est une routine d'effacement de buffer, mais en faisant move.b #val,clr_buffer+1 avant l'appel à la routine, tu peux remplir le buffer avec le pattern que tu veux.
En fait, l'instruction moveq.l fait 2 octets, le premier indiquant quel registre de donnée sera la destination, et le deuxième la donnée immédiate à placer.