Регистр

Энергозависимая электронная память для временного хранения команд и данных в процессорах.

Например, процессор i486 имеет восемь 32-битовых регистров общего назначения для хранения данных, адресов и пр.

 

Существует два способа передачи машинных слов по каналам данных параллельный и последовательный. При параллельной передаче одновременно пересылаются все биты слова, а при последовательной - биты слова пересылаются поочередно или по битно.

Рабочее расстояние для шины параллельной передачи из-за помех ограничивается длиной 1-2м.

Последовательная передача данных возможна на большие расстояния и может осуществляться двумя режимам синхронным и асинхронным.

При синхронной последовательной передаче каждый передаваемый бит сопровождается импульсом синхронизации. Между ПЭВМ и ВУ должны быть протянуты минимум три провода: импульса синхронизации; битов данных и общий.

Если ПЭВМ и ВУ разнесены на несколько метров, то каждый сигнал надо пересылать либо по экранированному кабелю, либо по витой паре проводов, один из которых заземлен или передает сигнал инверсный основному. Синхронная последовательная передача начинается с пересылки одного или двух символов синхронизации. Получив символ синхронизации, приемник начинает пересылку данных и их преобразование в параллельный формат. Из-за дорогих линий связи синхронизации применяются редко.

Асинхронная последовательная передача данных характеризуется отсутствием синхроимпульсов. При асинхронной передаче перед обменом данных с ВУ МП проверяет готовность ВУ к обмену. На рисунке 3 приведена блок-схема обмена данных при асинхронной последовательной передаче.

Стандартный формат, асинхронной последовательной передачи, данных содержит «n», пересылаемых битов информации (для символов n=7 или 8) и дополнительные биты: стартовый, контроля четности ( или нечетности) и 1 или 2 стоповых бита Длительность стартового бита равна времени передачи одного бита.

Если бит контроля четности равен 1 стоповый бит должен поддерживаться в течение промежутка времени равного двум битам. Новый стартовый бит может быть начат в любой момент времени после окончания стопового бита ( рис. 4).

 
 


 

На рис. 5 приведен пример передачи символа в кодировке ASCII

Коды: десятичный – 67; HEX- 43; двоичный – 01000011

 


 

 

 


В линиях последовательной передачи данных ПЭВМ и ВУ должны быть согласованы по всем параметрам формата. Это достигается генераторами синхроимпульсов, имеющих одинаковую частоту и считыванием битов в середине их длительности.

Стоповый бит предоставляет время для записи принятого символа в буфер и обеспечивает возможность выявления ошибки кадра.


ПОРТЫ ВВОДА-ВЫВОДА ПЭВМ ТИПА IBM PC

 

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

 

 

Рис. 1 Циклы обмена через порт ввода-вывода

Для передачи данных от МП в порт используется команда OUT, команда IN применяется для считывания данных из порта.

Порты с номерами 0-FFh, используются только системной платой. Номера 100h- 3FFh используются различными адаптерами.

Цикл считывания занимает пять тактов. В цикле считывания сигнал I/О CHRDY поддерживается в активном состоянии, а сигналы MEMR, MEMW и IOW в неактивном состоянии.

В цикле записи в порт сигнал I/О CHRDY поддерживается в активном состоянии, а сигналы MEMR, MEMW и IOR в неактивном.

 


ОБМЕН ИНФОРМАЦИЕЙ ЧЕРЕЗ СТАНДАРТНЫЕ ПОСЛЕДОВАТЕЛЬНЫЕ ИНТЕРФЕЙСЫ

 

COM. - имя последовательного порта. Дисковая операционная система (DOS) поддерживает четыре последовательных порта: COM1, COM2, COM3 и COM4, но обычные компьютеры физически имеют только два порта. Как правило эти порты попарно занимают одни системные ресурсы, поэтому если к портам из такой пары подсоединены два устройства, то использвать их одновременно не удастся.

 

 

Стандартные последовательные интерфейсы должны выполнять следующие функции:

1. Различать сигналы адреса между оперативной памятью и каналом ввода/вывода.

2. По команде «ВВОД» («ЧТЕНИЕ»)* помещать на системную шину входные данные или информацию о состоянии внешнего устройства для последующей передачи в МП, а по команде «ВЫВОД» («ЗАПИСЬ»)* принимать от МП через системную шину данные или управляющую информацию.

