Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава В. Арифмети ч еские операции и операции в двои чно-десятичном формате 215 сятичного числа. Примеры его использования для отображения чисел на дисплеях можно найти в главах 14 и 1 6. В архиве с примерами по адресу, указанному во введении, имеется файл (ari phmetic.asm) с текстами всех описанных здесь процедур, включая и Ьin2bcdl O . В конце файла также размещен весьма объемный пример процедуры Ьin2BCD2 4 , осуществляющей конвертацию чисел, выходящих за рамки 1 6-разрядного диапазо на, - такая, например, задача может возникнуть при конструировании многораз рядного счетчика или частотомера. Пример ограничивается диапазоном в 7 деся тичных знаков (9 999 999), т. е. исходное число будет укладываться в три байта (24 разряда). В целях универсальности на выходе получаются отдельно: неупако ванный (сразу для индикации) и упакованный десятичный формат. В примере упа кованное число сразу складывается в SRAM, но экономией регистров там не зани мались, и их требуется аж 1 4 штук. Сократить количество необходимых регистров (но при этом увеличить число команд) можно, если и исходное число, и все резуль таты сразу записывать в SRAM. Обратите внимание, что для экономии часть данных в этих процедурах размещает ся в регистрах из первой половины регистрового файла, которые обычно мы не ис пользуем из-за невозможности проведения операций с константами, также надо учитывать некоторые адреса в SRAМ, чтобы случайно что-то не испортить . Обе процедуры: Ьin2bcdl 0 и Ьin2BCD2 4 - сделаны на основе «фирменной» Ьin2BCD16 . Как и в других случаях, в текстах процедур сохранена часть оригинальных коммен тариев из исходной процедуры. Отрицательные и вещественные числа в МК Мы уже упоминали в начале главы о том, что отрицательными и действительными числами пользоваться по возможности не будем . Но ради общего образования надо представлять, что именно Arduino делает, когда мы задаем отрицательное число или тип данных float. Все сложности с этим вопросом возникают от того, что сам микропроцессор знает только целые двоичные числа размером, соответствующим его разрядности, и про все остальное приходится договариваться людям, которые его эксплуатируют. Они очень стараются, чтобы эти договоренности были едины ми и для внутреннего представления чисел в инструкциях процессора, и для ком пиляторов всех языков программирования, но по объективным причинам их нико гда не получается соблюсти до конца. П редставление отрицательных чисел Отрицательное число - это чистая абстракция человеческого разума, в природе никаких знаков минуса не существует. Потому их представление в понятном чело веку виде - предмет договора, не более. Правила, которым подчиняются отрица тельные числа в математике, - и есть такой договор, который позволяет непроти воречиво распространить на отрицательные числа почти все операции, которые
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==