Traitement des nombres en base 10 stockés au format BCD
DAA
Cette instruction sert à ajuster la valeur d'un octet quand on s'en sert comme si il contenait deux chiffres décimaux. Les 4 bits du haut et les 4 bits du bas sont supposés contenir chacun une valeur de 0 à 9. Ainsi, quand on réalise des additions ou des soustractions, on appelle l'instruction DAA pour corriger les retenues à effectuer sur le registre.
Le fonctionnement de l'instruction est le suivant :
- Si les 4 bits les moins significatifs de A contiennent un nombre plus grand que 9 ou que le flag H=1, alors on ajoute #06 au registre A.
- Si les 4 bits les plus significatifs de A sont aussi supérieurs à 9 ou que le flag C=1, alors on ajoute #60 au registre A et on positionne éventuellement la retenue pour le calcul suivant.
Quelques exemples d'exécution de l'instruction DAA :
| LD A,valeur |
ADD A,valeur |
Résultat de l'addition |
Valeur de A après DAA |
Flag C |
| #55 | #11 | #66 | #66 (55+11=66) | 0 |
| #59 | #12 | #6B | #71 (59+12=71) | 0 |
| #90 | #10 | #A0 | #00 (90+10=100) | 1 |
| #99 | #01 | #9A | #00 (99+1=100) | 1 |
La retenue (flag C) est mise dès lors qu'on dépasse la valeur 99. Il faut la reporter sur l'octet BCD suivant.
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 163 millisecondes et consultée 10 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|