3. Вводить или выводить данные, преобразуя их в последовательный код заданного формата или, наоборот, в параллельный, в зависимости от направления передачи от ПЭВМ к ВУ или от ВУ к ПЭВМ.

4. Вырабатывать сигнал готовности при командах «ВЫВОД» и «ВВОД».

5. Вырабатывать и передавать на входные линии контроллеров запросы на прерывание

6. Воспринимать сигнал сброса со стороны МП и устанавливаться в исходное состояние.

* В английской терминологии READ и WRITE соответственно

 

Типовая структура последовательного канала приведена на рис. 2

Рис. 2 Регистровая структура последовательного канала

 

Последовательный канал используется для передачи информации по различным линиям связи, включая телефонные. Связь с ВУ может быть дуплексной или полудуплексной. При дуплексной связи для входных и выходных сигналов используются различные линии, а при полудуплексной для ввода и вывода используется одна линия связи в режиме разделения времени.

Последовательный интерфейс выполняется чаще всего по стандарту RS-232. Главным элементом последовательного интерфейса являются микросхемы 8250 и 16450 UART (Universal Asynchron Receiver Transmitter). Контроллер на базе чипа 8250 обеспечивает максимальную скорость передачи данных 9600 бодд, а чип 16450 – 115200 бод /8/.

Последовательная связь осуществляется побитно, при этом возможен обмен данными в двух направлениях. Уровень напряжения последовательного интерфейса изменяется в пределах от –12 до +12В, что повышает помехоустойчивость и обеспечивает передачу данных без потерь до 50м.

Стандарт RS-232 был принят в рамках ассоциации производителей электроники (EIA) и за время своего существования претерпел три модернизации (RS-232A, RS-232B и RS-232C соответственно) /9/.

Контролер RS-232С является программируемым адаптером и обеспечивает асинхронную передачу по линии связи. Контроллер позволяет произвести программную настройку на скорость передачи/приема в диапазоне от 50 до 9600 бит/с. и выбрать способ передачи в виде 5, 6, 7 или 8-ми битовых символов с 1, 1,5 или 2 стопбитами. Дополнительно адаптер позволяет выбрать контроль передаваемых символов: по четности, по нечетности и без контроля.

Базовые адреса последовательных портов хранятся в начале области переменных системы BIOS. Это двухбайтовые слова – адрес канала COM 1 храниться по адресу 0:0400 ПЗУ; адрес второго канала COM 2 – по адресу 0:402; адрес COM 3 – по адресу 0:404; адрес COM 4 – по адресу 0:406 ПЗУ.

Базовый адрес порта может быть определен путем чтения переменной BIOS из ПЗУ. Адрес любого другого регистра этого порта может быть определен добавлением нужного смещения. Для ПЭВМ типа IBM PC порт COM 1 имеет базовый адрес 3F8h, а COM 2 - 2F8h.

 

Таблица 1 Адреса и прерывания последовательных портов

Логическое имя последовательного порта Диапазон адресов Прерывание
COM 1 3F8h – 3FFh IRQ4
COM 2 2F8h – 2FFh IRQ3
COM 3 3E8h – 3EFh IRQ10 (IRQ2)
COM 4 2E8h – 2EFh IRQ11 (IRQ5)

 

Адаптер последовательного порта содержит семь программно-управляемых восьмиразрядных регистров, За каждым регистром порта закреплена определенная функция (табл. ).

Таблица 2 Функции регистров порта COM1*

Адрес регистра Значение 7-го разряда регистра 3FBh Режим обмена данными Выполняемые функции регистра
3F8h Запись / Чтение При записи (Write) является регистром выходного слова, а при чтении (Read) выполняет функцию входного слова с последующей передачей на системную шину.
3F8h Запись Младший байт кода скорости обмена данными.
3F9h Запись Старший байт кода скорости обмена данными
3FAh Чтение Задание типа прерывания
2FBh ** Запись / Чтение Управление обменом данных
3FCh ** Запись Управление работой модема
3FDh ** Чтение Статус обмена данными
3FEh ** Чтение Статус модема

 

* Функции других портов аналогичные. ** Значение седьмого разряда регистра 3FBh не имеет значения

