- •1.1.1. Кодирование символов
- •2. Системный отладчик Debug
- •2.1. Адресация памяти
- •2.2. Работа в отладчике
- •Лабораторная работа № 1
- •3. Основы программирования
- •3.1. Процесс программирования
- •3.1.1. Этапы создания программы
- •3.1.2. Компиляция программы. Опции командной строки
- •3.2. Cинтаксис ассемблерной программы
- •3.3. Простейшая программа
- •3.4. Скелет (каркас) программы
- •3.4.1. Модуль EXE
- •3.4.2. Модуль COM
- •3.5. Образ программы в памяти
- •3.5.1. Модуль EXE
- •3.5.2. Модуль COM
- •3.6. Работа с отладчиком Turbo Debugger (TD)
- •Лабораторная работа №1
- •4. Операторы и директивы
- •4.1. "Препроцессорные" директивы INCLUDE и EQU
- •4.2. Директивы описания и инициализации переменных DB, DW и DD
- •4.2.1. Директива DB (Define Byte - определить байт)
- •4.2.2. Директивы DW и DD (Define Word и Define Double Word)
- •4.3. Операторы Assembler
- •4.3.1. Операторы обработки данных
- •4.3.2. Операторы передачи управления
- •4.4. Вспомогательные псевдооператоры
- •4.5. Работа с макрооператорами
- •Лабораторная работа № 2
- •4.6. Приложение к лабораторной работе № 2. Адресация
- •4.6.1. Форматы машинных команд и их кодирование
- •4.6.2. 16-битный режим адресации операндов в памяти
- •5. Сервисные функции DOS
- •5.1.1. Ввод с клавиатуры символьной информации
- •5.1.2. Системные функции DOS ввода данных с клавиатуры
- •5.1.3. Команды работы со строками
- •5.1.4. Системные функции DOS вывода данных
- •Лабораторная работа №3
- •Лабораторная работа №4
- •6. Функции BIOS для работы с экраном и клавиатурой
- •6.1. Прямое программирование видеобуфера в текстовом режиме
- •6.2. Прерывание 10h. Видеофункции BIOS
- •6.3. Прерывания 16h, 1Ah, 15h
- •6.3.1. Прерывание 16h
- •6.3.2. Прерывание 1Ah
- •6.3.3. Прерывание 15h
- •Лабораторная работа №5
- •Заключение
- •Рекомендуемая литература
- •Использованная литература
4. Операторы и директивы
4.1. "Препроцессорные" директивы INCLUDE и EQU
Директивы INCLUDE и EQU аналогичны директивам препроцессорной обработки #include и #define языка С. В отличие от большинства директив и команд Ассемблера эти две директивы могут стоять где угодно в программе, в том числе вне всех программных сегментов.
Формат директивы INCLUDE: include Имя_файла
Операнд Имя_Файла записывается по правилам операционной системы (и может включать в себя имя диска и имена каталогов).
Директива действует следующим образом. В то место, где стоит директива, вписывается указанный файл (если, конечно, он доступен). Фактически на компиляцию поступает текст программы со включенным файлом.
При помощи директивы INCLUDE можно оформить "скелет" простой программы на Ассемблере так, что не будет необходимости вмешиваться в него и вписывать что-либо вручную:
1IDEAL
2 |
MODEL |
small |
3 |
STACK |
256 |
4DATASEG
5 Include my_data.asm
6CODESEG
7 |
Start: mov |
ax,@data |
|
8 |
|
mov |
ds,ax |
9 |
Include my_code.asm |
||
10 |
Exit: |
mov |
ax,4C00h |
11 |
END |
int |
21h |
12 |
Start |
|
Теперь необходимо только в текущем каталоге подготовить файл определения данных конкретной программы my_data.asm, и файл кодов конкретной программы my_codes.asm и запустить компилятор.
Директива EQU также может стоять в любом месте программы, в том числе вне любого программного сегмента. Ее формат:
Имя equ Операнд
Все три попя директивы являются обязательными. Смысл директивы состоит в том, что во всем тексте программы ниже директивы любое вхождение имени заменяется на значение операнда. Если в качестве операнда в правой части написано также некоторое имя, то имя, указанное в левой части, становится его псевдонимом, т.е. появляются два имени-синонима, которые можно использовать ниже по программе в равной степени для обозначения одного и того же обьекта.
Если в качестве операнда в правой части написано некоторое константное выражение, то оно вычисляется и ниже по программе каждое вхождение имени из левой части заменяется на это вычисленное значение.
47