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 |