Question

AX = Supposons FFFE et BX = 1234
maintenant, si nous écrivons cmp ax,bx
(bx sera soustrait de hache et les flages approprite sera mis à jour) maintenant la représentation binaire des nombres dans la hache et bx est donnée par

    AX =    1111    1111    1111    1110
   BX=     0001    0010    0011    0100


Comme bx sera soustrait de hache donc nous devons negate bx (comme résultat = ax + (- bx)) de sorte que le bx niée (2 du complément à Bx) est donnée par.

BX=    1110    1101    1100    1100

Maintenant, nous ajoutons à la fois hache et bx (comme la soustraction est mis en œuvre par l'addition dans l'ordinateur)

    AX=   1111    1111    1111    1110
   BX=   1110    1101    1100    1100
    ------------------------------------
      1  1110    1101    1100    1010 

Maintenant que vous pouvez voir le résultat est de 17 bits maintenant le 17 bits devrait aller en porter flage, mais quand je l'ai vérifié le drapeau de transport est à 0. CF = 0 pourquoi?

Était-ce utile?

La solution

trouvé un lien ici: http://oopweb.com/Assembly/Documents/ArtOfAssembly/ Volume / Chapter_6 / CH06-2.html

Il est comme je m'y attendais. Le drapeau de transport est défini que si « emprunter » était nécessaire. Quand vous faites la soustraction, vous définissez l'indicateur de transport avant de faire le « Soustraction » et le nouveau drapeau de transport indique si vous deviez emprunter. Votre exemple omis l'addition de 1 pour le report prédéfini drapeau dans 17 bits qui provoquera pas de report dans le résultat.

Autres conseils

Considérez l'indicateur de report en tant que bit de retenue lorsque la soustraction est exécutée. Il est initialisé à 1 si l'opération est a−b−C, à savoir, a + not(b) + C au lieu de a + not(b) + 1 que vous avez décrit. En d'autres termes, le report est inversé pour Soustraire de sorte qu'il peut être utilisé pour faire Soustraire multiples précision.

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