Перед передачей данных, необходимо задать параметры работы порта, т.е. выполнить инициализацию последовательного канала.

1. В регистре управления обменом (адрес 3FBh) в седьмом разряде устанавливается единица.

2. Задается скорость передачи данных:

Скорость, бод Код
Десятичный Шестнадцатеричный Двоичный
410h
300h
180h
C0 h
60h
30 h
18 h
Ch

 

Старший байт кода, определяющего скорость обмена данными, посылается в регистр порта 3F9h(2F9h), а младший в - 3F8h (2F8h) (в скобках адрес порта COM2).

3. В соответствии с требуемыми режимами управления устанавливаются биты регистра управления обменом 3FBh(2FBh).

3.1. Разряды с номерами 0, 1 определяют длину передаваемых бит информации: 00 – 5 бит; 01 – 6 бит; 10 – 7 бит; 11 – 8 бит.

3.2. Разряд с номером 2 определяет число стоп – битов: 0 – 1 бит; 1 – 2 бита.

3.3. Разряды 4 и 3 определяют способ контроля данных: Х0 – отсутствие проверки; X – любое значение; 01 – проверка на нечетность; 11- проверка на четность.

3.4. Единица в 5-ом разряде определяет способ контроля четности: значение бита четности равно 0, если выполняется проверка на четность и значение бита четности равно 1, если выполняется проверка на нечетность.

3.5. Разряд с номером 6 определяет установку перерыва в передаче данных.

3.6. Разряд с номером 7 производит изменение адреса порта.

4. Если при обмене прерывание не используют, то регистр разрешения прерывания 3F9h (2F9h) должен быть обнулен.

5. Если используется режим прерывания, то производится установка разрядов разрешения прерывания регистра 3F9h (2F9h) и предварительно устанавливается значение 0 в седьмом разряде управления обменом 3FBh:

Номер разряда регистра 3F9h Значение Описание функции
Активизация прерывания при обмене
Вызов прерывания при свободном регистре выходного слова
Вызов прерывания при изменении в регистре статуса
3-7   Не используются в режиме прерывания

 

В процессе реализации прерывания используется регистр 3FAh (2FAh) для определения типа прерывания и их управления:

Номер разряда регистра 3FAh Значение Описание функции
Наличие прерывания.
1 2 Изменение в регистре статуса модема.
1 2 Регистр выходного слова для передачи свободен.
1 2 Данные для приема находятся в регистре входного слова.
1 2 Ошибка или перерыв в передаче.

 

Анализ состояния разрядов регистра 3FAh используется для составления различных вариантов обработки прерываний.

6. Задаются параметры регистров управления модемом, если для передачи данных используются телефонные сети.

Ниже приведен фрагмент программы инициализации последовательного порта со следующими параметрами:

Скорость обмена 1200 бод; длина передаваемого слова 8 бит; контроль на четность передаваемых бит; прерывания не используются; число стоповых бит – 2; связь с ВУ не модемная. Программа написана на языке Pascal с использованием ассемблерной вставки.

(*Программа инициализации порта программы*)

program InitSerialPort;

Uses Crt;

(*Описание переменных*)

Var

j,n:integer;

PrtName : string;

Portadrs: integer;

AdrPort :Word;

const

(*Логические адреса портов и их базовые адреса*)

Pname: array[1..4] of String=('COM1','COM2','COM3','COM4');

Padrs: array[1..4] of Integer=($3F8, $2F8, $3E8, $2E8);

begin

ClrScr;

(*Определение базового адреса порта*)

Writeln('Введите имя порта');

Readln (PrtName);

n:=4;

For j:=1 to n Do

Begin

If Prtname = Pname[j]

then Portadrs:=Padrs[j];

End;

writeln(Portadrs);

(*Ассемблерная вставкв*)

(*Инициализация порта*)

Asm

Sub AX, AX;

Mov DX, AX;

Mov DX, Portadrs;

Mov AL, 80h;

Add DX, 3h;

Out DX, AL;

Sub DX, 3h;

Mov AX, 60h

Out DX, AL;

Inc DX;

Mov AL, AH;

Out DX, AL;

Add DX, 2h;

Mov AL, 1Fh;

Out DX, AL;

end;

End.

 

