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

Obsluga

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOP

 

 

 

 

 

NOP

 

 

 

 

 

 

 

Нет операции

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

PC=адрес X

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PC=адрес X+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RLF

REG,0

 

 

 

 

 

 

RLF

f, d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

 

 

 

 

 

 

 

Выполняется циклический сдвиг влево

 

W=xxxxxxxx

 

 

 

 

 

 

 

 

 

 

 

 

 

содержимого регистра f через бит C регистра

C=0

 

 

 

 

 

 

 

 

 

Циклический

 

 

 

 

 

 

 

 

 

 

STATUS

 

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

 

 

 

 

 

сдвиг f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

1

 

C

 

 

влево через

 

 

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

W

W=11001100

 

 

 

 

 

 

 

перенос

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

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

f

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RLF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 00111010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 01110101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RLF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 10111001),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 01110010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRF

REG,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=xx,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

RRF

f, d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=11100110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=01110011,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполняется циклический сдвиг вправо

 

C=0

 

 

 

 

 

 

 

 

 

Циклический

 

 

содержимого регистра f черезбит C регистра

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

 

 

 

 

 

сдвиг f

 

 

 

 

 

 

 

 

 

 

STATUS

 

 

 

RRF

INDF,1

 

1

 

C

 

 

вправо через

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

перенос

 

 

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

W

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

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

f

 

 

 

 

 

 

 

 

 

– 00111010),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– 10011101),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RRF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00111001),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– 00011100),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

51

 

 

 

 

 

 

 

 

 

 

SUBWF

REG,1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x03

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

SUBWF

f, d

 

 

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

 

 

 

 

 

 

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

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

Вычесть

 

 

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

 

 

 

SUBWF

REG,1

 

1

 

C,DC,Z

 

 

W из f

 

 

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

 

 

 

 

 

 

 

 

 

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

REG=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1, Z=1 (“0”

результат)

 

 

 

 

 

 

 

 

 

 

 

 

SUBWF

REG,1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C=x, Z=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

SWAPF

REG,0

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0xA5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1010 0101)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

SWAPF

f, d

 

 

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

 

 

 

 

 

 

 

REG=0xA5

 

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0x5A

 

 

 

 

 

 

 

 

 

Поменять

 

 

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

(0101 1010)

 

 

 

 

 

 

 

 

 

местами

 

 

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

 

 

SWAPF

REG,1

 

1

 

 

 

 

полубайты

 

 

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

 

 

 

 

в f

 

 

 

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

REG=0xA5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x5A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

SWAPF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

– 0010 0000)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

– 0000 0010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XORWF

REG,1

 

 

 

 

 

XORWF

f,d

 

 

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

 

 

 

 

 

 

 

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Побитное

 

 

 

REG=0x1A

 

 

 

 

1

 

 

 

 

 

 

Побитное "Исключающее "ИЛИ" содержимого

W=0xB5

 

 

 

 

 

Z

 

 

"исключающее

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

XORWF

REG,0

 

 

 

 

 

ИЛИ" W и f

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0xAF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x1A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

XORWF

INDF,1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

52

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

FSR=0xAF)

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

W=0xB5

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

FSR=0x1A)

 

 

 

 

 

 

 

 

 

 

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

 

(b-от 0 до 7)

 

 

 

 

 

 

 

 

 

 

BCF

REG,7

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

REG=0xC7-11000111

 

 

 

 

BCF

f, b

 

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

 

 

 

 

 

REG=0x4701000111

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Установить в 0 бит b регистра f

 

 

BCF

INDF,3

 

1

 

 

 

Установить

 

 

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

 

 

 

в 0 бит b

 

 

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

 

 

 

 

регистра f

 

 

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

 

 

 

 

 

 

 

 

0x2F – 0010 1111)

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

– 0010 0111)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BSF

REG,7

1

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

REG=0x0A00001010

 

 

 

 

BSF

f, b

 

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

 

 

 

 

 

REG=0x8A10001010

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Установить в 1 бит b регистра f

 

BSF

INDF,3

 

 

 

 

 

Установить

 

 

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

 

 

 

 

