Pas du tout (même si effectivement mieux vaudrait stocker toutes les combinaisons dans le code, mais ça croît de manière exponentielle).
Par exemple, tu peux très bien faire :
Remplir_mémoire_avec_symétrique_par_rapport_à_valeur_divisée_par_shift:
move.b d0,\patch_moveq+1
subq.w #1,d1
bcs \fin
\loop
\patch_moveq
moveq #0,d0
sub.b (a0),d0
lsr.b d2,d0
move.b d0,(a0)+
dbf d1,\loop
\fin
rts
et là tu gagnes un registre sans perdre un cycle dans ta boucle...