Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ассемблере для PIC.doc
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
153 Кб
Скачать
☆

Команды сравнения

Всё познается в сравнении, в том числе и содержимое регистров.

Далее две операции сравнения.

; ============================================================

; ПРОВЕРКА НА РАВЕНСТВО

ОДНОГО РЕГИСТРА ДРУГОМУ РЕГИСТРУ

в общем виде команда XORWF F,D

MOVF CLOP,W ; копировать из KLOP в W

BCF STATUS,Z ; опустим флаг Z в ноль

XORWF CLON,F ; проводим сравнение

BTFSC STATUS,Z ; делаем бит-проверку Z-флага по условию

; если Z=1, то выполняется следующая инструкция, иначе пропускается

; ============================================================

Флаг Z после выполнения команды XORWF поднимется из нуля в единицу в том случае, если число в аккумуляторе совпадет с числом, которое находится в проверяемом регистре. Проще говоря, сравнивается содержимое аккумулятора с другим регистром.

; ============================================================

; ПРОВЕРКА НА РАВЕНСТВО

КОНСТАНТЫ КАКОМУ-ЛИБО РЕГИСТРУ

в общем виде команда XORLW K

MOVF CLOP,W ; копировать из KLOP в W

BCF STATUS,Z ; опустим флаг Z в ноль

XORLW .123 ; проводим сравнение с числом 123

BTFSC STATUS,Z ; делаем бит-проверку Z-флага

; если Z=1, то выполняется следующая инструкция, иначе – пропускается

; ============================================================

В данном случае сравнивается содержимое аккумулятора с обычным числом (константой).

Команды сдвига битов в регистре

В этих командах используется знакомая вам конструкция XXXXX F,D . Рассмотрим теорию работы команд сдвига. Различают две команды – "сдвиг вправо" и, соответственно, "сдвиг влево". Под сдвигом понимается смещение на один бит (на один разряд) содержимого регистра. Закономерен вопрос: а что появляется на освободившемся месте в регистре и куда девается вытесненный бит из регистра? Логично предположить, что место освободившегося бита занимает смещенный бит. Но это не так.

Для этого используется знакомый нам бит C (нулевой бит) в регистре STATUS. Именно через этот бит осуществляется сдвиг содержимого сдвигаемого регистра. На рисунках ниже схематично рассмотрен сдвиг.

Исходное состояние:

бит C (STATUS) =

1

1

0

1

1

0

1

0

0

Произведен сдвиг вправо:

бит C (STATUS) =

0

1

1

0

1

1

0

1

0

А теперь сделано два сдвига влево:

бит C (STATUS) =

1

0

1

1

0

1

0

0

1

Несложно представить ситуацию, когда регистр пуст (все биты равны нулю), а бит C в регистре STATUS равен единице, то с помощью команды сдвига элементарно просто организовать бегущую единицу, что может найти применение в конструкции бегущего огня.