Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Obsluga

.pdf
Скачиваний:
23
Добавлен:
13.02.2015
Размер:
960.46 Кб
Скачать

 

 

 

 

 

 

SWAPF

REG,0

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0xA5

 

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

REG=0xA5

 

 

 

 

 

 

 

 

 

 

 

W=0x5A

 

 

 

 

 

 

 

 

SWAPF

f, d

 

 

 

 

SWAPF

REG,1

 

 

 

 

 

Поменять местами старший и младший

До выполнения

 

 

 

 

 

 

 

 

 

 

полубайты регистра f.

REG=0xA5

 

 

 

 

 

 

 

 

Поменять

 

После выполнения

 

 

 

 

местами

Если d=0 – результат сохраняется в регистре

REG=0x5A

 

 

 

 

1

 

 

 

полубайты

W.

 

Косвенная адресация

 

 

 

 

в f

 

Если d=1 – результат сохраняется в регистре

 

 

 

SWAPF

INDF,1

 

 

 

 

 

 

 

f.

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение

 

 

 

 

 

 

 

Регистра с адресом в

 

 

 

 

 

 

 

FSR=0x20

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение

 

 

 

 

 

 

 

Регистра с адресом в

 

 

 

 

 

 

 

FSR=0x02

 

 

 

 

 

 

 

 

 

 

Сравнение содержимого регистров

 

 

 

XORWF

REG,1

 

 

 

 

 

 

W и f (проверка на одинаковость)

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

REG=0x1A

 

 

 

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XORWF

REG,0

 

 

 

 

XORWF

f, d

 

До выполнения

 

 

 

 

 

 

 

 

Побитное “Исключающее “ИЛИ”

REG=0xAF

 

 

 

 

 

 

 

 

Побитное “ис-

содержимого регистров W и f.

W=0xB5

 

 

 

 

1

 

Z

 

 

После выполнения

 

 

ключающее

Если d=0 – результат сохраняется в регистре

REG=0xAF

 

 

 

 

 

 

 

 

ИЛИ”

W.

W=0x1A

 

 

 

 

 

 

 

 

W и f

Если d=1 – результат сохраняется в регистре

 

Косвенная адресация

 

 

 

 

 

 

f.

 

 

 

XORWF

INDF,1

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

FSR=0xAF)

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

FSR=0x1A)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бит - ориентированные команды

 

 

 

 

(b-от 0 до 7)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BCF

REG,7

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

REG=0xC7-11000111

 

 

 

 

BCF

f, b

 

После выполнения

 

 

 

 

 

REG=0x4701000111

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

Установить

Очистить бит b в регистре f

 

 

 

 

BCF

INDF,3

 

 

 

 

 

в “0” бит в

 

До выполнения

 

 

 

 

1

 

 

 

регистре f

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

FSR=0x2F)

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

FSR=0x27)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

41

 

 

 

 

 

 

 

 

BSF

REG,7

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x0A00001010

 

 

 

 

BSF f, b

 

 

После выполнения

 

 

 

 

 

 

REG=0x8A10001010

 

 

 

 

Установить

Установить бит b

в регистре f

Косвенная адресация

 

 

 

 

в “1” бит в

 

 

 

BSF

INDF,3

 

 

1

 

 

регистре f

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0x20)

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (значение регистра

 

 

 

 

 

 

 

 

с адресом в

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0x28)

 

 

 

 

 

 

 

 

 

 

 

 

HERE

 

 

BTFSC

FLAG,4

 

 

 

 

 

 

 

 

FALSE GOTO

ABC

 

 

 

 

BTFSC

f, b

Если бит b в регистре f

=1,

TRUE .

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

исполняется следующая инструкция

1) До выполнения

 

 

 

 

Проверить бит

Если бит b в регистре f =0,

PC=адрес HERE

 

 

 

 

b в регистре f,

то следующая инструкция

FLAG=xxx0xxxx

 

 

 

 

 

1(2)

 

 

если b=0, то

не выполняется, а команда

