Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие МИУС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
865.51 Кб
Скачать
        1. Битовые операции

BCF – Очистка бита b регистра f

Синтаксис

BCF f,b

Операнды

Операция

Измен. флаги

Описание

Бит b регистра f устанавливается в 0.

Пример

; f(4) = 7 = 0b111

bcf 4,1

; f(4) = 5 = 0b101

BSF – Установка бита b регистра f в единицу

Синтаксис

BCF f,b

Операнды

Операция

Измен. флаги

Описание

Бит b регистра f устанавливается в 1.

Пример

; f(4) = 5 = 0b101

bsf 4,1

; f(4) = 5 = 0b111

        1. Операции условного, безусловного переходов и вызова подпрограмм

BТFSC – Условный переход при нулевом бите b регистра f

Синтаксис

BTFSC f,b

Операнды

Операция

Измен. флаги

Описание

Если бит b регистра f устанавлен в 0, инкрементируется счетчик команд PC (тем самым, пропускается следующая команда), в противном случае ничего не выполняется. В случае инкремента счетчика команда выполняется за 2 машинных цикла, иначе – за 1.

Пример

; f(7) = 6 = 0b110, w = 1

btfsc 7,1

addlw 4

btfsc 7,0

addlw 9

; w = 10

BТFSS – Условный переход при единичном бите b регистра f

Синтаксис

BTFSS f,b

Операнды

Операция

Измен. флаги

Описание

Если бит b регистра f устанавлен в 1, инкрементируется счетчик команд PC (тем самым, пропускается следующая команда), в противном случае ничего не выпоняется. В случае инкремента счетчика команда выполняется за 2 машинных цикла, иначе – за 1.

Пример

; f(7) = 6 = 0b110, w = 1

btfss 7,1

addlw 4

btfss 7,0

addlw 9

; w = 5

DECFSZ – Декремент регистра f и пропуск в случае нулевого результата

Синтаксис

DECFSZ f,d

Операнды

Операция

Измен. флаги

Описание

Первым шагом происходит декремент регистра f и запись полученного результата в f или W в зависимости от операнда d. На втором шаге, если результат первого шага оказался нулевым, происходит инкремент регистра-счетчика команд PC, тем самым вызывая пропуск следующей команды.

Пример

; f(7) = 6, w = 0

loop:

addlw 3

decfsz 7,1

goto exit_loop

goto loop

exit_loop:

; f(7) = 0, w = 18

CALL – Вызов подпрограммы

Синтаксис

CALL k

Операнды

Операция

Измен. флаги

Описание

Адрес следующей инструкции сохраняется в стеке. В 11 младших бит счетчика программы PC загружается константа k. Два старших бита загружаются в счетчик команд из регистра PCLATH. Выполнение команды занимает 2 машинных цикла.

Пример

; w = 0

call subprogram

addlw 5

; w = 15

...

subprogram:

addlw 10

return

RETLW – Выход из подпрограммы с загрузкой в регистр W константы k

Синтаксис

RETLW k

Операнды

Операция

Измен. флаги

Описание

В регистр W загружается константа k. В счетчик команд PC загружается значение с вершины стека. Команда выполняется за 2 машинных цикла.

Пример

; w = 6

call subprogram

; w = 12

...

subprogram:

nop

retlw 12

RETURN – Выход из подпрограммы

Синтаксис

RETURN

Операнды

Операция

Измен. флаги

Описание

В счетчик команд PC загружается значение с вершины стека. Команда выполняется за 2 машинных цикла.

Пример

; w = 6

call subprogram

; w = 8

...

subprogram:

addlw 2

return