Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Арифметичні команди




addlw k (ADD Literal to W – додати число до W).

Дія: додати число k до вмісту робочого регістра W.

Впливає на ознаки нуля Z, допоміжного переносу DC та переносу C. Ознака C встановлюється у стан 1, якщо при виконанні команди виник перенос із старшого (сьомого) розряду, а допоміжний перенос встановлюється, якщо був перенос із третього розряду у четвертий. Якщо цих переносів не виникає, відповідний біт ознаки скидається в нуль.

Приклад: addlw.73 – додати десяткове число 73 до вмісту робочого регістра. Якщо до виконання команди вміст робочого регістра був d'89', команда додає 73 + 89 =162. Результат завжди в робочому регістрі. Щоб визначити стан ознак виконаємо додавання цих чисел у двійковій системі.

Переноси: 1 11 1

d'73' = b'01001001'

(W) = d'89' = b'01011001'

Результат: (W) =d'162'= b'10100010'

Після виконання команди ознаки встановились так: Z=0, тому що результат не дорівнює нулю, DC=1, через те, що при додаванні був перенос з третього розряду в четвертий, C=0, тому що немає переносу із старшого розряду.

 

addwf f, d (ADD W and F – додати W з F).

Дія: Додати вміст регістра ОЗП f і робочого регістра W.

Арифметичний зміст команди такий же, як попередньої, й усі три ознаки встановлюються за тими ж правилами.

Приклад: addwf MPDT, f – додати вміст регістрів MPDT і робочого, результат в регістрі MPDT.

 

sublw k (SUBtract W from Literal – відняти W від числа).

Дія: від числа k відняти вміст робочого регістра. Результат завжди в W. Команда впливає на ознаки Z, DC, C. Насправді команда операцію віднімання замінює додаванням зменшуваного до числа, протилежного від'ємнику, яке отримується шляхом збільшення на одиницю інверсії від'ємника.

Приклад: sublw.89 – від числа 89 відняти вміст робочого регістра W. Якщо до виконання команди в робочому регістрі було число 68, після її виконання в ньому опиниться 89 – 68=89 +(-68) = 21. Детальніше розглянемо у двійковій системі. Спочатку отримується число, протилежне +68:

+68 = b'01000100'. Його інверсія b'10111011'. Інверсія, збільшена на одиницю, дорівнює b'10111100' = -68. Команда додає це значення з константою 89:

 

 

Переноси: 11111

89 = b'01011001'

(W) = -68 = b'10111100'

Результат: (W) = d'21' = b'00010101'

При виконанні команди встановлюються ознаки: Z=0, оскільки результат не нуль, DC=1, – є перенос із третього біта в четвертий, C=1, – є перенос із старшого розряду.

 

subwf f, d (SUBtract W from F – відняти W від F).

Дія: від вмісту регістра F відняти вміст робочого регістра W.

Арифметичний зміст команди такий же, як попередньої, й усі три ознаки встановлюються за тими ж правилами.

Приклад: subwf MUSA, W – від вмісту регістра MUSA відняти вміст робочого регістра, результат у робочому регістрі.

 

incf f, d (INCrement F – збільшити на одиницю F).

Дія: вміст регістра f збільшити на одиницю. Впливає на ознаку нуля Z.

Приклад: incf CNT, f – збільшити на одиницю вміст регістра CNT. Результат залишається в ньому ж.

 

decf f, d (DECrement F – зменшити на одиницю F).

Дія: вміст регістра f зменшити на одиницю. Впливає на ознаку нуля Z.

Приклад: decf NURK, f – зменшити на одиницю вміст регістра NURK. Результат залишається в ньому ж.

 

incfsz f, d (INCrement F and Skip if Zero – збільшити на одиницю f і пропустити, якщо нуль).

Дія: вміст регістра f збільшити на одиницю і пропустити наступну команду, якщо отримано нуль. Не впливає на ознаки.

Приклад: incfsz SOT, f – збільшити на одиницю вміст регістра SOT і, якщо отримано нуль, пропускається наступна команда. Якщо ж результат не дорівнює нулю, наступна команда виконується. Результат залишається в SOT.

decfsz f, d (DECrement F and Skip if Zero – зменшити на одиницю f і пропустити, якщо нуль).

Дія: вміст регістра f зменшити на одиницю і пропустити наступну команду, якщо отримано нуль. Не впливає на ознаки.

Приклад: decfsz COUNT, f – зменшити на одиницю вміст регістра COUNT і, якщо отримано нуль, пропускається наступна команда. Коли результат не дорівнює нулю, наступна команда виконується. Результат залишається в COUNT.

Дві останні команди часто використовуються для створення циклів.

 

clrf f (CLeaR F – очистити F).

Дія: очистити (занести нуль в) регістр f. Завжди встановлює ознаку нуля (Z=1).

Приклад: clrf SUM – очистити регістр SUM (усі його біти стають нулями), ознака Z=1.

 

clrw (CLeaR W – очистити W).

Дія: очистити (занести нуль в) регістр W. Завжди встановлює ознаку нуля (Z=1).

Приклад: clrw – очистити робочий регістр W, ознака Z=1.

 

rlf f, d (Rotate Left F – зсунути вліво F).

Дія: вміст регістра f циклічно зсунути на один розряд вліво через біт переносу C. Впливає на ознаку переносу.

Приклад: rlf CORK, f – біти регістра CORK зміщуються на один розряд вліво, стан ознаки переносу C заноситься у молодший біт регістра CORK, а його старший біт передається у біт переносу C.

 

rrf f, d (Rotate Right F – зсунути вправо F).

Дія: вміст регістра f циклічно зсунути на один розряд вправо через біт переносу C. Впливає на ознаку переносу.

Команда виконується так само, як попередня, тільки напрям зсуву протилежний.

 




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 428; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.