в 1 бит b

 

 

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

 

 

 

 

регистра f

 

 

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

 

 

 

 

 

 

 

 

– 0010 0000)

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

– 0010 1000)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BTFSC

REG,4

 

 

 

 

BTFSC

f, b

 

 

GOTO

LOOP

 

 

 

 

 

 

TRUE . .

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

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

REG=xxx0xxxx

 

 

 

 

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

 

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

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

 

 

 

 

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

 

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

Т.к. REG<4>=0,

 

 

 

 

если b=0, то

 

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

PC=адрес TRUE

 

 

 

 

пропустить

 

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

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

1(2)

 

 

 

следующую

 

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

REG=xxx1xxxx

 

 

 

 

инструкцию

 

 

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

 

 

 

 

 

 

 

 

Т.к. REG<4>=1,

 

 

 

 

 

 

 

 

(исполняется

 

 

 

 

 

 

 

 

 

 

 

GOTO LOOP)

 

 

 

 

 

 

 

 

 

 

BTFSS

REG,4

 

 

 

 

BTFSS

f, b

 

 

 

GOTO

LOOP

 

 

 

 

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

 

 

TRUE . .

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

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

REG=xxx0xxxx

 

 

 

 

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

 

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

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

 

 

 

 

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

 

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

Т.к. REG<4>=0,

1(2)

 

 

 

если b=1, то

 

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

(исполняется

 

 

 

 

 

 

 

пропустить

 

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

GOTO LOOP)

 

 

 

 

следующую

 

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

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

 

 

 

 

инструкцию

 

 

REG=xxx1xxxx

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

Т.к. REG<4>=1,

 

 

 

 

 

 

 

 

PC=адрес TRUE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

53

 

 

 

 

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

 

( k – от 0 до 255 )

 

 

 

 

 

 

 

 

 

 

 

ADDLW

0x15

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0x25

 

 

 

 

 

 

 

 

ADDLW

k

 

 

 

 

 

 

ADDLW

REG

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0x10

 

 

 

 

 

 

 

 

Сложить

 

 

 

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

 

 

 

 

1

C,DC,Z

 

 

 

 

 

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

 

 

константу с W

 

 

 

 

 

 

 

 

 

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

гистра, а не его

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

содержимое)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0x47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ADDLW

CONST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка” в “шапке”

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0x47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

k

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x01

 

 

 

 

 

 

 

 

 

 

 

 

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

C=?

 

 

 

 

 

 

 

 

Вычесть W

 

 

Z=?

 

 

 

 

 

 

 

 

из

 

 

 

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

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

1

C,DC,Z

 

 

константы

 

 

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

W=0x01

 

 

 

 

 

 

 

 

 

 

 

 

C=1,

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

(“+” результат)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x03

 

 

 

 

 

 

 

 

 

 

 

 

 

C=?

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=?

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0xFF

 

 

 

 

 

 

 

 

 

 

 

 

 

C=0,

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

(“-“ результат)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

0x02

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

C=?

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=?

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1,

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

( “0” результат)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUBLW

REG

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x10

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x37 (адрес

 

 

 

 

 

 

 

 

 

регистра, а не его

 

 

 

 

 

 

 

 

 

содержимое)

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

W=0x27

 

 

 

 

 

 

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

54

 

 

 

 

 

 

 

 

 

MOVLW

0x5A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

MOVLW

k

 

 

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

 

 

 

 

 

 

 

W=0x5A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVLW

REG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

Переслать

 

 

 

W=x

 

 

 

 

 

 

 

 

константу

 

 

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

REG=0x37 (адрес

1

 

 

 

 

в W

 

 

 

 

регистра, а не его

 

 

 

 

 

 

 

 

 

 

содержимое)

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x37

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOVLW

CONST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка” в “шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

 

W=x

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x37

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDLW 0x5F (01011111)

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0xA3 (10100011)

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

ANDLW

k

 

 

W=0x03 (00000011)

 

 

 

 

 

 

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

 

 

ANDLW

REG

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0xA3

 

 

 

1

 

Z

 

 