После выполнения

 

 

 

 

пропустить

выполняется за 2 цикла

 

Т.к. FLAG<4>=0,

 

 

 

 

следующую

(во 2-м цикле выполняется NOP)

PC=адрес TRUE

 

 

 

 

инструкцию

 

 

2) До выполнения

 

 

 

 

 

 

 

 

PC=адрес HERE

 

 

 

 

 

 

 

 

FLAG=xxx1xxxx

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

Т.к. FLAG<4>=1,

 

 

 

 

 

 

 

 

PC=адрес FALSE

 

 

 

 

 

 

 

 

HERE

 

 

BTFSS

FLAG,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FALSE GOTO

ABC

 

 

 

 

BTFSS

f, b

 

 

 

.

 

 

 

 

 

 

 

 

Если бит b в регистре f=0,

 

.

 

 

 

 

 

 

 

 

 

 

исполняется следующая инструкция

1) До выполнения

 

 

 

 

Проверить бит

Если бит b в регистре f=1,

PC=адрес HERE

 

 

 

 

b в регистре f,

то следующая инструкция

FLAG=xxx0xxxx

 

 

 

 

 

1(2)

 

 

если b=1, то

не выполняется, а команда

После выполнения

 

 

 

 

пропустить

выполняется за 2 цикла

 

Т.к. FLAG<4>=0,

 

 

 

 

следующую

(во 2-м цикле выполняется NOP)

PC=адрес FALSE

 

 

 

 

инструкцию

 

 

2) До выполнения

 

 

 

 

 

 

 

 

PC=адрес HERE

 

 

 

 

 

 

 

 

FLAG=xxx1xxxx

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

Т.к. FLAG<4>=1,

 

 

 

 

 

 

 

 

PC=адрес TRUE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды операций с константами

 

 

 

