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
|