Программирование ввода-вывода 1 часть и 2 часть.
Цель работы: Изучить работу процессора при организации прерываний INT 10 , INT21 и INT 20.
Задание 1 часть:
1.Программа для очистки указанной области экрана, использовать подфункции прерывания INT 10.
1) Составить ассемблерную программу для очистки экрана в заданных в приложении 1 пределах и при заданных условиях.
2) Ввести программу в сегмент кодов с начальным для него смещением 100h.
3) Выполнить программу.
2. Программа установки позиции курсора, использовать подфункции прерывания INT 10.
1) Составить ассемблерную программу для установки курсора по заданным в приложение 1 координатам.
2) Ввести программу в сегмент кодов с адресом, продвинутым относительно последней команды предыдущей программы.
3) Выполнить программу.
3. Программа установки размера курсора, использовать подфункции прерывания INT 10.
1) Составить ассемблерную программу для увеличения размера курсора по заданным в приложение 1 значениям.
2) Ввести программу в сегмент кодов с адресом, продвинутым относительно последней команды предыдущей программы.
3) Выполнить программу.
4. Программа вывода символов с атрибутом в текущую позицию курсора средствами BIOS, использовать подфункции прерывания INT 10.
1) Составить ассемблерную программу для вывода символов из приложения 1 заданным цветом на указанном фоне . ASCII-код символа взять из приложения 4 .
2) Ввести программу в сегмент кодов с адресом , продвинутым относительно последней команды предыдущей программы .
3) Выполнить программу.
Контрольные вопросы:
1. Как работает команда прерывания?
2. Чем отличаются прерывания INT 21 и INT 10?
3. Что определяет значение , хранящееся в регистре АН?
4. Зачем нужна команда DEBUG - G ?
Содержание отчета:
1. Ответы на контрольные вопросы.
2. Распечатка результатов пошагового выполнения программ из заданий 1, 2.3.4.
Задание 2 часть:
1. Программа для вывода сообщения из памяти, использующая INT 21 прерывание, передающее управление в DOS.
1) Введите в сегмент данных по указанному адресу сообщение из приложения 2 .
2) Просмотреть содержимое сегмента данных.
3) Составить ассемблерную программу для вывода этого сообщения.
4) Ввести программу в сегмент кодов со смещением 120h.
5) Выполнить программу.
2. Программа ввода данных с клавиатуры, использующая INT 21 прерывание, передающее управление в DOS.
1) Составить ассемблерную программу для ввода своего имени с клавиатуры (программа должна заканчиваться директивой DB '_' , на которую и будет ссылка, определяющая область ввода).
2) Ввести программу в сегмент кодов с адресом, продвинутым относительно последней команды предыдущей программы.
3) Выполнить программу.
4) Просмотреть после этого сегмент данных.
3. Программа вывода данных на экран, использующая INT 21 прерывание, передающее управление в DOS.
1) Составить ассемблерную программу для вывода своего имени на экран, используя его длину и директиву DB .
2) Ввести, программу в сегмент кодов с адресом, продвинутым относительно последней команды предыдущей программы.
3) Выполнить программу.
Контрольные вопросы:
1. Зачем нужен знак $ в конце строки?
2. Что такое вектор прерывания?
3. Где располагается таблица векторов прерываний?
4. Что означает флаг IF?
Содержание отчета:
3. Ответы на контрольные вопросы.
4. Распечатка результатов пошагового выполнения программ из заданий 1, 2,3.
Краткие теоретические сведения по прерываниям:
INT 10h.
подфункция | назначение |
00h | Установка видеорежима 03h текстовый 80х25 10h графический 640х350 04h графический 320х200 12h графический 640х480 13h графический 320х200 |
01h | Установка конфигурации Курсора |
подфункция | назначение |
02h | Установка позиции курсора |
03h | Получение позиции и размера курсора |
05h | Установка видеостраницы |
06h/07h | Инициализация или прокрутка окна вверх(вниз) |
08h | Чтение символа и атрибута в позиции курсора |
0Ah | Запись символа и атрибута В позицию курсора |
0Ch | Запись пиксела |
ODh | Чтение пиксела |
0Fh | Получение видеорежима |
10h(подфункция 00h) | Настройка цветового регистра |
10h(подфункция 01h) | Установка цвета края экрана |
10h(подфункция 02h) | Настройка цветовой палитры и цветового края экрана |
10h(подфункция 03h) | Переключение бита Мерцание/ яркость |
10h(подфункция 07h) | Чтение цветового регистра |
10h(подфункция 09h) | Чтение цветовой палитры и цвета края экрана |
10h(подфункция 11h) | Задание спецификатора блока знакогенератора |
11h(подфункция 10h) | Загрузка шрифта пользователя |
11h(подфункция 11h) | Загрузка шрифта ПЗУ 8х14 |
INT 21h.
подфункция | назначение |
01h | Ввод символа с эхом |
02h | Вывод символа |
05h | Вывод символа на принтер |
06h | Прямой ввод вывод |
09h | Вывод строки символов |
0Ah | Буферизованный ввод с клавиатуры |
0Bh | Проверка состояния ввода |
0Eh | Выбор диска |
3Dh | Открытие файла |
3Eh | Закрытие файла |
3Fh | Чтение из файла или устройства |
40h | Запись в файл или в устройство |
41h | Удаление файла |
42h | Установка указателя в файле |
Практическая работа № 6