Лабораторные работы по системному ПО

Страница: 5/6

ES: ВХ- адрес буфера ввода- вывода в области данных.

Для указания необходимой дисковой операции необходимо перед INT 13H загрузить в регистр АН соответствующий код.

АН=00: сброс системы контроллера дисковода

АН=01: определить состояние дисковода

АН=02: чтение секторов

АН=03: запись секторов

АН=04: верификация секторов

АН=05: форматирование дорожек

Содержание задания

1. Напишите программу, которая создает дисковый файл, содержащий записи из трех элементов: номера товара (пять символов), наименования товара (12 символов) и стоимости единицы товара (одно слово). Ввод этих значений должен осуществляться с клавиатуры.

2. Напишите программу, которая выводит на экран файл, созданный в вопросе

3. Напишите программу, выполняющую одно блочное чтение файла с приведенными ниже данными и выводящую каждую запись на экран:

Номер Цена Наименование

023 00315 Ассемблеры

024 00430 Компоновщики

027 00525 Компиляторы

049 00920 Компрессоры

114 11250 Редакторы

232 05635 Контроллеры

999 00000

4. Измените программу из вопроса 3 так, чтобы цены записывались на диск в двоичном формате.

5. Напишите команды для BIOS INT 13H, выполняющие чтение одного сектора в область памяти INDISK, с дисковода А, головки 0, дорожки 6 и сектора 3.

6. Напишите команды для BIOS INT 13H, выполняющие запись трех секторов из области памяти OUTDISK на дисковод В, головку 0, дорожку 8 и сектор 1.

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

Изучение управления печатью

Цель работы: изучить возможность программ на языке Ассемблер для вывода информации на печатающее устройство

Общие сведения.

Вывод на принтер несколько проще, чем операции с экраном и диском. Для печати существует несколько операций, выполняющихся через DOS INT 2IH и INT 17H. Команды, посылаемые на принтер, включают коды "Прогон страницы", "Перевод строки" и "Возврат каретки".

Принтеры классифицируются по качеству печати. Матричный принтер формирует символы в виде матрицы точек и обеспечивает нормальный, узкий и широкий форматы символов. Более совершенные матричные принтеры обеспечивают точечную графику, наклонный шрифт, жирную печать и двойную плотность, а также могут печатать графические символы, напри -мер, символы игральных карт. Высококачественные печатающие устройства ограничены набором символов на сменной "ромашке" или барабане, но обеспечивают высокое качество печати и большое разнообразие шрифтов. Лазерные принтеры обладают преимуществами как для матричной графики, так и для качественной печати текстов.

Стандартные символы управления печатью включают следующие:

08 - возврат на шаг

09 - горизонтальная табуляция

0А - перевод строки

0B - вертикальная табуляция

0С - прогон страницы

0D - возврат каретки

Для печати в базовой версии DOS необходимо установить в регистре АН код функции 05, а в регистре DL - распечатываемый символ, а затем выполнить команду INT 2IH следующим образом

MOV АН, 05 ; запрос функции печати

MOV DL, char ; распечатываемый символ

INT 2IH ; вызов DOS

С помощью этих команд можно передавать на принтер управляющие символы. Однако, печать обычно предполагает вывод полной или частичной строки текста и пошаговую обработку области данных, отформатированной по строкам. Ниже показана программа печати полной строки. Сначала в регистр SI загружается начальный адрес области HEADG, а в регистр СХ - длина этой области. Цикл, начинающийся по метке Р20, выделяет очередной символ из области HEADG и посылает его на принтер. Так как первый символ области HEADG - "возврат каретки", а последние два - "перевод строки", то заголовок печатается в начале новой страницы и после него следует двойной интервал:

HEADG DB OCH, INDUSTRIAL BICycle Mfrs’, ODH, OAH, OАМ LEA SI, HEADG; установка адреса и

MOV CX, 27 ; длины заголовка

Р20:

MOV АН,05 ; запрос функции печати

MOV DL, [SI] ; символ из заголовка

INT 21H ; вызов DOS

INT SI ; следующий символ

LOOP P20

Пока принтер не включен, DOS выдает сообщения " out of paper". После включения питания программа начинает работать нормально. Для прекращения печати можно нажать клавиши CTRL/BREAK.

Прерывание BIOS INT 17H обеспечивает три различные операции, определенные содержимым регистра АН:

АН=0: Данная операция выполняет печать одного символа на три принтера по номерам 0,1 и 2 (стандартное значение - 0)

MOV АН, 00 ; запрос функции печати

MOV AL, CHAR ; символ, выводимый на печать

MOV DX, 00 ; выбор принтера о

INT 17H ; вызов BIOS

Если операция не может распечатать символ, то в регистре АН устанавливается значение 01.

АН=1: Инициализация порта печатающего устройства:

MOV АН, 01 ; запрос на инициализации порта

MOV DX, 00 ;выбор порта о

INT 17H ; вызов BIOS

Данная операция посылает на принтер символ "прогон страницы", поэтому ее можно использовать для установки положения "начало страницы". Большинство принтеров выполняют данную установку автоматически при включении.

Реферат опубликован: 17/02/2008