Je me suis amusé à coder pour toi un
memset 
Il a une seule restriction : l'adresse du buffer doit être paire. C'est un peu optimisable encore.
Thib_memset: ; void (void *adresse, char valeur, unsigned short taille)
; recopie de 'valeur' sur 32 bits
move.b 9(a7),d0
move.b d0,d1
lsl.w #8,d0
move.b d1,d0
move.w d0,d1
swap d0
move.w d1,d0 ; d0.l = 'valeur'
; chargement de l'adresse
move.l 4(a7),a0 ; a0 -> buffer
; calcul du nombre d'itérations à effectuer sur 128 bits puis sur 8 bits
move.w 10(a7),d1
move.w d1,d2
and.w #15,d2 ; d2.w = nb d'itérations sur 8 bits
lsr.w #4,d1 ; d1.w = nb d'itérations sur 128 bits
; remplissage du buffer
Thib_memset_128bits:
beq.s Thib_memset_8bits
subq.w #1,d1
Thib_memset_128bits_loop:
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
dbf d1,Thib_memset_128bits_loop
Thib_memset_8bits:
tst.w d2
beq.s Thib_memset_fin
subq.w #1,d2
Thib_memset_8bits_loop:
move.b d0,(a0)+
dbf d2,Thib_memset_8bits_loop
; fin du remplissage
Thib_memset_fin:
rts