Obsluga
.pdf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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