Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция по АВСиКС.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
57.86 Кб
Скачать

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.