MSP430 система команд - Команда CMP
| CMP[.W] | Сравнение источника и получателя | |
| CMP.B | Сравнение источника и получателя | |
| Синтаксис | CMP src,dst или CMP.W src,dst CMP.B src,dst |
|
| Операция | dst + .NOT.src + 1 или (dst – src) |
|
| Описание | Операнд источника вычитается из операнда получателя. Это выполняется прибавлением дополнения до единицы операнда источника плюс 1. Оба операнда не изменяются, а результат не сохраняется, изменяются только биты статуса. | |
| Биты статуса | N: | Устанавливается, если результат отрицательный; сбрасывается, если положительный (src >= dst) |
| Z: | Устанавливается, если результат «0», в противном случае сбрасывается (src = dst) | |
| C: | Устанавливается, если произошел перенос из MSB результата, в противном случае сбрасывается | |
| V: | Устанавливается, если произошло арифметическое переполнение, в противном случае сбрасывается | |
| Биты режима | Биты OSCOFF, CPUOFF и GIE не изменяются | |
| Пример | Сравнивается содержимое R5 и R6. Если оно одинаково, выполнение программы продолжается с метки EQUAL.
CMP R5,R6 ; R5=R6? JEQ EQUAL ; Да, переход к метке EQUAL |
|
| Пример | Сравниваются два блока в ОЗУ. Если они не эквивалентны, программа переходит к метке ERROR.
MOV #NUM,R5 ; количество слов, которые будут
; сравниваться
L$1 CMP &BLOCK1;,&BLOCK2; ; слова одинаковы?
JNZ ERROR ; нет, переход к метке ERROR
DEC R5 ; все слова подверглись сравнению?
JNZ L$1 ; нет, сравнение продолжается
Пример
Сравниваются байты в ОЗУ, адресованные метками EDE и TONI. Если они одинаковы, выполнение программы продолжается с метки EQUAL.
CMP.B EDE,TONI ; MEM(EDE)=MEM(TONI)? JEQ EQUAL ; Да,переход к метке EQUAL |
|