- •1. Предварительные сведения 6
- •2. Процессоры intel в реальном режиме 11
- •3. Директивы и операторы ассемблера 51
- •Введение
- •1. Предварительные сведения
- •1.1. Подготовка программ на языке ассемблера
- •1.2. Представление данных в компьютерах
- •1.2.1. Двоичная система счисления
- •1.2.2. Биты, байты и слова
- •1.2.3. Шестнадцатеричная система счисления
- •1.2.4. Числа со знаком
- •1.2.5. Логические операции
- •1.2.6. Коды символов
- •2. Процессоры intel в реальном режиме
- •2.1. Регистры процессора
- •2.1.1. Регистры общего назначения
- •2.1.2. Модели памяти и сегментные регистры
- •2.1.3. Стек
- •2.1.4. Регистр флагов
- •2.2.4. Косвенная адресация
- •2.2.5. Адресация по базе со смещением
- •2.2.6. Косвенная адресация с масштабированием
- •2.2.7. Адресация по базе с индексированием
- •2.2.8. Адресация по базе с индексированием и масштабированием
- •2.3. Основные непривилегированные команды
- •2.3.1. Пересылка данных
- •2.3.2. Двоичная арифметика
- •2.3.3. Десятичная арифметика
- •2.3.4. Логические операции
- •2.3.5. Сдвиговые операции
- •2.3.6. Операции над битами и байтами
- •2.3.7. Команды передачи управления
- •2.3.8. Строковые операции
- •2.3.9. Управление флагами
- •2.3.10. Загрузка сегментных регистров
- •2.3.11. Другие команды
- •3. Директивы и операторы ассемблера
- •3.1. Структура программы
- •3.2. Директивы распределения памяти
- •3.2.1. Псевдокоманды определения переменных
- •3.2.2. Структуры
- •3.3. Организация программы
- •3.3.1. Сегменты
- •3.3.2. Модели памяти и упрощенные директивы определения сегментов
- •3.3.4. Процедуры
- •3.3.5. Конец программы
- •3.3.6. Директивы задания набора допустимых команд
- •3.3.7. Директивы управления программным счетчиком
- •3.3.8. Глобальные объявления
- •3.3.9. Условное ассемблирование
- •3.4. Выражения
- •3.5. Макроопределения
- •3.5.1. Блоки повторений
- •3.5.2. Макрооператоры
- •3.5.3. Другие директивы, используемые в макроопределениях
- •3.6. Другие директивы
- •3.6.1. Управление файлами
- •3.6.2. Управление листингом
- •3.6.3. Комментарии
- •Литература
3.6.2. Управление листингом
Обычно ассемблеры, помимо создания объектного файла, предоставляют возможность создания листинга программы (TASM/L — для TASM, ml/Fl — для MASM). Листинг — это текстовый файл, содержащий текст ассемблерной программы, код каждой ассемблированной команды, список определенных меток, перекрестных ссылок, сегментов и групп. Формат файла листинга отличается для разных ассемблеров, и директивы управления форматом этого файла также сильно различаются, но несколько наиболее общих директив все-таки поддерживаются всеми тремя ассемблерами, рассмотренными в этой книге.
TITLE текст — определяет заголовок листинга. Заголовок появляется в начале каждой страницы.
SUBTTL текст — определяет подзаголовок листинга. Подзаголовок появляется на следующей строке после заголовка.
PAGE высота,ширина — устанавливает размеры страниц листинга (высота 10 - 255, ширина 59 - 255). Директива PAGE без аргументов начинает новую страницу, директива PAGE + начинает новую секцию, и нумерация страниц ведется с самого начала.
NAME текст — определяет имя модуля программы. Если NAME не указан, в качестве имени используются первые 6 символов из TITLE; если нет ни NAME, ни TITLE, за имя берется название файла.
.XLIST — отменить выдачу листинга.
.LIST — разрешить выдачу листинга.
.SALL — запретить листинг макроопределений.
.SECOND — запретить листинг неассемблированных условных блоков.
.LFCOND — разрешить листинг неассемблированных условных блоков.
.TFCOND — изменить режим листинга условных блоков на противоположный.
.CREF — разрешить листинг перекрестных ссылок.
.XCREF — запретить листинг перекрестных ссылок.
3.6.3. Комментарии
Кроме обычных комментариев, начинающихся с символа «;» (точка с запятой) и заканчивающихся в конце строки, возможны большие блоки комментариев, описываемые специальной директивой COMMENT.
comment @
любой текст
@
Операнд для COMMENT — любой символ, который будет считаться концом комментария. Весь участок текста, вплоть до следующего появления этого символа, ассемблером полностью игнорируется.
Литература
Зубков С. В. Ассемблер для DOS, Windows и Unix.— М., 1999.— 640 с.
Юров В., Хорошенко С. Assembler: учебный курс.— СПб., 1999.— 672 с.
Рудаков П. И., Финогенов К. Г. Программируем на языке ассемблера IBM PC. — Обнинск, 1999. — 495 c.
Абель П. Язык Ассемблера для IBM PC и программирования.— М., 1992.— 447 с.
Финогенов К. Г. Основы языка ассемблера.— М., 1999.— 288 с.
Сван Т. Освоение Turbo Assembler.— К.-М.-СПб., 1995.— 544 с.