( k – от 0 до 255 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ADDLW

0x15

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

W=0x25

 

 

 

 

 

 

 

 

ADDLW

k

 

 

 

 

 

ADDLW

REG

 

 

 

 

Содержимое регистра W

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

складывается с 8 – разрядной

W=0x10

 

 

 

 

 

 

 

 

Сложить

константой k.

REG=0x37(адрес ре-

 

1

C,DC,Z

 

константу

Результат сохраняется в регистре W

гистра)

 

 

 

 

 

 

 

 

с W

 

После выполнения

 

 

 

 

 

 

 

 

W=0x47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42

 

 

 

ADDLW HIGH(LU_TAB)

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

LU_TAB=0x9375 (ад-

 

 

 

 

 

рес в памяти про-

 

 

 

 

 

 

 

 

грамм)

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0xA3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x01

 

 

 

 

 

 

 

 

C=?

 

 

 

 

 

 

 

 

Z=?

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0x01

 

 

 

 

 

 

 

 

C=1 (результат + )

 

 

SUBLW

k

 

Z=0

 

 

 

1

 

Вычесть содержимое регистра W

 

 

 

SUBLW

0x02

C,DC,Z

 

 

из 8 – разрядной константы k.

До выполнения

 

 

 

 

 

Вычесть W

 

W=0x03

 

 

 

 

 

из

 

Результат сохраняется в регистре W.

C=?

 

 

 

 

 

константы

 

Z=?

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0xFF

 

 

 

 

 

 

 

 

C=0 (результат - )

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

C=?

 

 

 

 

 

 

 

 

Z=?

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

C=1 ( “0”- результат)

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

SUBLW

REG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

REG=0x37 (адрес

 

 

 

 

 

 

 

 

регистра)

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0x27

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVLW

0x5A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x10 (любое)

 

 

 

 

 

MOVLW

k

 

После выполнения

 

 

 

W=0x5A

 

 

 

 

 

Переслать

Переслать константу k в регистр W

 

 

 

MOVLW

REG

 

1

 

константу

 

До выполнения

 

 

 

 

в W

 

В неиспользуемых битах ассемблер

W=0x10

 

 

 

 

 

 

 

устанавливает 0

REG=0x37 (адрес

 

 

 

 

 

 

 

 

регистра)

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0x37

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

MOVLW HIGH(LU_TAB)

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

LU_TAB=0x9375 (адрес в

 

 

 

 

 

памяти программ)

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

W=0x93

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43

ANDLW 0x5F (01011111)

До выполнения

W=0xA3 (10100011)

После выполнения

W=0x03 (00000011)

ANDLW k

 

 

 

 

 

Выполняется побитное “И” содержимого

ANDLW

REG

 

 

регистра W и 8 – разрядной

До выполнения

1

Z

Побитное

константы k.

W=0xA3

 

 

“И”

 

REG=0x37 (адрес

 

 

константы

Результат сохраняется в регистре W

регистра)

 

 

и W

 

После выполнения

 

 

 

W=0x23

 

 

ANDLW HIGH(LU_TAB)

До выполнения

W=0xA3

LU_TAB=0x9375 (адрес в памяти программ) После выполнения

W=0x83

 

 

 

 

IORLW

0x35

 

 

 

 

До выполнения

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

После выполнения

 

IORLW k

 

W=0xBF

 

 

 

 

Выполняется побитное “ИЛИ” содержимого Z=0

 

 

 

 

 

регистра W и 8 – разрядной константы k.

 

 

 

1

Z

Побитное

Результат сохраняется в регистре W.

 

 

IORLW

REG

 

До выполнения

 

 

 

 

“ИЛИ”

 

 

 

 

 

 

W=0x9A

 

 

 

 

константы

 

 

 

 

 

 

REG=0x37 (адрес

 

 

 

 

и W

 

 

 

 

 

 

регистра)

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

W=0x9F

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

IORLW HIGH(LU_TAB)

 

 

 

До выполнения

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

AB=0x9375 (адрес в

 

 

 

памяти программ)

 

 

 

После выполнения

 

 

 

W=0x9B

 

 

 

 

 

 

 

IORLW

0x00

 

 

 

 

До выполнения

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

После выполнения

 

 

 

W=0x00

 

 

 

 

 

 

Z=1

 

 

 

 

44

 

 

 

Сравнение содержимого регистра W

XORLW 0xAF(10101111)

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

и константы (проверка на одинако-

W=0xB5 (10110101)

 

 

 

 

 

 

вость)

После выполнения

 

 

 

 

 

 

 

W=0x1A (00011010)

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

XORLW

REG

 

 

 

 

XORLW

k

 

До выполнения

 

 

 

 

 

 

 

W=0xAF

 

 

 

 

 

 

 

 

Выполняется побитное

 

 

 

 

 

 

 

 

REG=0x37 (адрес

 

 

 

 

Побитное

“Исключающее ИЛИ” содержимого регистра

1

 

Z

 

регистра)

 

 

 

 

“Исключаю-

W и 8 – разрядной константы k.

 

 

 

 

 

 

После выполнения

 

 

 

 

щее ИЛИ”

 

 

 

 

 

Результат сохраняется в регистре W.

W=0x18

 

 

 

 

 

 

константы

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

и W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XORLW HIGH(LU_TAB)

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0xAF

 

 

 

 

 

 

 

 

 

LU_TAB=0x9375 (адрес в

 

 

 

 

 

 

 

памяти программ)

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x3C

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Команды управления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CALL

 

Вызов подпрограммы.

HERE CALL ABC

 

 

 

 

 

 

Адрес следующей инструкции (PC+1)

 

 

 

 

Вызов

 

До выполнения

 

 

 

 

 

 

подпрограм-

помещается в вершину стека (TOS).

PC=адрес HERE

 

 

2

 

 

 

мы

 

11 бит адреса загружаются из кода

После выполнения

 

 

 

 

(переход по

команды в счетчик команд

PC=адрес ABC

 

 

 

 

 

 

коду коман-

PC<10:0>.

TOS=адрес HERE+1

 

 

 

 

ды с усло-

2 старших бита загружаются в

 

 

 

 

 

 

 

 

вием (стек))

счетчик команд PC<12:11> из регистра

 

 

 

 

 

 

 

 

 

 

PCLATH.

 

 

 

 

 

 

 

 

GOTO

k

Выполнить безусловный переход.

 

GOTO

ABC

 

 

 

 

 

 

11 бит адреса загружаются из кода

 

 

 

 

 

 

 

 

 

 

 

 

 

Переход по

После выполнения

 

 

 

 

коду коман-

команды в счетчик команд

PC= адрес ABC

 

 

2

 

 

 

ды без

 

PC<10:0>.

 

 

 

 

 

 

 

 

условия

 

2 старших бита загружаются в

 

 

 

 

 

 

 

 

 

 

счетчик команд PC<12:11>

 

 

 

 

 

 

 

 

 

 

из регистра PCLATH.

 

 

 

 

 

 

 

 

RETURN

Возврат из подпрограммы.

 

RETURN

2

 

 

 

 

 

 

После выполнения

 

 

 

Возврат из

Вершина стека (TOS) загружается в

PC=TOS(адрес из

 

 

 

 

подпрограм-

счетчик команд PC.

стека)

 

 

 

 

 

 

мы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CALL

TABLE

 

 

 

 

RETLW

k

 

.

 

 

 

 

 

 

В регистр W загружается 8-разряд-

.

 

 

 

 

 

 

 

 

TABLE ADDWF

PCL,1

 

 

 

 

Возврат из

ная константа.

 

RETLW

k1

 

 

 

 

подпрограм-мы

Вершина стека (TOS) загружается в счетчик

 

RETLW

k2

 

 

 

 

с загрузкой

команд PC.

.

 

 

2

 

 

 

константы

 

.

 

 

 

 

 

 

в W

 

 

 

RETLW

kn

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

W=0x07

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=значение k8

 

 

 

 

 

 

 

 

 

PC=TOS=адресHERE+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

45

RETFIE

Возврат из подпрограммы обработки

 

 

 

 

прерываний.

RETFIE

 

 

Возврат из

Вершина стека (TOS) загружается

После выполнения

2

 

подпрограм-

в счетчик команд PC.

PC=TOS

 

 

мы с

Устанавливается в “1” флаг глобаль-

GIE=1

 

 

разрешением

ного разрешения прерываний

 

 

 

прерываний

GIE (INTCON<7>).

 

 

 

 

 

CLRWDT

 

 

CLRWDT

 

До выполнения

 

 

Сбрасывает WDT и предделитель

Счетчик WDT-?

 

 

 

(если он подключен к WDT).

Счетчик делителя

 

 

Очистить

 

WDT=1:128

 

 

WDT

В регистре STATUS устанавливает

После выполнения

1

-TO

(сторожевой

биты –TO и -PD.

Счетчик WDT=0

 

-PD

таймер)

На коэффициент делителя WDT

Счетчик делителя

 

 

 

не влияет

WDT=0

 

 

 

 

-TO=1

 

 

 

 

-PD=1

 

 

 

 

Делитель WDT=1:128

 

 

SLEEP

Сбросить флаг включения питания

 

 

 

-PD в “0”.

 

 

 

 

Установить флаг переполнения

 

 

 

Перейти

WDT -TO в “1”.

SLEEP

1

-TO

в режим

Очистить таймер WDT и его

 

 

-PD

SLEEP

предделитель.

 

 

 

 

Перевести микроконтроллер в

 

 

 

 

режим SLEEP и выключить

 

 

 

 

тактовый генератор.

 

 

 

 

Переслать содержимое регистра W

 

 

 

OPTION

в регистр OPTION.

 

 

 

Инструкция поддерживается для

OPTION

 

 

 

совместимости программы с семейством

 

 

 

 

PIC16C5x.

 

 

 

 

Запись-чтение регистра OPTION

 

 

 

 

можно выполнить прямой или косвенной

 

 

 

 

адресацией.

 

 

 

 

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

 

 

 

 

совместимости программного обеспе-

 

 

 

 

чения с последующими выпуска-

 

 

 

 

емыми PIC16Cxx.

 

 

 

TRIS

Переслать содержимое регистра W

 

 

 

в регистр TRIS.

TRIS

 

 

 

См. комментарии для команды

 

 

 

 

OPTION

 

 

 

46

Приложение №11

КОМАНДЫ АССЕМБЛЕРА ДЛЯ ПИКов (вариант с ошибками №2)

 

 

МНЕМОНИКА

ОПИСАНИЕ

 

 

 

ПРИМЕРЫ

Цикл

Флаги

 

 

 

 

Байт-ориентированные

команды

 

 

 

 

 

 

 

 

ADDWF f, d

Сложить содержимое регистров W и f.

ADDWF REG,0

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

Если d=0, результат сохраняется в

W=0x17

 

 

 

 

 

 

 

 

 

 

регистре W.

REG=0xC2

 

 

 

 

 

 

 

 

Сложение

 

Если d=1, результат сохраняется в

После выполнения

 

 

 

 

W и f

 

регистре f.

W=0xD9

 

 

 

 

 

 

 

 

 

 

Косвенная адресация: для ее выполнения

REG=0xC2

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

необходимо обратиться к регистру INDF.

 

ADDWF

INDF,1

 

 

 

 

 

 

 

Оно вызовет действие с регистром, адрес

До выполнения

 

 

 

 

 

 

 

 

 

 

которого указан в FSR.

W=0x17

 

 

 

 

 

 

 

 

 

 

Косвенная запись в регистр INDF не вызовет

FSR=0xC2 (по этому

 

 

 

 

 

 

никаких действий (кроме воздействия на флаги

адресу “лежит” число 0x20)

1

C,DC,Z

 

 

 

 

в регистре STATUS).

После выполнения

 

 

 

 

 

 

Косвенное чтение INDF (FSR=0) даст результат

W=0x17

 

 

 

 

 

 

 

 

 

 

00h.

FSR=0xC2 (по этому

 

 

 

 

 

 

9-й бит косвенного адреса (IRP) сохраняется в

адресу “лежит” число 0х37)

 

 

 

 

 

 

регистре STATUS<7>.

Вычисляемый переход

 

 

 

 

 

 

Изменение адреса счетчика команд PC

 

 

ADDWF

PCL,1

 

 

 

 

 

 

 

(вычисляемый переход) выполняется командой

До выполнения

 

 

 

 

 

 

 

 

 

 

приращения к регистру PCL (ADDWF PCL,F).

W=0x10

 

 

 

 

 

 

 

 

 

 

При этом необходимо следить, чтобы при

PCL=0x37

 

 

 

 

 

 

 

 

 

 

исполнении вычисляемого перехода не

После выполнения

 

 

 

 

 

 

происходило пересечения границы блока

PCL=0x47

 

 

 

 

 

 

 

 

 

 

памяти программ (256 слов).

C=0

 

 

 

 

 

 

 

 

 

 

PCL – младший байт (8 бит <7:0>) счетчика

 

 

 

ADDWF

PCL,1

 

 

 

 

 

 

 

команд (PC), доступен для чтения и записи.

До выполнения

 

 

 

 

 

 

 

 

 

 

PCH – старший байт (5 бит <12:8>) счетчика

W=0x10

 

 

 

 

 

 

 

 

 

 

команд PC, не доступен для чтения и записи.

PCL=0xF7

 

 

 

 

 

 

 

 

 

 

Все операции с PCH происходят через

PCH=0x08

 

 

 

 

 

 

 

 

 

 

дополнительный регистр PCLATH.

После выполнения

 

 

 

 

 

 

В случае вычисляемого перехода, при

PCL=0x07

 

 

 

 

 

 

 

 

 

 

переполнении PCL, инкремента PCH не

PCH=0x08

 

 

 

 

 

 

 

 

 

 

происходит.

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDWF

REG,1

 

 

 

 

ANDWF f, d

 

До выполнения

 

 

 

 

 

 

 

 

Выполняется побитное “И” содержимого

W=0x17

 

 

 

 

 

 

 

 

 

 

регистров W и f.

REG=0xC2

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

Побитное И

 

Если d=0, результат сохраняется в

W=0x17

 

 

 

 

1

Z

 

 

W и f

 

регистре W.

REG=0x02

 

 

 

 

 

 

 

 

 

 

Если d=1, результат сохраняется в

 

 

 

ANDWF

REG,0

 

 

 

 

 

 

регистре f.

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

ANDWF

INDF,1

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

адресу “лежит” число

 

 

 

 

 

 

 

0х5А)

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

