Hmm je veux pas jouer les méchants ou discourtois, mais il ya beaucoup de bêtises qui ont été dites et je me dois de corriger.
jasz a écrit:
La double spécificité du op LM 25 xx lui permet de répondre à l'une ou l'autre condition.
Il n'y a pas de double spécificité. BLO et BCS sont une seule et même opération qui s'execute toujours pareil.
Citation:
Le carry se réinitialise à 0 à chaque CMP.
Non pas du tout. CMP fait une soustraction par l'ALU (avec positionnement des bits du CCR) mais ne recopie pas le résultat dans l'accu utilisé. En particulier le bit C peut être à 1 en sortie.
Il n'est pas forcément à 0.
Citation:
Par exemple si on fait
Code:
LDA #$FF
INCA <-- ici A=0 et le carry prend 1
Non! INC ne positionne pas la carry. Elle est toujours à la valeur qu'elle avait avant.
Citation:
Code:
CMPA #$0 <-- ici A=0 et le carry passe à 0
La oui, mais parce que les deux valeurs sont identiques. Si on faisait "CMPA #1", on aurrait C=1 en sortie.
Citation:
Code:
BCS .retenue
RTS
.retenue
Dans ce cas de figure BCS est inopérant et seul BLO est efficace.
Je ne sais pas ce que tu entends par inopérant, mais non ! Les deux sont identiques. Donc soit les deux sont opérants, soit les deux sont inopérants. C'est la même opération. Un test sur une comparaison non signée.
La doc de référence se trouve dans les pages D-2, D-3, D-4 ainsi que F-3/F-4 du
mc6809 Programming Manual de Motorola. Ca ne fait que 4 pages qu'il vaut le coup d'avoir sous les yeux quand on fait de l'asm 6809. Il y a toutes les infos dedans. (Moi je me les suis imprimé en recto-verso 2 feuilles par pages)