Voila la source:
_main: jsr graphlib::clr_scr ;efface l'ecran lea croix(pc),a0 ;Le sprite a afficher est: "croix" move.w #7,d0 ;d0=x move.w #10,d1 ;d1=y bsr affiche ;on appelle la routine de sprite jsr userlib@0000 ;on attend la pression d'une touche rts ;on quitte affiche: ;La routine de sprite movem.l d0-d4/a0-a1,-(a7) ;On pose sur la pile les registres move.b (a0)+,d2 ;On charge la taille du sprite dans d2, et on incremente a0 de 1 sub #1,d2 ;on enleve 1 a d2 pour le dbra futur move.l #LCD_MEM,a1 ;a1 pointe sur la memoire video move.w d1,d4 ; on fait : d4=d1 ) lsl.w #5,d1 ; d1=d1*32 ) add.w d4,d4 ; d4=d4*2 ) sub.w d4,d1 ; d1=d1-d4 ) on a fait d1=d1*30 add.w d1,a1 ; on pointe sur la bonne ligne---------------------------------- move.w d0,d4 ; d4=d0 lsr.w #3,d0 ; d0=d0/8 and.w #7,d4 ; d4=reste de d4/8 add.w d0,a1 ; on pointe sur la bonne colonne +/- 8 pxls move.b #24,d3 ; long=32bits d3=24=32-8 sub.w d4,d3 ; d3=d3-d4 boucle: clr.w d0 ; d0=0 move.b (a0)+,d0 ; d0=(a0)+ lsl.l d3,d0 ; d0=2^d3 eor.l d0,(a1) ; (a1)|=d0 lea 30(a1),a1 ; on pointe sur la ligne suivante dbra.b d2,boucle ; on le refait d2+1 fois... movem.l (a7)+,d0-d4/a0-a1 ; On restaure les registres detruits rts croix: dc.b 8 dc.b %10000001 dc.b %01000010 dc.b %00100100 dc.b %00011000 dc.b %00011000 dc.b %00100100 dc.b %01000010 dc.b %10000001
cette routine marche tres bien pour les abscisses inferieur a 8, mais sinon elle provoque une adress error...
J'ai reussit a cerne le probleme, mais je ne trouve pas le bug

voilà merci..
Sinon j'ai un autre question:
quel est le plus rapide:
lea 0(a1,d1),a1
ou add d0,a1?
merci.