Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи Степаненко.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

3. Засоби bios для роботи з принтером

У складі BIOS для роботи з принтером є три функції переривання 17h.

Функція 00h призначена для друку одного символу.

Вхід: AH = 00h

67

DX – номер порту: 01h – LPT1, 02h – LPT2, 03h – LPT3

AL – ASCII – код символу для друку

Вихід: AH – стан принтера (таблиця 3).

Викликавши функцію 00h, програма повинна перевірити біти байта стану та впевнитись в тому, що вивід бата відбувся без помилок. Формат байта стану приведено в таблиці 3 і він відрізняється лише тим, що наявність одиниці в молодшому біті свідчить про надто великий тайм-аут.

Функція 01h призначена для ініціалізації принтера.

Вхід: AH = 01h

DX – номер порту: 01h – LPT1, 02h – LPT2, 03h – LPT3

AL – байт керування режимом (таблиця 2)

Вихід: AH – стан принтера (таблиця 3).

Ця функція здійснює апаратне скидання принтера.

Слово стану принтера можн отримати за допомогою функції 02h:

Вхід: AH = 02h

DX – номер порту: 01h – LPT1, 02h – LPT2, 03h – LPT3

Вихід: AH – стан принтера (таблиця 3).

Цю функцію зручно використовувати перед початком друку для визначення готовності принтера до роботи.

Методичні вказівки

В даній роботі пропонується дослідити і протестувати програму, яка працює з паралельним портом.

Для виконання роботи необхідні грунтовні знання архітектури та принципів функціонування паралельного інтерфейса принтера, а також знання призначення

та способів використання функцій 00h, 01h, 02h переривання 17h BIOS.

Література

5. Гук м. Аппаратные средства ibm pc. Энциклопедия. – сПб.: “Издательс-тво

Питер”, 1999. – 816 с.

6. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник. Харків: ТОВ. “Компанія СМІТ”, 2003. – 512 с.

7. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: ДМК, 1999. – 640 с.

8. Фролов А. В., Фролов Г. В. Аппаратное обеспечение персонального ком-

пьютера. – М.: ДИАЛОГ МИФИ, 1997. – 304 с.

Завдання

1. Дослідити програму print, яка формує масив символів, що вводяться з клавіатури, аналізує стан принтера, передає послідовність символів у буфер принтера для їх роздрукування.

2. Нарисувати схему алгоритму програми.

68

3. На вінчестері створити каталог PRINT.

4. За допомогою редактора середовища програмування Borland C++ 3.1

створити символьний файл тексту програми та записати його в каталог PRINT.

5. Виконати налагодження програми та запустити її на виконання кілька разів з рзними кількостями символів, що виводяться.

6. Зробити висновки.

7. Написати аналогічну програму, але тільки з використанням функцій

BIOS.

8. Повторити для нової програми пункти 2 – 6.

9. Розробити програму ідентифікації та виводу на екран усіх діагностичних повідомлень про стан принтера.

10. Виконати пункти 2 – 6 для розробленої програми.

Тексти програм

// print

#include <dos.h>

#include <alloc.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

extern int myasm20 (unsigned char*);

void main (void)

{

unsigned char *str;

unsigned char PrintStatus;

char c;

// виділення пам‟яті для рядка

str = malloc (100);

puts (“Введіть рядок символів: ”);

gets (str);

Rep:

PrintStatus = inp (0x379);

if ((PrintStatus & 0x08) == 0) {

printf (“Помилка принтера\n”);

printf (“Завершити програму (y/n)?”);

c = getch ();

if ((c == „y‟) || (c == „n‟)) exit (0);

goto Rep;

}

myasm20 (str);

// передача на принтер символу переводу рядка

fprintf (stdprn, “\n”);

69

}

// Модуль виводу мовою асемблера

.MODEL SMALL

.CODE

PUBLIC _myasm20

_myasm20 PROC NEAR

PUSH BP

MOV BP, SP

MOV BX, [BP+4]

// в регістр BX передається адреса рядка із стека

POP BP

SUB AX, AX

// в регістр ES заноситься нуль

MOV ES, AX

// в регістр DX заноситься номер порту вихідного регістра

MOV DX, ES:[0408h] NEXTBYTE:

// в регістр AL передається черговий символ (адреса – в BX)

MOV AL, [BX]

// якщо цей символ – нуль, перейти на мітку EXIT CMP AL, 0

JE EXIT

// символ пересилається в порт

OUT DX, AL OUT DX, AL

OUT DX, AL

// в регістрі DX номер порту регістра керування

INC DX

INC DX

// в регістрі AL код для стробуючого сигналу

MOV AL, 0Dh

// видати в порт стробуючий сигнал

OUT DX, AL

// затримка

NOP

NOP NOP

// в регістрі AL код відміни стробуючого сигналу

MOV AL, 0Ch

// відмініти стробуючий сигнал

OUT DX, AL

// в регістрі DX номер порту регістра статусу

DEC DX

WR:

// читання стану регістра статусу

IN AL, DX

// очікуємо стан готовності принтера

TEST

AL,

80h

JZ

WR

70

// вибір наступного символу в рядку

INC BX DEC DX

JMP NEXTBYTE

EXIT:

// повернення в модуль main () RET

_myasm20 ENDP

END

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Призначення та характеристики інтерфейса Centronics.

2. Назвіть призначення сигналів, за допомогою яких PC обмнюється з прин-

тером.

3. Назвіть призначення портів інтерфейса Centronics.

4. Які програмні засоби BIOS використовуються для роботи з принтером?

71