адресу “лежит” число 0х15)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

47

 

 

CLRF

f

 

 

CLRF

REG

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Очистить содержимое регистра f

REG=0x5A

 

1

 

Z

 

 

 

 

 

 

 

 

 

Очистить f

 

 

и установить флаг Z

После выполнения

 

 

 

 

 

 

REG=0x00, Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CLRF

INDF

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число

 

 

 

 

 

 

 

 

 

 

0хАА)

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х00)

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

CLRW

 

 

CLRW

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

Очистить содержимое регистра W

W=0x5A

 

1

 

Z

 

 

Очистить W

 

 

и установить флаг Z

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

COMF

REG,0

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

COMF

f, d

 

 

После выполнения

 

 

 

 

 

 

Инвертировать все биты в регистре f

REG=0x13

 

 

 

 

 

 

 

 

 

 

 

W=0xEC

 

 

 

 

 

 

 

 

 

 

Если d=0, результат сохраняется в

COMF

REG,1

1

 

Z

 

 

Инвертировать

 

 

регистре W.

До выполнения

 

 

 

 

 

f

 

 

 

Если d=1, результат сохраняется в

REG=0xFF

 

 

 

 

 

 

 

 

 

 

регистре f

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

COMF

INDF,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число

 

 

 

 

 

 

 

 

 

 

