- •3.Программирование на языке ассемблера
- •3.1. Архитектура микропроцессоров k1810вм86/k1810вм88
- •3.2. Основные элементы ассемблера. Формат программной строки
- •3.3. Директивы управления сегментами
- •3.4. Типовая структура текста программы
- •3.5. Символические имена
- •3.6. Константы. Их типы и директивы описания
- •3.6.1. Числовые константы
- •3.6.2. Символьные константы
- •3.6.3. Поименованные константы
- •3.6.4. Константы-выражения
- •3.7. Переменные. Их типы и директивы описания
- •3.7.1. Стандартные типы данных и их размещение в памяти
- •3.7.2. Директивы описания переменных и распределения памяти
- •3.8. Атрибуты переменных и меток. Директивы, возвращающие атрибутные значения
- •3.8.1. Атрибуты переменных
- •3.8.2. Атрибуты меток
- •3.9. Замена атрибутов переменных и меток
- •3.9.1. Замена смещения
- •3.9.2. Замена сегмента
- •3.9.3. Замена типа
- •3.10. Способы адресации операндов
- •3.10.1. Адресация данных
- •Регистровая адресация
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная регистровая адресация
- •Базовая адресация
- •Индексная адресация
- •Базово-индексная адресация
- •Относительная базовоиндексная адресация
- •3.10.2. Адресация переходов
- •Внутрисегментный прямой переход
- •Внутрисегментный косвенный переход
- •Межсегментный прямой переход
- •Межсегментный косвенный переход
- •3.11. Система команд
3.5. Символические имена
Для идентификации данных и меток в ассемблерных программах используются символические имена.
Символическое имя представляет собой некоторую последовательность символов, в которую могут входить следующие знаки:
буквы от A до Z (по умолчанию строчные и прописные буквы не различаются);
цифры от 0 до 9;
специальные знаки: знак подчеркивания (_), вопросительный знак (?), знак доллара ($) и знак коммерческого at(@).
Символические имена не могут начинаться с цифры. Ассемблер различает имена по первым 32 символам.
Пример 3.6:
Alpha ; Допустимые имена
String_Count
@DELAY
1Array ; Недопустимое имя
3.6. Константы. Их типы и директивы описания
Константы это элементы данных, не изменяющие своего значения. Все константы делятся на четыре типа:
1) числовые;
2) символьные;
3) поименованные;
4) константывыражения.
3.6.1. Числовые константы
Числовая константа представляет собой число, которое может быть записано в различных системах счисления. Основание системы счисления определяется последним символом этой константы. При этом для обозначения различных систем счисления используются следующие символы: b двоичная система; q или oвосьмеричная система; dдесятичная система; hшестнадцатиричная система.
Если в конце числовой константы нет ни одного из перечисленных символов, то ассемблер считает ее представленной в системе счисления, установленной по умолчанию. Изначально, по умолчанию, устанавливается десятичная система счисления.
Числовая константа всегда должна начинаться с десятичной цифры 09.
Пример3.7:
01110010101b двоичная константа;
17354q восьмеричная константа;
255o восьмеричная константа;
62897d десятичная константа;
62897 десятичная константа (по умолчанию);
3ABCh шестнадцатиричная константа;
F5h ошибканачинается не с цифры 09;
0F5h шестнадцатиричная константа.
3.6.2. Символьные константы
Символьная константа представляет собой любую последовательность символов, заключенных в апострофы или кавычки. В виде символьных констант в программах представляются различные сообщения. Две формы задания символьных констант обусловлены тем, что в состав самих сообщений часто должны входить кавычки для выделения названий.
Пример3.8:
'Введите данные' ; Это
"It is string constant" ; символьные
'Система "Поиск" к работе готова' ; константы
Disk full ; Ошибка нет ограничивающих ; символов
3.6.3. Поименованные константы
Поименованная константа это константа, заданная именем. Связь между именем и значением константы устанавливается директивамиEQUили =.
Эти директивы записываются в следующем формате:
Имя EQUСтрока_символов
Имя EQUЧисловое_выражение
Имя = Числовое_выражение
Директивы EQUи = аналогичны по назначению, но имеют следующие различия:
1) директива EQU может использоваться для присвоения имени как числового, так и символьного значения;
2) имена, определенные директивой =, можно переопределять, а директивой EQU нельзя.
Пример3.9:
К EQU1024 ; Числовое значение
Speed EQURate ; Введение синонима
Count EQUCX ; Переименование регистра
Const = 56 ; Присвоение числового значения
Const = 125 ; с возможностью явного или
Const = Const+10 ; неявного переопределения
После присвоения имени некоторого значения им можно пользоваться везде, где можно использовать его значение. При трансляции программы ассемблер заменяет имя его значением.
Пример 3.10:
Table EQUDS:[BP][SI]
MOVAX, Table ; Это эквивалентные
MOV AX, DS:[BP][SI]. ; строки
Использование поименованных констант улучшает сопровождаемость программы и упрощает ее модификацию.
