Question rapide pour vous, dans ma boucle, j'ai besoin d'utiliser CMP, BLT et BGT pour comparer certaines valeurs. Comment utiliserait lesdites instructions dans la boucle suivante?
J'essaie d'utiliser BGT, BLT et CMP, car j'en ai besoin de faire mes travaux d'application. Le problème est que je n'ai aucune idée de la façon de les utiliser. Si je voulais utiliser CMP pour comparer R6, avec R4 et mettre la différence dans R7, comment ferais-je cela? La même question si je voulais utiliser BLT si R7 est inférieure à 0, comment ferais-je cela? P>
LoopStart BL WaitBUT1 BL readTemp BL checkTemp BGT ??????? ; branch if greater than 5 BL errorVal CMP ???????? ; compare r6 with r4 , put difference into r7 BLT ???????? ;branch if r7 is less than 0 BL FanOn BL errorLedOn BL systemLedOn BL heaterOn BGT ???????? ;branch if r7 is greater than 0 BL FanOff BL errorLedOff BL systemLedOff BL heaterOff BL WaitBUT2 BL FanOff BL errorLedOff BL systemLedOff BL heaterOff B LoopStart
3 Réponses :
Vous devriez vérifier la documentation du bras à (exemple pour la documentation CMP): http: //infocenter.arm. com / help / index.jsp? topic = / com.arm.doc.dui0068b / cihiddid.html p>
de ce que vous pouvez lire ce que vous essayez de faire peut nécessiter deux instructions plutôt qu'une seule (à moins que votre assembleur de bras ne procède à un traitement spécial) p>
genre Cordialement,
Bo p>
Vous ne pouvez pas faire une branche conditionnelle sans le premier réglage de la condition Inscrivez-vous d'une manière ou d'une autre. Cela peut être fait avec branche si comparaison CMP code> ou en ajoutant
s code> à la plupart des instructions. Découvrez la documentation de l'assemblage des bras pour plus de détails. Exemple rapide:
R0 code> supérieur à 5: p>
r6 code> avec
R4 code>, mettre la différence dans
r7 code>, branche si
r7 : p>
subs r7, r6, r4 ;Performs r7 = r6 - r4 and sets condition register
blt label_bar ;Branches to label_bar if r7 < 0 (in which case r6 < r4)
Si je voulais utiliser CMP pour comparer R6, avec R4 et mettre la différence dans R7, comment ferais-je cela? p>
xxx pré> La même question si je voulais utiliser BLT si R7 est inférieur à 0, comment ferais-je cela? P> blockQuote>
bmi _exit /* branch if r7 < 0 */
Vos questions ne sont pas claires. Précisez s'il vous plaît.
J'ai ajouté une autre description à ma question.