Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Арифметичні команди. В арифметических операциях нужно придерживаться строго определенных правил записи данных в соответствии с порядковыми номерами разрядов двоичного кода




В арифметических операциях нужно придерживаться строго определенных правил записи данных в соответствии с порядковыми номерами разрядов двоичного кода. В связи с ограниченными ресурсами микроконтроллера в нём используются только четыре арифметических операции с целыми числами (+, -, *, /). Отступления от правил кодирования приводят к неправильному выполнению арифметических операций.

В одном байте может быть закодировано 256 значений целого числа. При работе с положительными числами это соответствует значениям от 0 до 255. Все команды арифметических операций предназначены для работы с положительными целыми числами байтового формата, хотя команды сложения и вычитания в случае отсутствия переполнения обеспечивают получение корректного результата при специальном способе кодирования отрицательных чисел. Кодирование чисел более подробно рассмотрено в главе о программировании арифметических операций. При необходимости работы с числами, которые не могут быть представлены в байтовом формате, необходимо разрабатывать соответствующие подпрограммы. Выполнение операций умножения и деления с числами, имеющими произвольный знак, возможно при их представлении через знак и модуль и использовании соответствующих подпрограмм. Это могут быть собственные разработки или заимствования из хорошо проверенных библиотек других разработчиков.

Команда сложения работает с данными байтового формата, притом в качестве приемника всегда используется только накопитель:

ADD A,#src; ADD A,Rn; ADD A,@Ri; ADD A,src.

Для работы с числами, которые не могут быть представлены одним байтом, используется команда сложения, учитывающая перенос, полученный при сложении предыдущей пары байтов:

ADDC A,#src; ADDC A,Rn; ADDC A,@Ri, ADDC A, src.

Добавление буквы С к обозначению команды указывает на использование бита переноса. Существует также команда сложения, при помощи которой производится увеличение заданного операнда на единицу:

INC А; INC Rn; INC @Ri; INC src

Такая же команда есть и для работы с двумя байтами содержимого регистра указателя данных:INC DPTR. При помощи этой команды можно изменять содержимое указателя для чтения последовательности байтов из ПЗУ. При сложении чисел, представленных двоично-десятичными кодами, после операции сложения нужно использовать команду десятичной коррекции суммы DA А. Двоично-десятичное кодирование имеет весьма ограниченное применение и потому далее не рассматривается.

Набор команд для вычитания гораздо уже. Команда вычисления разности существует только в варианте с вычитанием содержимого бита переноса:

SUBB A,#src; SUBB A,Rn; SUBB A,@Ri; SUBB A,src/

Перед вычислением разности младших байтов нужно обязательно очищать бит переноса, если нет уверенности в его содержимом. При вычислении разности старших байтов этого делать не нужно.

Существует также команда вычитания, при помощи которой производится уменьшение заданного операнда на единицу: DEC A; DEC Rn; DEC src; DEC @Ri.

Команды уменьшения для работы с двухбайтовым форматом данных нет.

Результаты выполнения команд сложения и вычитания влияют на содержимое битов переноса, дополнительного переноса и переполнения в слове состояния программы. Результаты выполнения команд увеличения и уменьшения не влияют на содержимое слова состояния программы.

Команда умножения и деления работают при записи операндов в накопитель (A) и регистр В. Для команды умножения порядок записи сомножителей в эти регистры не важен. MUL АВ

Произведение имеет двухбайтовый формат. Младший байт произведения записывается в накопитель, а старший - в регистр В.

Для команды деления делимое должно быть записано в накопитель, а делитель - в регистр В: DIV АВ

После выполнения команды в накопителе находится частное, а в регистре В - остаток. После выполнения команд умножения и деления в бит переноса заносится 0. Если старший байт произведения не равен нулю, то в байт переполнения заносится 1. При делении на 0 в байт переполнения также заносится 1.

 


**************************




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


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


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



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




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