2011-02-17 1 views
0

Il a donné ces questions a. 13 est évidemment la plus grande donnée de l'ensemble de l'échantillon. Après 13 a été stocké dans D0, quel était l'état du CCR quand un autre nombre a été comparé contre lui (donnez juste les 5 bits et indiquez quels bits ont été déclenchés). b. Quel était l'état du RCC après que le dernier élément de données (0) a été déplacé dans le registre D1?Problème de langage d'assemblage ccr apprentissage assemblage

*  

ORG $400 
MOVEA.L #DATA,A0 
CLR.B D0 
NEXT MOVE.B (A0),D1 
BEQ EXIT 
CMP.B D0,D1 
BLE EndTest 
MOVE.B D1,D0 
EndTest ADDA.L #1,A0 
BRA NEXT  
EXIT STOP #$2700 
*   
ORG $1000 
Data DC.B 12,13,5,6,4,8,4,10,0  
END $400  

Je l'ai compilé, mais je ne vois pas 5 bits dans easy68k. Je sais que ccr est fait de drapeaux mais je ne sais pas quoi faire.

Répondre

1

Cette boucle est équivalent au code C suivant:

char *byte = data; 
char cur, max = 0; 

while ((cur = *byte++)) 
    if (cur > max) max = cur; 

à savoir la boucle va toujours parcourir toutes les valeurs et se terminer quand elle trouve le zéro à la fin. Cela signifie qu'au moment où vous avez atteint EXIT, vous avez effectué le test BEQ EXIT qui a testé le résultat du chargement précédent et constaté qu'il était nul. Le CCR sera 0x ?? 04, c'est-à-dire seulement le Z, zéro drapeau défini, car c'est ce que vérifie BEQ.

En ce qui concerne le test BLE, il s'agit d'une vérification complexe des indicateurs; Selon Motorola's 68k reference manual, tableau 3.19, il teste Z || (N && !V) || (!N && V), c'est-à-dire pour une exclusivité mutuelle de N/V ou zéro (ce serait la égale partie), donc plusieurs combinaisons des drapeaux peuvent entraîner la prise de cette branche. Pour vos données spécifiques, je suppose que, étant donné la valeur précédente était de 12, vous finirez avec N ensemble, soit une valeur de CCR de 0x??08 (CMP sur la plupart des processeurs fait une soustraction-avec-rejeter, et 12-13 est négatif). En ce qui concerne l'assemblage m68k, this wikibook est une bonne intro. Il décrit les tests conditionnels des branches/CCR, mais omet les petits détails ci-dessus ...