2017-06-18 9 views
1

Processeur: MSP430 16 bits RISCCMP et porte-drapeau

Quelqu'un peut-il expliquer l'instruction CMP quant au moment où le drapeau de transport est effectivement mis ci-dessous. Le manuel dit-il,

CMP (.B) src, dst ..... dst - src

Si src ne correspond pas à dst, sera le drapeau de transport être réglé?

cmp r15, r11 
jnc #1234 
+2

Cela dépend de ce qui est plus grand ... si 'r11 <' r15' puis r11-r15 <0' donc 'CF = 1'. – Jester

+0

Dans ce contexte, le drapeau de report est-il seulement défini lorsque la soustraction (dst - src) aka (r11 - r15) donne une valeur négative? –

+0

Oui, c'est correct. Note, arithmétique non signée. – Jester

Répondre

2

Guide de l'utilisateur dit:

Description de
L'opérande source est soustrait de l'opérande de destination. Ceci est fait en ajoutant le complément 1s de la source + 1 à la destination. Le résultat n'affecte que l'état bits dans SR.
[...]
Bits d'état
C: Définir s'il y a un report de la MSB, sinon remis à zéro

En d'autres termes, C est réglé s'il y a un débordement non signé. Cela peut également être vu dans les instructions de saut: JC (sauter si porter) et JHS (sauter si supérieur ou identique) sont la même instruction, comme sont JNC (sauter si pas de report) et JLO (sauter si inférieur) .

Exemple         Si R5 ≥ R6 (non signé), le programme se poursuit à Label2.

CMP R6,R5  ; Is R5 >= R6? Info to C 
JHS Label2  ; Yes, C = 1 
...    ; No, R5 < R6. Continue