При обмене данными анализируется регистр статуса 3FDh. Если в разрядах регистра записаны единицы то для разряда: 0 – получены данные; 1 – данные перезаписаны; 2 – ошибка при контроле на четность; 3 – ошибка синхронизации; 4 – объект запрашивает конец передачи; 5 – регистр выходного слова для передачи свободен; 6 – регистр сдвига данных пуст; 7 – ВУ не связано с ПЭВМ.

Рассмотрим работу последовательного канала COM1 на передачу и прием по прерываниям. Допустим, адаптер уже инициализирован и 7-й разряд регистра 3FBh находится в состоянии 0.

Программа передачи данных должна выполнять следующее:

1. Получить из порта 3FDh байт статуса.

2. Проверить байт статуса на наличие ошибок (ошибки отражаются в разрядах 1 - 4) и, если ошибки есть, выполнить обработку ошибок.

3. Проверить 5-й разряд регистра 3FDh на возможность передачи данных.

4. Если данные могут быть переданы, перейти к пункту 5, если нет (0 в бите 5) – повторить пункты 1-3.

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

 

После передачи слова в выходной регистр адаптер преобразует его в последовательный код.

Работа на прием осуществляется аналогично, но анализируется нулевой разряд регистра 3FDh.

Программа приема данных после инициализации адаптера и установления связи должна выполнять следующее действия:

1. Получить из порта 3FDh байт статуса.

2. Проверить байт статуса на наличие ошибок и обработать их

3. Проверить 0-й разряд регистра статуса на возможность приема данных.

4. Если данные могут быть приняты, переходить к пункту 5, если нет – повторять пункт 1-3

5. Читать данные из порта 3F8h и передать их в приложение.

 

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

Процедура обработки прерываний определяется путем анализа содержимого регистра 3FAh (2FAh). Обслуживание прерываний выполняется со следующими приоритетами:

Приоритет Наименование Условие
Ошибка или прерывание Сброс в результате чтения регистра статуса
Данные считаны Сброс в результате чтения регистра входного слова
Свободен регистр выходного слова Сброс в результате записи данных в регистр выходного слова
Изменен статус модема Сброс в результате чтения регистра статуса модема

 

Для определения вектора прерывания необходимо:

1. Установить точку входа в программу обработки прерывания, например, для COM1 в регистры DS:DX заносится «сегмент: смещение» точки входа (адрес точки), а в AL и AH записываются значения шестнадцатеричных чисел Bh и 25h соответственно и вызывается прерывание 21h.

2. Установить необходимые биты в разрядах разрешения прерываний (для COM1 3F9h)

Программа обработки прерывания обычно включает:

- буфер для символов;

- средства анализа состояний адаптера;

- средства приема и передачи данных;

- средства проверки возникновения нескольких прерываний по различным причинам.

В конце программы должен стоять код завершения аппаратного прерывания: Mov AL, 20h и OUT 20h, AL.

Любое аппаратное прерывание может быть программно замаскировано.

Физическое соединение через последовательный интерфейс RS232C выполняется через 25-ти и 9-ти контактные разъемы DB25 и DB9. В таблице приведены сигналы интерфейса RS232S.

Таблица Сигналы интерфейса RS232S.

Номера контактов разъемов. Обозначение сигнала Назначение сигнала
DB9 DB25
  GND (Ground) Земля
TXD (Transmit Data) Передаваемые данные
RXD (Receive Data) Принимаемые данные
RTS (Request To Send) Запрос на передачу
CTS (Clear To Send) Готовность приемника к передаче
DSR (Data Set Ready) Готовность модема
SG (Signal Ground) Сигнальное заземление
DCR (Data Carrier Detect) Обнаружение несущей
DTR (Data Terminal Ready) Готовность приемника
RI (Ring Indicator) Кольцевой индикатор вызова

 


 

На практике применяются три вида подключений интерфейсов RS232C.

Первая схема подключения   Вторая схема подключения
GND   GND   GND   GND
SG   SG   SG   SG
TXD   RXD   TXD   RXD
RXD   TXD   RXD   TXD
RTS   RTS   RTS   CTS
CTS   CTS   CTS   RTS
DSR   DSR   DSR   DSR
DTR   DTR   DTR   DTR
DCR   DCR   DCR   DCR

 