Побитное “И”

 

 

константы k.

REG=0x37 (адрес

 

 

 

 

 

константы и W

 

 

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

регистра, а не его

 

 

 

 

 

 

 

 

 

содержимое)

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDLW

CONST

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка” в “шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

 

W=0xA3

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

0x35

 

 

 

 

 

 

 

 

 

 

 

(0x35 – 00110101)

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x9A (10011010)

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0xBF (10111111)

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

REG

 

 

 

 

 

IORLW

k

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x37 (адрес

 

 

 

 

 

Побитное

 

 

Выполняется побитное “ИЛИ”

регистра, а не его

 

 

 

 

 

 

 

содержимого регистра W и 8 – раз-

содержимое)

 

 

 

 

 

 

 

 

“ИЛИ”

 

 

 

 

 

 

1

 

Z

 

 

 

 

 

рядной константы k.

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

 

 

 

константы и W

 

 

 

 

 

 

 

 

W=0x9F

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IORLW

CONST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x9A

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка” в “шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

W=0x9F

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

55

 

 

 

 

 

 

 

 

 

IORLW

0x00

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

XORLW 0xAF(10101111)

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

W=0xB5 (10110101)

 

 

 

 

 

 

 

 

 

 

 

 

 

вость”)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x1A (00011010)

 

 

 

 

 

 

 

 

 

XORLW

k

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XORLW

REG

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0xAF

 

 

 

 

 

1

 

Z

 

 

Побитное

 

 

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

REG=0x37 (адрес

 

 

 

 

 

 

 

“Исключающее

 

 

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

регистра, а не его

 

 

 

 

 

 

 

 

 

ИЛИ”

 

 

 

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

содержимое)

 

 

 

 

 

 

 

 

 

 

константы и W

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XORLW

CONST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0xAF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“Прописка” в “шапке”

 

 

 

 

 

 

 

 

 

 

программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CONST EQU 0x37

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W=0x18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

CALL

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HERE CALL ABC

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Условный

 

 

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

PC=адрес HERE

 

 

 

 

2

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

переход

 

 

 

 

 

 

 

 

 

 

 

 

 

команды в счетчик команд PC<10:0>.

PC=адрес ABC

 

 

 

 

 

 

 

 

 

 

(переход по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 старших бита “загружаются” в счетчик команд

TOS=адрес HERE+1

 

 

 

 

 

стеку)

 

 

 

 

 

 

 

 

 

 

 

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 (адрес,

 

 

 

 

 

 

 

 

 

по стеку

 

 

“выгруженный”

из TOS)

 

 

 

 

 

 

 

команд PC.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RETLW

k

 

 

 

 

 

CALL TABLE

 

 

 

 

 

 

 

 

 

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

.......

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.......

 

 

 

 

 

 

 

 

 

Возврат

 

 

 

 

TABLE ADDWF

PCL,1

 

 

 

 

 

по стеку

 

 

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

 

 

 

RETLW

k1

2

 

 

 

 

с загрузкой

 

 

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

 

 

 

RETLW

k2

 

 

 

 

константы

 

 

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

.

 

 

 

 

 

 

 

 

 

 

в W

 

 

 

команд PC.

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RETLW

kn

 

 

 

56

 

 

 

 

 

 

 

 

Возврат на адрес

 

 

 

 

 

 

 

 

 

 

 

PC+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RETFIE

 

 

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

 

 

 

 

 

 

 

 

 

 

прерываний.

 

RETFIE

 

 

 

 

 

 

 

 

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

 

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

 

 

 

 

 

Возврат по

 

 

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

 

PC=TOS

2

 

 

 

 

стеку из ПП

 

 

Осуществляется предварительное разрешение

 

GIE=1

 

 

 

 

 

обработки

 

 

прерываний

 

 

 

 

 

 

 

прерываний

 

 