0хАА)

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х55)

 

 

 

 

 

 

 

 

 

 

DECF

REG,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

DECF

f, d

 

Декремент содержимого регистра f

Z=1

 

 

 

 

 

 

 

Если d=0, результат сохраняется в

DECF

REG,0

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

регистре W.

REG=0x10

 

1

 

Z

 

 

Вычесть1 из f

 

 

Если d=1, результат сохраняется в

W=x, Z=0

 

 

 

 

 

 

 

 

регистре f.

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x0F, Z=0

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

DECF

INDF,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х01)

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х00)

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

48

 

 

DECFSZ

f, d

 

Декремент содержимого регистра f с

LOOP

DECFSZ

REG,1

 

 

 

 

 

 

 

 

ветвлением

 

 

GOTO

LOOP

 

 

 

 

 

 

 

 

Если d=0, результат сохраняется в регистре W.

1)

 

CONTINUE ....

 

 

 

 

 

Вычесть

 

До выполнения

 

 

 

 

 

 

1 из f с

 

Если d=1, результат сохраняется в регистре f.

REG=0x01

 

 

 

 

 

 

 

ветвлением

 

Если результат не равен 0, то исполняется

После выполнения

 

1(2)

 

 

 

 

 

 

 

следующая инструкция.

REG=0x00

 

 

 

 

 

 

 

 

 

 

