- •§ 14. Процесс разработки программы в макроассемблере
- •14.1. Структура программ на ассемблере masm
- •14.2. Директивы сегментации
- •14.3. Директивы резервирования и инициализации данных
- •14.4. О программировании процедур работы с устройствами ввода – вывода
- •14.5. Пакет masm
- •14.6. Процесс разработки программы
14.3. Директивы резервирования и инициализации данных
Ранее, в § 10 были рассмотрены простые типы данных. Описать их можно с помощью директив резервирования и инициализации данных. Они указывают транслятору на выделение определенного объема памяти. Транслятор, обрабатывая каждую директиву, выделяет необходимое количество байт памяти и при необходимости инициализирует эту область некоторым значением.
Формат директивы:
[имя] D* выражение [, выражение] [..]
Ключевые слова D* могут быть следующими:
db – резервирование памяти для данных размером 1 байт.
dw – резервирование памяти для данных размером 2 байта.
dd – резервирование памяти для данных размером 4 байта.
df и dp – резервирование памяти для данных размером 6 байт.
dq – резервирование памяти для данных размером 8 байт.
Выражение показывает, какое количество элементов памяти необходимо выделить и какие данные там должны содержаться. Оно может быть:
константой: const db 56 и т.д. Необходимо учитывать диапазон и совместимость байта, слова и т.д. Так, для DB константа может располагаться в диапазоне 0...255; для DW – от 0 до 65 535; для DD – от 0 до 4 294 967 295;
символьной строкой: str1 DB ‘Привет’; для DB строка может содержать 255 символов, во всех остальных только 2 символа;
простое выражение, вычисляемое только при трансляции программы: fn1 DB 80*3;
относительное или адресное выражение, состоящее из 16-битового адреса сегмента и 16-битового смещения.
14.4. О программировании процедур работы с устройствами ввода – вывода
Процедуры ввода – вывода выполняются по прерываниям. Состав основных видов прерываний был рассмотрен в § 8.
Задание режимов работы и обмен данными с дисплеем можно выполнять при прерываниях BIOS типа 10h, а вывод данных на дисплей – при прерываниях 21h.
1. Процедура перемещения курсора в заданную позицию.
mov AH,02h
mov BH,<номер страницы>
mov DH,<номер страницы>
mov DL,<номер столбца>
int 10h.
2. Процедура вывода символа в заданную позицию.
mov AH,09h
mov BH,<номер страницы>
mov BL,<атрибут символа>
mov CX,<счетчик записываемых символов>
mov AL,<код символа>
int 10h.
3. Процедура вывода символа в заданную позицию и перемещение курсора на одну позицию вправо.
mov AH,14h
mov BH,<номер страницы>
mov AL,<код символа>
int 10h.
4. Процедура очистки экрана дисплея.
mov AH,6h
mov AL,0h
int 10h.
5. Процедура вывода символа на экран
mov AH,02h
mov DL,<код символа>
int 21h.
6 . Процедура вывода текста на экран до символа $. Начальный адрес текста должен быть определен в DS:DX.
mov AH,09h
int 21h.
7. Процедура считывания символа и помещение кода в регистр AL, а сам символ выводится на экран
mov AH,01h
int 21h.
8. Процедура считывания символа и помещение кода в регистр AL, а сам символ не выводится на экран
mov AH,08h
int 21h.
9. Процедура считывания строки в буфер
mov AH,0Ah
int 21h.
14.5. Пакет masm
В состав пакета ассемблера входят следующие программы:
1. masm.exe-ассемблер;
2. ml.exe-ассемблер и компоновщик (Masm и Link);
3. link.exe- компоновщик;
4. cv.exe-отладчик (Code View);
5. lib.exe,implib.exe, nmake.exe, cref.exe h2inc.exe, exehdr.exe, cvpack.exe, helpmake.exe,rm.exe, undel.exe, exp.exe – вспомогательные утилиты.
Трансляция текстов на ассемблере производится исполняемыми файлами masm.exe и ml.exe.