(бит №7 регистра INTCON {GIE}

 

 

 

 

 

 

 

 

 

 

устанавливается в 1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CLRWDT

 

 

Сброс WDT и предделителя

 

CLRWDT

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

WDT и предделитель не

 

 

 

 

 

 

 

 

 

сброшены

 

 

 

 

 

Сброс WDT

 

 

В регистре STATUS, биты -TO и

 

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

1

 

-TO

 

 

(сторожевого

 

 

-PD устанавливаются в 1.

 

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

 

 

-PD

 

 

таймера)

 

 

 

 

 

сброшены

 

 

 

 

 

 

 

 

 

 

 

-TO=1

 

 

 

 

 

 

 

 

 

 

 

-PD=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SLEEP

 

 

Переход в “спящий режим”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

SLEEP

1

 

-TO

 

 

 

 

 

(-PD) в 0.

 

 

 

 

-PD

 

 

Переход

 

 

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

 

 

 

 

 

 

 

в режим

 

 

WDT (-TO) в 1.

 

 

 

 

 

 

 

SLEEP

 

 

Сброс WDT и его предделителя.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перевод м/контроллера в

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

OPTION

 

 

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

 

 

 

 

 

 

 

 

 

 

в регистр OPTION.

 

 

OPTION

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

адресацией.

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

другими (отличными от PIC16C5x) типами

 

 

 

 

 

 

 

 

 

 

 

ПИКов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TRIS

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

TRIS

 

 

 

 

 

 

 

 

в регистр TRIS.

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

другими (отличными от PIC16C5x) типами

 

 

 

 

 

 

 

 

 

 

 

ПИКов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

57

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

КОМАНДЫ АССЕМБЛЕРА ДЛЯ ПИКов

 

МНЕМОНИКА

ОПИСАНИЕ

ПРИМЕРЫ

Цикл

Флаги

 

 

 

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

команды

 

 

 

 

 

 

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

ADDWF

REG,0

 

 

 

 

 

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

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

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

REG=0xC2

 

 

 

 

 

 

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

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

 

 

 

 

 

 

W=0xD9

 

 

 

 

 

 

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

REG=0xC2

 

 

 

 

 

 

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

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

 

 

 

 

 

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

ADDWF

INDF,1

 

 

 

 

 

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

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

 

 

 

 

ADDWF f, d

Запись в регистр INDF не вызовет никаких

W=0x17

 

 

 

 

 

 

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

FSR=0xC2 (по этому адресу

 

 

 

 

 

регистре STATUS).

“лежит” число 0x20)

 

C,DC,Z

 

Сложение

 

Чтение INDF (FSR=0) даст результат 00h.

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

1

 

W и f

 

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

W=0x17

 

 

 

 

 

 

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

 

 

 

 

 

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

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

 

 

 

 

 

командой приращения к регистру PCL

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

 

 

 

 

 

(ADDWF PCL,1).

ADDWF

PCL,1

 

 

 

 

 

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

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

 

 

 

 

 

 

произошло пересечения границы между

W=0x10

 

 

 

 

 

 

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

PCL=0x37

 

 

 

 

 

 

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

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

 

 

 

 

 

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

PCL=0x47

 

 

 

 

 

 

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

C=0

 

 

 

 

 

 

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

ADDWF

PCL,1

 

 

 

 

 

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

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

 

 

 

 

 

 

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

W=0x10

 

 

 

 

 

 

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

PCL=0xF7

 

 

 

 

 

 

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

PCH=0x08

 

 

 

 

 

 

происходит.

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

 

 

 

 

 

 

PCL=0x07

 

 

 

 

 

 

 

PCH=0x08

 

 

 

 

 

 

 

C=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ANDWF

REG,1

 

 

 

 

 

 

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

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

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

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

REG=0x02

 

 

 

 

ANDWF f, d

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

ANDWF

REG,0

 

Z

 

 

 

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

 

1

 

 

 

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

W=0x17

 

 

 

 

Побитное И

 

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

REG=0xC2

 

 

 

 

W и f

 

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

 

 

 

 

 

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

W=0x02

 

 

 

 

 

 

 

REG=0xC2

 

 

 

 

 

 

 

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

 

 

 

 

 

 

ANDWF

INDF,1

 

 

 

 

 

 

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

 

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

W=0x17

 

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