По первой схеме соединяются только линий данных и питания.

λ
Во второй схеме соединения добавляются сигнал запроса на передачу RTS и сигнал готовности приемника к передаче CTS

Сигнал запроса на передачу RTS может быть использован в режиме работы по прерыванию.

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

На рис. 8 приведена временная диаграмма сигналов при первой схеме подключения

Рис. Временная диаграмма сигналов

Реализуются следующие такты работы:

Номер такта Выполняемая функция
Начало программы обслуживания канала. Подготовка регистров.
Чтение регистра статуса
Анализ битов ошибки
Проверка 5-го разряда регистра статуса
Передача данных в регистр выходных данных адаптера
Передача данных в регистр сдвига выходных данных и инициализация обмена
Стартовый бит передаваемого символа
Передаваемые символы
Стоповый бит
Выполнению МП других программ

 


 

ОБМЕН ИНФОРМАЦИЕЙ ЧЕРЕЗ ПАРАЛЛЕЛЬНЫЕ ИНТЕРФЕЙСЫ ВВОДА/ВЫВОДА ТИПА Cеntronix

Centronix parallel interface --стандарт, описывающий работу каналов параллельного обмена данными между компьютерами и периферийными устройствами. Данный интерфейс обеспечивает восемь параллельных линий передачи данных и дополнительные линии для передачи контрольной информации.

Параллельные интерфейсы типа Cеntronix (ИРПР-М) предназначены для радиально-локального подключения устройств ввода/вывода общего и специального назначения с параллельной передачей информации. Данный интерфейс обеспечивает восемь параллельных линий передачи данных и дополнительные линии для передачи контрольной информации. На рис приведена типовая схема параллельного канала

Рисунок 1 Типовая структура параллельного канала

 

Связь с параллельным каналом ПЭВМ семейства IBM PC осуществляются с помощью микросхемы типа INTEL 8255.

Обычно параллельный порт используется для подключения принтера и аналогичных ему устройств, однако сигналы порта можно использовать другими периферийными устройствами.

Базовые адреса портов параллельного вывода хранятся в ПЗУ в области переменных системы BIOS. ПЭВМ IBM PC/AP могут иметь до четырех параллельных портов, которым следующие логические имена LPT1 – LPT4. Адреса портов представляют собой двухбайтовые слова. Адрес LPT1 храниться в ПЗУ по адресу 0:0408; LPT2- по адресу 0:040А; LPT3- по адресу 0:040С; LPT4- по адресу 0:40Е.

Адрес порта статуса канала на единицу больше базового адреса. Адрес порта управления на единицу больше адреса порта статуса.

 

Режимы работы параллельного канала устанавливаются через регистр управления. Ниже приведены функции разрядов регистра управления:

Разряд Значение Функция
Формирование стробирующего сигнала при выводе данных*
Автоматический перевод строки
Инициализация порта принтера
Отмена выбора принтера
Разрешено прерывания от внешнего устройства
5-7   В управлении не используются

Устанавливается кратковременно из программы.

Для оценки процесса передачи данных параллельного порта анализируется состояние регистра статуса. В таблице приведены значения разрядов регистра статуса и соответствующие состояние порта:

Разряд Значение Состояние порта
0- 2   Не используются
Ошибка принтера
Внешнее устройство (принтер) не соединено с ЭВМ
Нет бумаги в принтере
Символ принят. Устанавливается сигналом ASK
Принтер свободен. Устанавливается сигналом BUSY

 

При обмене данными через параллельный порт программа постоянно анализировать значение 7-го разряда регистра статуса, который сигнализирует о возможности передачи очередного байта.

Данные при передаче вначале записываются в буферный регистр выходных данных. Затем канал выдает в периферийное устройство сигнал готовности и выставляет данные на передающую линию. Если ПУ готово к приему байта данных, то они пересылаются в буферный регистр ПУ и возвращается сигнал подтверждения о получении данных в контроллер порта.

При вводе выполняется обратный порядок действий. ПУ выставляет данные на свою выходную шину и сигнализирует установкой готовности. Канал загружает их во входной буферный регистр и вырабатывает сигнал на линии подтверждения. Затем ПУ сбрасывает сигнал данных и готовности, а принятые данные от ПУ передаются в системную шину. При вводе и выводе может быть установлен режим работы с прерыванием.

