19Fermer21
NerickLe 26/08/2003 à 20:17
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.