- •1. Требования языка ассемблера
- •1.1. Комментарии в программах на Ассемблере
- •1.2. Формат кодирования
- •1.3. Директивы ассемблера
- •Title текст
- •Директива segment
- •Директива assume
- •1.4. Память и регистры
- •1.5. Инициализация программы
- •1.6. Пример исходной программы
- •2. Определение данных
- •2.1. Директивы определения данных
- •2.2. Непосредственные операнды
- •Длина непосредственных операндов
- •3. Ассемблирование и выполнение программы
- •3.1. Ввод программы
- •3.2. Подготовка программы для выполнения
- •3.3. Ассемблирование программы
- •3.4. Выполнение программы
- •3.5. Пример исходной программы
- •4. Отладчик turbo debugger
- •4.1. Навигация по диалоговым блокам
- •4.2. Активные клавиши
- •Изучение языка ассемблера для персональных компьютеров
- •Изучение стандартных функций прерывания dos
- •Функции для работы с клавиатурой
- •Функции для работы с экраном
- •Функции для работы с файлами
Изучение стандартных функций прерывания 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 кодов.
ЛИТЕРАТУРА
Микропроцессорный комплект К1810. Структура, программирование, применение / Под ред. Ю.М. Казаринова. М.: Высш. Шк., 1990.
Гук М. Процессоры INTEL от 8086 до PENTIUM. Л.: Питер, 1997.
Рудаков П.И., Финогенов К.Г. Программируем на языке ассемблера IBM PC. Изд. 2-е.– Обнинск: Издательство «Принтер», 1997.
В. Юров. 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 |