Регистр статуса отображает информацию о состоянии ПУ. Регистр управления инициирует работу канала, задает режим работы параллельного канала. На рис приведена временная диаграмма работы канала Cеntronix.

Рис. 2 Временная диаграмма работы канала Cеntronix

 

Обмен данными осуществляются по сигналу STROBE. Когда ПУ заканчивает прием данных, оно выставляет сигнал ASK (подтверждение). Переход сигнала ASK c высокого уровня на низкий в течение от 2.5 до 5мкс. означает завершение приема данных. В режиме запрос-ответ может быть использован сигнал BUSY, который сигнализирует о готовности ПУ к обмену данными с ПЭВМ.

Стандартом Cеntronix предусмотрены и другие управляющие сигналы, которые могут быть использованы при обмене данными ПЭВМ-ПУ. В таблице 1 приведен полный перечень сигналов порта.

Таблица 1

Контакт Сигнал Примечание
Наименование Направление
ЭВМ > ВУ Длительность сигнала не менее 0.5 мкс
2-9 D0-D7 ЭВМ<> ВУ  
ЭВМ < ВУ Переход от высокого уровня к низкому уровню завершение приема
ЭВМ < ВУ Сигнал активен при низком уровне. ВУ занято
SLCT ЭВМ > ВУ Высокий уровень означает, что ВУ выбрано
INIT ЭВМ > ВУ Перевод ВУ в исходное состояние низким уровнем сигнала
ЭВМ < ВУ Низкий уровень сигнала при ошибке приема данных ВУ
PE ЭВМ < ВУ Сигнал принтера. Высокий уровень, окончание бумаги
ЭВМ < ВУ Сигнал готовности ВУ
PUTOF ЭВМ > ВУ Сигнал принтера
STAT   Сигнал регистра статуса
19-25 GROUND   Общий вывод. Земля

 

 

При работе программы обмена с параллельными каналами программы постоянно обращается к 7 биту регистра статуса, который устанавливается под воздействием сигнала BUSY.

Байт данных предварительно записывается в выходном регистре канала и через регистр управления формирует короткий стробирующий импульс. После посылки байта программа ожидает наличие сигнала готовности принтера для передачи следующего байта. При этом изменяется 7-й разряд регистра статуса и 6-й разряд, который на короткое время сбрасывается в состояние 0.

 

Ниже приведен фрагмент программы на языке Pascal, в котором вычисляются адреса параллельных портов и передача строки символов, оканчивающийся символом &, на принтер.

program ParallelPort;

Uses Crt;

(*Описание переменных*)

Label Chr, Rpt, Rtn, Err;

Var

j,n:integer;

PrtName : string;

Portadrs: integer;

AdrPort :Word;

const

(*Логические адреса портов и их базовые адреса*)

Pname: array[1..4] of String=('LPT1','LPT2','LPT3','LPT4');

Padrs: array[1..4] of Integer=($378, $278, $3E8, $2E8);

begin

ClrScr;

(*Определение базового адреса порта*)

Writeln('Введите имя порта');

Readln (PrtName);

n:=4;

For j:=1 to n Do

Begin

If Prtname = Pname[j]

then Portadrs:=Padrs[j];

End;

writeln(Portadrs);

(*Ассемблерная вставкв*)

(*Инициализация порта*)

Asm

Sub AX, AX;

Mov Dx, AX;

Mov DX, Portadrs;

(*Передача символа в AL*)

Chr: Mov AL, [BX];

(*Проверка конца цепочки символов*)

Cmp AL, "&";

Je Rtn;

(*Пересылка символа в порт*)

Out DX, AL;

(*Формирование стробирующего импульса*)

Add DX, 2h;

Mov AL, 0Dh;

Out DX, AL;

(*Отмена стробирующего импульса*)

Mov AL, 0Ch;

(*Проверка регистра статуса*)

Dec DX;

Rpt: In AL, DX;

Test AL, 10h;

Jne Err;

(*Проверка готовности принтера*)

Test AL, 80h;

Jz Rpt;

(*Переход к адресу следующего символа*)

Inc BX;

(*Переход базовому регистру порта*)

Dec DX;

Jmp Chr;

End;

Err: Writeln('Error!!');

Rtn: End.