Если результат = 0, то следующая инструкция

PC=адрес CONTINUE

 

 

 

 

 

 

 

 

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

2)

До выполнения

 

 

 

 

 

 

 

 

 

исполняется “виртуальный” NOP), а команда

REG=0x02

 

 

 

 

 

 

 

 

 

 

выполняется за 2 цикла.

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

Переход на LOOP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)

 

INCF

REG,1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

INCF

REG,0

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

INCF

f, d

 

 

REG=0x10

 

 

 

 

 

 

 

 

Инкремент содержимого регистра f

W=x

 

 

 

 

 

 

 

 

 

 

 

Если d=0, результат сохраняется в

Z=0

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

Прибавить

 

регистре W.

REG=0x10

 

 

1

 

Z

 

 

1 к f

 

Если d=1, результат сохраняется в

W=0x11

 

 

 

 

 

 

 

 

 

 

регистре f.

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

INCF

INDF,1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

адресу “лежит” число

 

 

 

 

 

 

 

 

 

0xFF)

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х00)

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LOOP

INCFSZ REG,1

 

 

 

 

 

INCFSZ f, d

 

Инкремент содержимого регистра f с

 

 

GOTO LOOP

 

 

 

 

 

 

ветвлением

 

 

CONTINUE ........

 

 

 

 

 

 

 

 

 

