Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубров ОМТ.pdf
Скачиваний:
6
Добавлен:
17.05.2015
Размер:
4.02 Mб
Скачать

; w = 15

...

subprogram: addlw 10

return

CLRF – Обнуление регистра f

Синтаксис

CLRF f

Операнды

f | 0 £ f £127

Операция

0 ® f ;

Измен.

1 ® Z;

Z

флаги

Обнуляются все биты регистра f

Описание

Пример

; f(6) = 27

 

clrf 6

 

; f(6) = 0

CLRW – Обнуление рабочего регистра W

Синтаксис CLRW Операнды

Операция 0 ® (W );

1 ® Z;

Измен. Z флаги

Описание Обнуляются все биты регистра W

Пример ; w = 27 clrw

; w = 0

CLRWDT – Сброс сторожевого таймера

Синтаксис CLRWDT Операнды

Операция 0 ® (WDT );

0 ® (Предделитель WDT );

1 ® TO;

1 ® PD;

Измен. TO, PD флаги

Описание Сбрасывается регистр-счетчик сторожевого таймера WDT, а также его предделитель, если он подключен. При выполнении команды ус-

танавливаются флаги таймаута TO и режима SLEEP PD

Пример ; w = 27 clrw

; w = 0

91

COMF – Инверсия регистра f

Синтаксис

COMF f,d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

Ø( f ) ® (W ) | d = 0

 

Ø( f ) ® ( f ) | d =1

Измен.

Z

флаги

 

Описание

Инвертируются все биты регистра f

Пример

; f(6) = 7 = 0b00000111

 

comf 6,1

 

; f(6) = 248 = 0b11111000

DECF – Декремент регистра f

Синтаксис

DECF f,d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

( f ) -1 ® (W ) | d = 0

 

( f ) -1 ® ( f ) | d =1

Измен.

C, DC, Z

флаги

Инвертируются все биты регистра f

Описание

Пример

; f(4) = 7, w = 1

 

decf 4,0

 

; f(4) = 7, w = 6

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

Синтаксис

DECFSZ f,d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

( f ) -1 ® (W ) | d = 0

 

( f ) -1 ® ( f ) | d =1;

 

(PC) +1 ® (PC) |=(W 0 =и d 0)=или ( f = 0 и d 1)

Измен.

 

флаги

 

Описание

Первым шагом происходит декремент регистра 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

92

GOTO – Переход по адресу

Синтаксис

Операнды

Операция

Измен. флаги Описание

Пример

GOTO k

k | 0 £ k £ 2047

k ® (PC 10 : 0);

(PCLATH 4 : 3) ® (PC 12 :11)

В 11 младших бит счетчика программы PC загружается константа k. Два старших бита загружаются в счетчик команд PC 12 :11 из ре-

гистра PCLATH. Выполнение команды занимает 2 машинных цикла.

; w = 0 goto skip addlw 5

skip: addlw 3

; w = 3

INCF – Декремент регистра f

Синтаксис

INCF f,d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

( f ) -1 ® (W ) | d = 0

 

( f ) -1 ® ( f ) | d =1

Измен.

C, DC, Z

флаги

 

Описание

Инвертируются все биты регистра f

Пример

; f(4) = 7, w = 1

 

incf 4,0

 

; f(4) = 7, w = 8

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

Синтаксис

INCFSZ f,d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

( f ) +1 ® (W ) | d = 0

 

( f ) +1 ® ( f ) | d =1;

 

(PC) +1 ® (PC) |=(W 0 =и d 0)=или ( f = 0 и d 1)

Измен.

 

флаги

 

Описание

Первым шагом происходит инкремент регистра f и запись получен-

 

ного результата в f или W в зависимости от операнда d. На втором

 

шаге, если результат первого шага оказался нулевым, происходит

 

инкремент регистра-счетчика команд PC, тем самым вызывая про-

 

пуск следующей команды.

Пример

; f(7) = 254, w = 0

 

loop:

 

addlw 3

 

incfsz 7,1

93

goto exit_loop goto loop

exit_loop:

; f(7) = 0, w = 6

IORLW – Побитное «ИЛИ» W и константы k

Синтаксис

IORLW k

Операнды

k | 0 £ k £ 255

Операция

(W ) Ú k ® (W )

Измен.

C, DC, Z

флаги

 

Описание

Выполняется побитное «ИЛИ» регистра W и 8-битной константы k.

 

Результат помещается в регистр W.

Пример

; w = 3 = 0b11

 

iorlw 4 ; 0b100

 

; w = 7 ; 0b111

IORWF – Побитное «ИЛИ» W и регистра f

Синтаксис

IORWF f, d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

(W ) Ú ( f ) ® (W ) | d = 0

 

(W ) Ú ( f ) ® ( f ) | d =1

Измен.

C, DC, Z

флаги

 

 

Описание

Выполняется побитное «ИЛИ» регистра W c содержимым регистра f.

 

Результат помещается в регистр W, при d=0, или в f при d=1.

Пример

; w =

4 = 0b100, f(4)= 1 = 0b001

 

iorwf

4,0

 

; w =

5 = 0b101, f(4)= 4

MOVF – Пересылка регистра f

Синтаксис

MOVF f, d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

( f ) ® (W ) | d = 0

 

( f ) ® ( f ) | d =1

Измен.

Z

флаги

 

Описание

Содержимое регистра f пересылается само в себя при d=1 или в ре-

 

гистр W, при d=0. Такая, на первый взгляд избыточная и абсурдная

 

команда, на практике используется для проверки регистра на ноль (с

 

помощью флага Z).

Пример

; f(4)= 0, Z = 0

 

movf 4,1

 

; f(4)= 0, Z = 1

MOVLW – Пересылка константы k

Синтаксис

MOVLW k

Операнды

k | 0 £ k £ 255

94