- •Эрни Каспер Программирование на языке Ассемблера для микроконтроллеров семейства i8051
- •1.Что нужно знать программисту о микроконтроллерах семейства i8051
- •1.1.Общие сведения об архитектуре i8051
- •1.2.Правила записи команд микроконтроллера семейства i8051 на Ассемблере
- •1.3.Форматы и способы адресации данных
- •1.4.Форматы и способы адресации команд
- •1.5.Команды пересылки информации
- •1.6.Команды поразрядной обработки информации
- •1.7.Команды арифметических операций
- •1.8.Управляющие команды
- •2.Директивы ассемблера для микроконтроллеров семейства i8051
- •2.1.Общие понятия о процессах трансляции и компоновки
- •2.2.Обработка имен транслятором и компоновщиком
- •2.3.Директивы резервирования памяти и инициализации данных
- •2.4.Использование выражений в операндах
- •2.5.Директивы условной трансляции
- •2.6.Директивы подстановок
- •2.7.Директивы управления вводом и выводом
- •Глава 3.
- •3.Кросс-средства фирмы 2500 a.D. Software, Inc. Для семейства i8051
- •Глава 4
- •4.Программирование арифметических действий
- •4.1.Кодирование информации в микроконтроллере
- •4.2.Арифметические действия с большими числами
- •4.3.Арифметические действия с отрицательными числами
- •4.4.Контроль точности при программировании арифметических операций
- •Глава 5
- •5.Программирование вычисления функций
- •5.1.Возведение в квадрат и извлечение квадратного корня
- •5.2.Переход от десятичной системы счисления к двоичной и обратно
- •5.3.Вычисление функций при помощи таблиц
- •5.4.Вычисление обратной функции по таблице прямой функции
- •5.5.Компенсация систематических погрешностей при помощи таблиц
- •Глава 6
- •6.Программирование фильтрации сигналов
- •6.1.Особенности цифровой фильтрации сигналов
- •6.2.Программирование простейших фильтров нижних частот
- •6.3.Программирование фильтра для оценки параметров сигнала
- •6.4.Программирование медианного фильтра
- •Глава 7
- •7.Программирование взаимодействия с внешними устройствами
- •7.1.Общие вопросы взаимодействия
- •7.2.Порядок выполнения прерываний в микроконтроллерах семейства i8051.
- •7.3.Синхронизация работы программы внешним или внутренним сигналом
- •7.4.Программирование приема информации от датчиков
- •7.5.Программирование выдачи команд на исполнительные устройства
- •7.6.Программирование ввода и вывода информации для пользователя
- •8.Несколько рекомендаций о стиле программирования
- •8.1.Стиль программирования и использование ресурсов
- •8.2.Оформление исходного текста программы
- •8.3.Системы обозначений, выражения и простые подстановки
- •8.4.Применение подпрограмм и сложных текстовых подстановок
2.4.Использование выражений в операндах
Для удобства программиста в трансляторе имеется возможность вычисления числовых значений операндов, записываемых в виде выражений. Следует помнить, что эти выражения вычисляются только на этапе трансляции. В представленном ниже перечне для каждой вычислительной операции указано символическое обозначение, уровень приоритета и назначение. Ограничителями буквенных обозначений вычислительных операций являются точки. Операции, имеющие наивысший уровень приоритета, являются унарными (работают с одним аргументом).
Операция |
Приоритет |
Назначение |
+ |
7 |
Подтверждение знака операнда |
- |
7 |
Изменение знака на противополный |
.NOT. |
7 |
Поразрядная инверсия |
> |
7 |
Выделение старшего байта слова |
< |
7 |
Выделение младшего байта слова |
* * |
6 |
Возведение в степень (положительные числа) |
* |
5 |
Умножение положительных чисел |
/ |
5 |
Вычисление частного от деления положительных чисел |
.MOD. |
5 |
Вычисление остатка от деления положительных чисел |
.SHR. |
5 |
Сдвиг двоичного кода вправо |
.SHL. |
5 |
Сдвиг двоичного кода влево |
+ |
4 |
Сложение |
- |
4 |
Вычитание |
.AND. |
3 |
Поразрядное логическое И |
.OR. |
2 |
Поразрядное логическое ИЛИ |
.XOR. |
2 |
Поразрядное логическое ИСКЛЮЧАЮЩЕЕ ИЛИ |
При выполнении вычислительных операций наивысший приоритет имеют круглые скобки. Вычисления осуществляются при помощи 80-разрядных двоичных целых чисел, за исключением операций возведения в степень, в которых используется 8-разрядное значение показателя степени. Однако в качестве операндов используется целая часть выражения (за исключением форматов FLOAT и DOUBLE) в двоичном представлении с ограниченным количеством разрядов (8 — для байта и 16 — для слова). При возведении в степень первым операндом является основание, а вторым — показатель степени. При сдвиге первым операндом является величина сдвига, а вторым - - сдвигаемый код. Освобождаемые при сдвиге разряды кода заполняются нулями.
Уровень приоритета 1 (самый низкий) имеют операции сравнения числовых значений, результатом которых является логическое значение. Истинное значение представляется набором единиц во всех разрядах байта, а ложное - набором нулей. В представленном далее перечне приводятся операции сравнения периода ассемблирования. Приведенные в перечне высказывания являются условиями истинности выражения с соответствующей операцией сравнения.
Операция |
Приоритет |
Условие истинности |
.EQ. |
1 |
первое число равно второму |
.GT. |
1 |
первое число больше второго |
.LT. |
1 |
первое число меньше второго |
.UGT. |
1 |
первое число выше второго |
.ULT. |
1 |
первое число ниже второго |
При сравнении чисел следует учитывать, что для заведомо положительных чисел и для чисел со знаком используется разное кодирование. Поэтому для сравнения чисел со знаком должны использоваться 2-я и 3-я операции, а для сравнения заведомо положительных чисел — 4-я и 5-я.