ее работы получится байт, биты ко-
торого будут
равны 1 в том случае,
если соответствующие биты в опе-
рандах имеют р азн ы е значения.
Н еб ол ьш о е п р и м еч ан и е . И з -
вестно, что любую логическую фун-
кцию можно реализовать при по-
мощи только двух функций И и Н Е
(возможны и иные пары и тройки).
Поэтому имеющегося набора логи-
ческих команд И, И ЛИ , И С КЛ Ю Ч А -
Ю Щ ЕЕ И Л И более чем достаточно
для лю бы х случаев (ф ункция НЕ,
как можно догадаться, реализует-
ся командой CPL).
В строке 47 в таблице 9 указа-
на команда SW AP, у которой вооб-
ще нет операндов. Эта команда ме-
няет местами
тетрады
аккумулято-
ра. Т.е. 4 младших бита становят-
ся старшими, а четыре старших -
младшими.
А завершаю т таблицу команды
сдвига содержимого аккумулятора
RL и RLC - влево, RR и RRC - впра-
во, При сдвиге значения битов пе-
ремещаю тся по позициям в выб-
ранном направлении. На рис. 5 по-
казаны диаграммы сдвигов, пояс-
няющие принцип действия команд.
Квадратиками условно обозначены
биты аккумулятора, справа млад-
ший, а слева старший; стрелки ука-
зывают направление перемещения
значений битов.
Как видите, команды RRC и RLC
работают на самом деле с 9-ю би-
тами, в качестве дополнительного
бита выступает флаг CY.
Н ебольш ое отступление. Все
арифметические команды микро-
контроллера позволяют работать
с
положительными числами, не пре-
вышающими 255, но часто требу-
ется обрабатывать гораздо боль-
шие числа, в том числе отрицатель-
ные и д аж е дробны е. П одобная
арифметика для микроконтроллеров
RR
RL
' >.
► ')[• ij- "if
i
J i - j i j j i
i
<
RRC
RLC
-------- --CY4~ - — -
X Y ---------------
Рис. 5. Диаграммы, поясняющие
команды сдвигов
получила название расширенной.
К сожалению, принципы расш ирен-
ной арифметики хотя и просты, но
требуют достаточно объемного про-
граммного кода, познакомить с кото-
рым в ограниченных рам ках ж ур-
нальных статей невозможно. Реко-
мендую ознакомиться с книгой11,
где рассмотрены варианты расш и-
ренной арифметики для семейства
М С 351, а также статьей12 (статья
написана для соверш енно иного
микроконтроллера, но принципы и
алгоритмы все равно остаются од-
ними и теми же). Кроме того, при
помощи поиска в Интернете можно
найти готовые подпрограммы, реа-
лизующие различные вычисления
расширенной арифметики.
Мы изучили самую больш ую
группу команд, однако, как видите,
огромных усилий это не потребова-
ло. Достаточно знать только мнемо-
нику команд и способы адресации,
а в результате путем простой ком-
бинации известных вариантов полу-
чается все множество доступных!
Ещ е одно отступление. М но-
гие производители микроконтрол-
леров заостряют внимание пользо-
вателя на очень малом количестве
имеющихся команд (например, для
некоторых моделей микроконтрол-
леров Р1С их всего 33), продвигая
зто как огромное преимущество.
На мой взгляд, такое утверждение
д а л е ко не однозначно. М ногие
вещи, которые реализуются одной
командой семейства М С Б 5 1, для
Р1С реализуются двумя, тремя и
даже большим количеством команд,
что отнюдь не делает программу
более легкой в написании и отлад-
ке, не прибавляет скорости ее вы-
полнения и не сокращает объем
требуемой памяти. Кроме того, со-
кращ енны е наборы ком анд, к а к
правило, имеют жестко фиксирован-
ные способы адресации (например,
"РЛ" - НАЧИНАЮ Щ ИМ
11 Каспер Э. Программирование на
языке Ассемблера для микроконтролле-
ров семейства 18051. - М.: Горячая линия
- Телеком, 2004. - стр. 88-130.
12
Черномырдин А. Программирова-
ние микроконтроллеров. Расширенная
арифметика. - “Радиолюбитель”, №3,
2006 г., с. 38.
для косвенного обращения к ячей-
ке используется совершенно иная
команда, чем для прямого), а в ре-
зультате надо помнить все 33 ко-
манды со всеми их нюансами, в то
время как в нашем случае доста-
точно знать только м н ем о н и ку
(всего-то на 11 больше, чем хвале-
ные 33) и варианты адресации и
почти всегда можно их просто ком -
бинировать. Именно поэтому я счи-
таю, что система команд семейства
М СЗ-51 - лучшая для начинающих.
А напоследок предлагаю не-
большое задание. Разработайте
самостоятельно 3 подпрограммы
для решения следующих задач:
1. З аполнение области О З У
значением 00(1. Адрес начала обла-
сти Додпрограмма получает в ре-
гистре НО, а размер (количество
байт) области - в регистре Ш .
2. Копирование области О З У в
новое место. Адрес начала копиру-
емой области подпрограмма полу-
чает в регистре ЯО, адрес, с кото-
рого должны быть помещены копи-
руемые данные, в регистре И1, а
количество копируемых байт - в
регистре 132.
3. Обмен содержимого двух об-
ластей О ЗУ. Параметры те же, что
• в задаче № 2.
Подпрограммы должны быть по
возможности короткими. Исполь-
зовать иные ячейки О З У , кроме
тех, на которые указывают соответ-
ствующие регистры в задании, не
допускается, задействовать все ос-
тальные регистры можно. После
возврата из подпрограммы содер-
жимое всех регистров должно ос-
таться без изменений, как было пе-
ред вызовом.
Обратите внимание: задачи мо-
гут иметь по несколько решений.
Подсказка: используйте МСвШсНо,
чтобы проверить себя.
В- - - - - - - - - - - - - - - - - - - - -
П р о д о л ж ен и е в № 6/2007
60
У
Радиолюбитель - 0 4 /2 0 0 7
предыдущая страница 60 Радиолюбитель 2007-05 читать онлайн следующая страница 62 Радиолюбитель 2007-05 читать онлайн Домой Выключить/включить текст