Question

Toutes mes excuses pour ce faire ma deuxième question Z80 DAA - J'ai assez bien mis en œuvre cette instruction maintenant, mais il y a une chose que je ne suis pas sûr - est l'indicateur H par cette instruction du tout? Le manuel Z80 dit « instruction voir », mais il ne mentionne que le drapeau avant DAA, pas après son exécution.

Je mets les drapeaux comme suit:

S est réglé si le résultat est négatif (0x80 et 0x80 résultat égal) Z est défini si le résultat est zéro H (pas sûr d'où cette question) P / V est fixé à la parité du résultat (1 si même, si 0 impair) N est laissé seul C est défini si le quartet supérieur de la valeur de l'accumulateur d'origine est modifié

Autre que cela, l'instruction semble fonctionner comme je l'attends à :-) J'espère que quelqu'un peut effacer ce pour moi, merci beaucoup.

Était-ce utile?

La solution

Il est une bonne question. Oui, le comportement de H drapeau est pas clairement documenté car il est le comportement est non standard avec DAA.

Si quartet inférieur (quatre bits les moins significatifs) de A est un nombre en base 10 non (supérieure à 9 comme A, B, C, D, E ou F) ou pavillon H est réglé 6 est ajouté au registre. Cela signifie que même si grignotage est plus faible dans 0-9 gamme, vous pouvez forcer à ajouter 6 à un registre en réglant le drapeau H.

Quand il vient à votre question, drapeau H généralement reste intacte dans mon expérience, mais vous ne pouvez pas compter sur cela parce qu'il est dit que « l'effet est non standard » qui signifie drapeau H peut changer ou ne peut pas changer en fonction de la situation. Dans des cas comme cela, vous devez toujours penser drapeau H est affecté par l'instruction DAA après l'exécution même si vous voyez ce ne sont pas affectés dans vos tests.

Autres conseils

Je ne pouvais trouver que la demi-carry / emprunter drapeau est modifiée par DAA.

Je recommande que ce drapeau soit défini exactement comme l'AF (carry auxiliaire) est défini par les instructions DAA et DAS sur les processeurs x86. Je ne vois aucune raison pour laquelle il devrait y avoir une différence de fonctionnement entre i8080 / i8085 / Z80 et de DAA / DAS i8086.

Le DAA / DAS x86 fixe AF à 1 si elle règle les plus bas 4 bits de l'accumulateur par 6. Si elle ne les ajuste pas, il remet à zéro AF à 0.

Voir le pseudo-code pour DAA et DAS dans l'intel (ou AMD) les manuels CPU x86.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top