Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_МП.DOC
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2.28 Mб
Скачать

Изучение стандартных функций прерывания dos

Цель работы:

Знакомство со стандартными функциями прерывания DOS, вывод информации на дисплей, ввод данных с клавиатуры и запись в файл.

При написании программ на языке ассемблера часто используют стандартные программные прерывания системы DOS и системы ввода-вывода BIOS. Далее перечислены некоторые функции прерывания INT 21H.

Функции для работы с клавиатурой

Функция 01H. Ввод с клавиатуры с эхо

Функция ожидает ввод со стандартного входного устройства. Если получен ASCII символ, он выводится на стандартное выходное устройство и записывается в AL. Входные данные AH = 1H. Выходные данные AL символ в коде ASCII со стандартного входного устройства.

Функция 07H. Ввод с клавиатуры

Функция аналогична функции 01H, но лишь с той разницей, что работает без эхо и при ее выполнении не проверяется наличие Ctrl-Break.

Функция 08H. Ввод с клавиатуры

Функция аналогична функции 01H, но лишь с той разницей, что работает без эхо.

Функция 0AH. Буферизированный ввод с клавиатуры

У данной функции в отличие от перечисленных выше функций, конечный результат представляет собой не единичный символ, а цепочку, которая получается в буфере ввода после нажатия Return (или после получения символа 0DH от стандартного входного устройства). Перед выполнением функции первый байт входного буфера должен содержать его длину, обязательно отличную от 0. Это максимальное количество символов, которые могут быть обработаны. Буфер заполняется, начиная с третьего байта, причем последний символ – 0DH (CR). Функция помещает во второй байт буфера действительную длину полученной строки без символа 0DH. Входные данные AH = 0AH, DS:DX – адрес входного буфера.

Функции для работы с экраном

Функция 02H. Вывод на экран

Символ из регистра DL выводится на экран. Функция реагирует на управляющие ASCII символы. Если символ в DL равен 08H (управляющий символ BS – символ назад), курсор возвращается на одну позицию влево без удаления последнего символа. Входные данные AH = 02H, DL – символ в ASCII коде.

Функция 09H. Вывод строки на экран

Символьная строка должна заканчиваться символом $ (24Н). Входные данные AH= 09H, DS:DX – указатель на начало символьной строки.

Функции для работы с файлами

Открыть файл – это означает выделить для него фиксированную область памяти. После открытия файла пользователь получает двухбайтовый номер (файловый манипулятор), которым файл идентифицируется во всех последующих операциях вплоть до его закрытия. Закрытие файла означает прекращение связи между блоком управления (программой) и файлом.

Функция 3DH. Открытие файла

На момент открытия файл должен существовать. В регистре AL задается режим открытия.

Значение регистра AL

Режим открытия

00H

только для чтения

01Н

только для записи

02Н

для чтения и записи

Входные данные AH = 3DH, DS:DX – указатель к ASCII цепочке, в которой указывается имя открываемого файла, AL – режим открытия. Если CF = 1, тогда в AX код ошибки. Если CF = 0, тогда в AX файловый манипулятор.

Функция 3СH. Открытие файла

Открывает несуществующие файлы. Работает аналогично функции 3DH.

Функция 3EH. Закрытие файла

Осуществляет закрытие файла. Входные данные AH = 3EH, BX – файловый манипулятор, полученный при открытии файла. Выходные данные AX – если CF = 1 код ошибки.

Функция 3FH. Чтение из файла

Читает указанное количество байтов. Количество прочитанных байтов не всегда соответствует заявленному, например при достижении конца файла. Входные данные AH = 3FН, BX – файловый манипулятор, CX – число байтов, DS:DX – адрес, по которому нужно записать прочитанную запись. Если CF = 1 тогда в AX код ошибки. Если CF= 0, тогда в AX число прочитанных байтов.

Функция 40H. Запись в файл

Эта функция записывает указанное количество байтов. Количество прочитанных байтов не всегда соответствует заявленному, например, если нет свободного места на диске. Входные данные AH = 40Н, BX – файловый манипулятор, CX – число байтов, DS:DX – адрес записи. Если CF = 1 тогда в AX код ошибки. Если CF = 0 тогда в AX число записанных байтов.

Написать программу лабораторной работы №1 с возможностью ввода данных с клавиатуры и вывода результата работы программы на дисплей. Организовать чтение входных данных из файла и запись выходных данных в файл. В приложении 1 представлена таблица ASCII кодов.

ЛИТЕРАТУРА

  1. Микропроцессорный комплект К1810. Структура, программирование, применение / Под ред. Ю.М. Казаринова. М.: Высш. Шк., 1990.

  2. Гук М. Процессоры INTEL от 8086 до PENTIUM. Л.: Питер, 1997.

  3. Рудаков П.И., Финогенов К.Г. Программируем на языке ассемблера IBM PC. Изд. 2-е.– Обнинск: Издательство «Принтер», 1997.

  4. В. Юров. Assembler. СПб.: Издательство «Питер», 2000.

Приложение 1

Содержание

1.ТРЕБОВАНИЯ ЯЗЫКА АССЕМЬЛЕРА

3

1.1. Комментарий в программах на языке Ассемблер

3

1.2. Формат кодирования

3

1.3. Директивы ассемблера

5

1.4. Память и регистры

9

1.5. Инициализация программы

10

1.6. Пример исходной программы

12

2. ОПРЕДЕЛЕНИЕ ДАННЫХ

13

2.1. Директивы определения данных

14

2.2. Непосредственные операнды

18

3. АССЕМБЛИРОВАНИЕ И ВЫПОЛНЕНИЕ ПРОГРАММЫ

22

3.1. Ввод программы

22

3.2. Подготовка программы для выполнения

22

3.3. Ассемблирование программы

23

3.4. Выполнение программы

28

3.5. Пример исходной программы

29

4. ОТЛАДЧИК TURBO DEBUGGER

33

4.1. Навигация по диалоговым блокам

33

4.2. Активные клавиши

43

Лабораторная работа № 1

45

Лабораторная работа № 2

46

ЛИТЕРАТУРА

49