1)

До выполнения

 

 

 

 

 

 

 

 

 

Если d=0, результат сохраняется в регистре W.

REG=0xFF

 

 

 

 

 

 

 

Прибавить

 

Если d=1, результат сохраняется в регистре f.

После выполнения

 

 

 

 

 

 

1 к f

с

 

Если результат не равен 0, то исполняется

REG=0x00

 

 

 

 

 

 

 

ветвлением

 

следующая инструкция.

PC=адрес CONTINUE

1(2)

 

 

 

 

 

 

 

Если результат = 0, то следующая инструкция

2)

До выполнения

 

 

 

 

 

 

 

 

 

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

REG=0x02

 

 

 

 

 

 

 

 

 

 

исполняется “виртуальный” NOP), а команда

После выполнения

 

 

 

 

 

 

 

 

 

выполняется за 2 цикла.

REG=0x03

 

 

 

 

 

 

 

 

 

 

 

Переход на LOOP

 

 

 

 

 

 

 

 

 

 

1)

 

IORWF REG,0

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

 

 

 

 

 

W=0x91

 

 

 

 

 

 

 

IORWF

f,d

 

 

После выполнения

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

 

 

 

 

Побитное “ИЛИ” содержимого

W=0x93

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

Побитное

 

регистров W и f

2)

 

IORWF REG,1

1

 

Z

 

 

“ИЛИ”

 

Если d=0 - результат сохраняется в регистре W

До выполнения

 

 

 

 

W и f

 

REG=0x13

 

 

 

 

 

 

 

 

 

 

Если d=1 - результат сохраняется в регистре f.

W=0x91

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x93

 

 

 

 

 

 

 

 

 

 

 

W=0x91

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

49

 

 

 

 

 

 

 

3)

 

IORWF

REG,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

 

IORWF

INDF,1

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х30)

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х37)

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVF

REG,0

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0xC2

 

 

 

 

 

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

1)

 

MOVF

REG,1

 

 

 

 

 

MOVF

f,d

 

До выполнения

 

 

 

 

 

Содержимое регистра f пересылается в

REG=0x43

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

регистр адресата

После выполнения

 

 

Z

 

 

 

 

 

 

 

 

 

 

Переслать f

 

 

 

REG=0x43

 

 

1

 

 

 

 

 

Если d=0 – значение сохраняется в регистре W

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если d=1 – значение сохраняется в регистре f

2) До выполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

Косвенная адресация

 

 

 

 

 

 

 

 

 

 

 

 

MOVF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х00)

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х00)

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVWF REG

 

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

 

 

MOVWF

f

 

W=0x4F

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

REG=0x4F

 

 

 

 

 

 

 

 

 

 

 

Переслать содержимое W в f

W=0x4F

 

 

 

 

 

 

 

Переслать

 

 

 

Косвенная адресация

 

 

 

 

 

W в f

 

 

 

 

 

MOVWF

INDF

1

 

 

 

 

 

 

 

 

 

До выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому ад-

 

 

 

 

 

 

 

 

 

 

ресу “лежит” число 0х00 )

 

 

 

 

 

 

 

 

 

 

После выполнения

 

 

 

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому

 

 

 

 

 

 

 

 

 

 

адресу “лежит” число 0х17)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]