58

 

 

 

 

 

 

 

 

CLRF

REG

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x5A

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

CLRF

f

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

CLRF

INDF

1

 

Z

 

 

 

 

 

 

 

Очистить f

 

 

 

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

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

COMF

f, d

 

 

 

W=0xEC

 

 

 

 

 

 

 

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

COMF

REG,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

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

REG=0xFF

 

1

 

Z

 

 

 

 

Если d=1,

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

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

 

 

 

 

 

f

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

COMF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DECF

REG,1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

DECF

f, d

 

 

 

DECF

REG,0

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

REG=0x10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычесть1 из f

 

 

 

 

W=x

 

 

 

 

 

 

 

 

Если d=0,

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

Z=0

 

1

 

Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

REG=0x10

 

 

 

 

 

 

 

 

 

 

 

 

W=0x0F

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

DECF

INDF,1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

59

 

 

 

 

 

 

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

LOOP

DECFSZ

REG,1

 

 

 

 

 

 

 

 

 

ветвлением

 

 

GOTO

LOOP

 

 

 

 

 

DECFSZ

f, d

 

 

 

 

CONTINUE ....

 

 

 

 

 

 

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

1)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

REG=0x01

 

 

 

 

 

 

 

Вычесть

 

 

 

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

 

 

 

 

 

 

 

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

REG=0x00

 

 

1(2)

 

 

 

 

1 из f

с

 

 

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

PC=адрес CONTINUE

 

 

 

 

 

ветвлением

 

 

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

2)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

REG=0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

исполняется за 2 м.ц.

REG=0x01

 

 

 

 

 

 

 

 

 

 

 

 

Переход на LOOP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)

 

INCF

REG,1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0xFF

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x00

 

 

 

 

 

 

 

 

 

 

 

 

Z=1

INCF

REG,0

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

INCF

f, d

 

 

REG=0x10

 

 

 

 

 

 

 

 

 

 

 

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

W=x

 

 

 

 

 

 

 

 

 

 

 

 

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

Z=0

 

 

 

 

 

 

 

 

Прибавить

 

 

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

 

 

 

 

 

1 к f

 

 

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

REG=0x10

 

 

1

 

Z

 

 

 

 

 

 

 

W=0x11

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

INCF

INDF,1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

“лежит” число 0xFF)

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

FSR=0xC2 (по этому адресу

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

Z=1

 

 

 

 

 

 

 

 

 

 

 

 

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

LOOP

INCFSZ

REG,1

 

 

 

 

 

 

 

 

 

ветвлением

 

 

GOTO

LOOP

 

 

 

 

 

INCFSZ f, d

 

 

 

 

CONTINUE ........

 

 

 

 

 

 

 

 

 

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

1)

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

 

 

 

 

 

 

 

 

 

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

REG=0xFF

 

 

 

 

 

 

 

Прибавить

 

 

 

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

 

 

 

 

 

1 к f

с

 

 

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

REG=0x00

 

 

1(2)

 

 

 

 

ветвлением

 

 

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

PC=адрес CONTINUE

 

 

 

 

 

 

 

 

 

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

2)

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

 

 

 

 

 

 

 

 

 

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

REG=0x02

 

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

исполняется за 2 м.ц.

REG=0x03

 

 

 

 

 

 

 

 

 

 

 

 

Переход на LOOP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)

 

IORWF

REG,0

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

 

IORWF

f,d

 

 

W=0x91

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x13

 

 

 

 

 

 

 

 

 

 

 

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

W=0x93

 

 

 

 

 

 

 

Побитное

 

 

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

Z=0

IORWF

REG,1

 

 

Z

 

 

“ИЛИ”

 

 

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

2)

 

1

 

 

 

W и f

 

 

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

 

 

 

 

 

 

 

 

 

 

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

REG=0x13

 

 

 

 

 

 

 

 

 

 

 

 

W=0x91

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

REG=0x93

 

 

 

 

 

 

 

 

 

 

 

 

W=0x91

 

 

 

 

 

 

 

 

 

 

 

 

Z=0

 

 

 

 

 

 

60

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