2017-01-28 7 views
0

Alors que je me prépare pour un examen d'architecture de montage/processeur pour l'école la semaine prochaine, j'ai trouvé quelque chose de plutôt confus.L'indicateur de condition négative N est-il également défini avec un dépassement de capacité?

Lors d'une addition binaire, nous avons appris sur quatre drapeaux de condition:

N = résultat est négatif

Z = résultat est zéro

C = opération a produit un report

V = fonctionnement produit débordement

Mais je suis un peu confus quant à savoir si le drapeau N doit être réglé en cas de débordement.

Considérons cet ajout de 4 bits en complément à deux de 6 + 7 comme exemple:

0110 
0111+ 
----- 
1101 = result 

Maintenant, lors du calcul en 4 bits avec deux de numéros de complément, cela se traduit évidemment par un trop-plein. Il devrait en résulter 13 (01101 en 5 bits), mais aboutit à -3, car il ne peut être affiché qu'en 4 bits. Donc, ma question est la suivante: est-ce que le drapeau N négatif est également défini dans ce cas? Parce que le résultat est un nombre négatif.

+1

Oui, c'est réglé. Le drapeau N est simplement une copie du bit le plus significatif. Bien sûr, il peut être réglé sans trop de débordement. – Jester

Répondre

2

Je ne peux pas répondre à cette question avec certitude sans savoir exactement quel est le processeur que vous utilisez, mais habituellement N est égal au haut (signe) bit du résultat, indépendant de tous les autres drapeaux. Donc, dans votre exemple, N et V seront définis. (N, Z, et C sont presque toujours des fonctions simples des bits sortant de l'ALU - C est l'exécution de l'additionneur, N est égal au bit haut du résultat, et Z est juste NOT (OR (tous les bits du registre)) Il est V dont la définition est plus susceptible de varier d'un processeur à)

1

avec votre exemple 4 bits cas, poursuivre l'examen avec les exemples suivants:..

  • 0001 + 1110 == 1111 (décimal: 1 + (-2) == -1)

Négatif, mais pas de débordement.

  • 1100 + 1001 == 0101 (décimal: (-4) + (-7) == 5, -11 serait sans trop-plein)

Pas négatif, mais oveflowed.

Cela montrerait que le drapeau négatif ne se rapporte pas directement au fait de débordement.

Mais: la chose qui est généralement pas expliqué: dès que signifie le drapeau de trop-plein signe est erroné, on peut détecter vrai signe de résultat comme XOR de drapeau négatif et drapeau overflow:

S = N xor V 

où S est vrai drapeau de signe (pas présent directement dans le schéma NZVC). Ce drapeau est virtuellement utilisé dans les opérations de branche: lorsque, par exemple, la condition pour BGT est ((N xor V) or Z) == 0, cela signifie vraiment S or Z == 0, ou, en d'autres termes, S == 0 and Z == 0.

Certaines architectures d'ensembles d'instructions, par ex. AVR, ont le drapeau de signe vrai au lieu du drapeau négatif.