Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
218 Часть 11. Программирование микроконтроллеров АVR на ассемблере Иначе говоря, для полного сведения вычитания к сложению нужно проделать три операции: l . Найти дополнение до l для вычитаемого (инвертировать его биты) . 2. Прибавить к результату l , чтобы найти дополнительный код. 3 . Сложить уменьшаемое и дополнительный код для вычитаемого. Первые две операции и объединены в АVR-ассемблере в одну под именем neg, ко торая сразу возвращает дополнительный код 8-разрядного числа' . Для корректной работы с отрицательными числами в АVR есть специальные команды умножения (сложение и вычитание, вообще говоря, таких специальных команд не требуют), но в практические приемы работы с отрицательными числами мы здесь углубляться не станем. С отрицательными числами (как и с веществен ными, о чем рассказано далее) иметь дело напрямую в 8-разрядных МК неудоб но - их, например, приходится специальным образом преобразовывать при обмене с внешними устройствами, почти всегда имеющими свою разрядность и тем самым свое представление об отрицательных числах. Так, в 8-разрядной системе число 255 есть минус единица, а в 1 6-разрядной минус единице соответствует число 65 535 , в 32-разрядном - число 2 1 47 483 647 и т. п. В этих случаях число 255 бу дет интерпретировано как положительное 255 , что приводит к излишней путанице. Стоит, например, иметь в виду, что при посылке данных в компьютер некоторые не очень совершенные приемные программы (как, например, монитор порта Arduino) могут интерпретировать большие положительные числа как числа со знаком минус. В электронике небольшой разрядности вообще всегда проще «вогнать» числа в по ложительный диапазон, а знак «минус» (например, для температуры в градусах Цельсия при отображении на дисплее) учесть отдельно, - все равно число прихо дится раскладывать побайтно (соответствующие примеры приведены в главах 14 и 16). П редставление вещественных чисел Как мы можем при необходимости представить вещественные числа в компьютере, если регистры ничего о таковых «не знают» и могут воспроизводить только целые числа? Мы не станем рассматривать расширение формулы для представления чисел в позиционной системе (см. приложение 1 ), включающее в себя не только целые, но и все действительные числа, поскольку в электронике такой варИ:ант хождения не имеет. В электронике и компьютерной технике используют другой способ пред ставления действительных чисел - с помощью мантиссы и порядка, в так назы ваемом нормализоватюм виде . При этом место запятой фиксируется так, чтобы перед запятой всегда был один ненулевой десятичный разряд (т. е. число от 1 до 9): 1 Казалось бы логичным поменять названия команд сот и neg местами- так они больше соответство вали бы смыслу производимых ими действий. .Но так принято, потому что именно операция neg соот ветствует изменению знака однобайтового числа (в диапазоне - 1 28 до + 1 27). В языке С операция по битового НЕ (�) также имеет синоним compl.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==