- •Лабораторная работа № 1.
- •Функция 0ен
- •Функция 1ан
- •Функция 2fh
- •Функция 36н Определяет параметры диска
- •Функция 39н
- •Функция 3ан Удаляет каталог с диска
- •Функция 3вн Меняет текущий каталог на заданный
- •Функция 3сн Создаёт хендл (новый файл) на диске
- •Функция 3dн Открывает хендл (открывает файл) на диске
- •Функция 3ен
- •Функция 3fh
- •Функция 40н
- •Функция 41н
- •Функция 42н
- •Функция 43h
- •Функция 47н
- •Функция 4ен
- •Функция 4fh
- •Функция 56н
- •Функция 57н
- •Функция 5ан
- •Прерывание 25н
- •Прерывание 26н
- •Пример выполнения работы Создать новую директорию new_dir на диске а:, сделать ее текущей, записать туда файл newfile.Txt и в него записать сообщение - "Это вновь созданный файл".
- •Порядок выполнения работы
- •Вопросы по теме работы
- •Лабораторная работа № 2
- •Функция 00н
- •Функция 01н
- •Функция 02н
- •Функция 03н
- •Функция 04н
- •Флаг переноса установлен
- •Функция 05н
- •Пример выполнения работы
- •Порядок выполнения работы
- •Варианты заданий. Не использовать функции dos !!!.
- •Вопросы по теме работы.
- •Приложение а. Функция disk_status
- •Приложение в. Параметры 360к дискеты.
- •Лабораторная работа № 3
- •Основные сведения
- •Функция Назначение
- •Функция 00н
- •Функция 01h
- •Функция 02h
- •Функция 03h
- •Пример выполнение работы
- •Контрольные вопросы
- •Лабораторная работа № 4
- •Основные сведения
- •Функция 00h
- •Функция 01h
- •Функция 02h
- •Система команд матричного принтера
- •Система команд принтера фирмы Epson.
- •Команды форматирования текста
- •Команды печати графических изображений.
- •Пример выполнения работы.
- •Порядок выполнения работы
- •Варианты заданий.
- •Контрольные вопросы
- •Лабораторная работа № 5 Таймер и генерация звука.
- •Форматы управляющих команд таймера.
- •Использование каналов в ibm pc.
- •Генерация звука.
- •Частоты нот для второй октавы
- •Варианты заданий.
- •Вопросы по теме работы.
- •Лабораторная работа № 6 Работа с драйвером мыши.
- •Обращение к драйверу мыши из ассемблера
- •Функции драйвера мыши.
- •Функция 00h
- •Показать курсор
- •Функция 06н
- •Функция 07h
- •Функция 08h
- •Функция 09h
- •Функция 0Ah
- •Функция 0Bh
- •Функция 0Сh
- •Функция 0Dh
- •Функция 0Eh
- •Функция 0Fh
- •Функция 10h
- •Функция 13h
- •Функция 15h
- •Функция 16h
- •Функция 17h
- •Функция 18h
- •Программирование с использованием драйвера мыши.
- •Пример выполнения работы.
Контрольные вопросы
1. В каких единицах измеряется скорость работы стыка?
2. Какие параметры устанавливаются при инициализации последовательного порта?
3. Какие функции работы с RS-232 предоставляет BIOS?
4. Как осуществить связь по стыку с помощью Norton Commander?
5. Как установить скорость передачи последовательного порта 9600 бод?
Лабораторная работа № 4
Программирование параллельного порта PC функциями BIOS, изучение команд матричного печатающего устройства.
Основные сведения
Параллельный программируемый порт Устройство печати IBM PC-подобных компьютеров обычно подключается к параллельному интерфейсу. Для подключения используется стандартный разъем Centronix, имеющий 36 контактных выходов (отечественный аналог ИРПР-М). Для управления работой принтера используется специализированный адаптер принтера, который для DOS имеет наименование LPT1 или PRN. К ПЭВМ могут быть подключены два дополнительных адаптера для управления принтерами - LPT2 и LPT3. Описание функций BIOS для работы с печатающим устройством. Для управления печатающим устройством имеются следующие функции BIOS ( Int 17H ):
Функция 00h
Вывод символа на печать.
*Вход:
АН = 00h
AL = печатаемый символ
DX = номер принтера (0 -LPT1, 1 -LPT2 и т. д.)
*Выход:
АН = состояние принтера
7 6 5 4 3 2 1 0
* Примечание.
Выводит символ из AL на заданный принтер и возвращает состояние принтера.
Функция 01h
Инициализация принтера.
*Вход:
АН = 01h
DX =номер принтера (0-LPT1,1-LPT2 и т. д.)
*Выход:
АН = состояние принтера (см. функцию 00h)
* Примечание.
Инициализирует заданный принтер и возвращает его состояние. Инициализация состоит в выводе байтов 08h и 0Ch в регистр управления принтером. При этом происходит начальная установка всех параметров печатающего устройства.
Функция 02h
Опрос состояния принтера.
*Вход:
АН = 02h
DX = номер принтера (0 - LPT1, 1 - LPT2 и т. д.)
*Выход:
АН = состояние принтера (см. функцию 00h)
*Примечание.
Возвращает состояние заданного принтера.
Система команд матричного принтера
Несмотря на простоту управления, принтер представляет собой достаточно сложное устройство, имеющее свой микропроцессор, ПЗУ и ОЗУ. Микропроцессор используется для обработки управляющих последовательностей и управления печатью. ПЗУ содержит описание рисунков символов в зависимости от их кода и выбранной таблицы и программы на языке используемого микропроцессора. ОЗУ используется для временного хранения введенных данных и спроектированных пользователем символов. Принтер обрабатывает ряд спецсимволов (таких, как звонок, забой, горизонтальная и вертикальная табуляция).
Обычно команды начинаются с символа ESC (шестнадцатиричный код 1Bh) и имеют длину от двух байт и более (существуют командные последовательности, включающие по несколько килобайт информации, например команды загрузки спроектированных пользователем шрифтов). Спецсимволы и байты команд передаются принтеру так же, как и обычные символы, предназначенные для печати, описанным выше способом. Подобный способ управления удобен для программного изменения режимов работы устройства.
Ряд характеристик и режимов работы может выбираться как программно, так и аппаратно с использованием кнопок и клавиш на лицевой панели и DIP-переключателей. Существуют характеристики, изменить которые можно только аппаратно
Текстовые режимы печати.
Принтер формирует символ с помощью вертикальной линейки из 9 иголок, которая перемещаясь вдоль каретки, образует вертикальные колонки. Одновременно можно использовать только 8 иголок: 8 верхних или 8 нижних. Символ размещается в сетке 8 строк * 11 столбцов. Точки в изображении символа не должны находиться в соседних клетках сетки.
1 2 3 4 5 6 7 8 9 10 11
Знакогенераторы, хранящие вид каждого символа, входящего в шрифт, хранятся в ПЗУ принтера, но могут пересылаться в ОЗУ. Хранение знакогенератора в ОЗУ позволяет переопределять изображение некоторых символов засылкой в ОЗУ сетки символа, определяемого пользователем.
Команда ESC " % " n определяет положение знакогенератора:
n=0 - используется знакогенератор из ПЗУ;
n=l - используется знакогенератор из ОЗУ.
Для переопределения символа используется команда ESC "&" s n m {a d1..d11} .. - определить загружаемые символы, s - номер загружаемого знакогенера (всегда 0);
n - ASCII код первого загружаемого символа;
m - ASCII код последнего загружаемого символа;
а - атрибут описываемого символа, он определяет ширину символа и его положение в сетке, старший бит атрибута а задает положение в сетке, если он равен 1, то используется 8 верхних иголок, если 0 - 8 нижних, младшие 7 битов задают ширину и представляют собой число, определяемое по следующей схеме:
- взять в качестве начального значения число 8;
- вычесть из начального значения число, равное числу пустых столбцов справа;
- прибавить к результату (число пустых столбцов слева) * 16;
- прибавить 128, если используются 8 верхних иголок;
полученное число и есть атрибут а;
d1…d11 - данные, описывающие символ по столбцам, каждая строка имеет вес 1, 2, 4…128, если в j-м столбце, в i-й строке стоит точка, то к dj прибавляется 2 .
Графический режим печати.
Графическое изображение печатается построчно 8 точек по вертикали в ряд. После каждой строки осуществляется перевод каретки. Для печати одной строки в графическом режиме используется команда
ESC "*" m n1 n2 dl..dk
m - выбранный режим графики,
nl, n2 определяют длину печатаемой графической строки в точках. Для определения длины строки можно использовать следующую схему:
- делим длину строки на 256, целая часть есть параметр n2;
- остаток от деления используем в качестве nl. Команда всегда должна содержать два параметра, даже если п2=0.
d1…dk - байты графических данных. Каждый байт определяет один восьмиточечный столбец, если в 1-й строке стоит точка, то соответствующий бит в байте равен 1.
Например, * 7
0 6
0 5
* 4
* 3
0 2
* 1
* 0
Этому столбцу соответствует байт 10011011. Число байтов графических данных всегда должно быть равно n1*256+n2.
7 6 5 4 3 2 1 0