Механизм прерываний

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    580,95 kb
  • Опубликовано:
    2011-06-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Механизм прерываний

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

ГОУ ВПО «Северокавказский государственный технический университет»

Кафедра защиты информации



Курсовая работа

по дисциплине: Безопасность операционных систем

«Механизм прерываний»

Работу выполнила: студент группы БАС- 081 Червоненко А.И.

Проверил: к.т.н., доцент Гайчук Д. В.



Ставрополь, 2011


Содержание

Введение

. Теоретическая часть

.1 Прерывания в ЭВМ

.2 Ввод-вывод по прерыванию

1.3 Обработка прерывания

.4 Контроллер прерываний Intel 82C59A

.5 Программируемый контроллер интерфейса Intel 82C55A

. Аналитическая часть

.1 Общие сведения о матричных принтерах

.2 Проектирование символов для матричных принтеров

.3 Проектирование символа «А»

.4 Проектирование символа «И»

Заключение

Список используемой литературы

Приложения

Введение

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

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

Для разработки подобного рода программ нeобxодимо знать сам язык управления принтером - набор команд, специфических для конкретного принтера. Команды управления принтером позволяют задать размер символов, воспроизводимых при печати, расстояние между строками текста, начертание отдельных литер и другие параметры.

Целью курсовой работы является ознакомление с приемами управления работой печатающих устройств в MS-DOS.

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

1. Теоретическая часть

1.1    Прерывания в ЭВМ

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

Любое событие, требующее прерывания, сопровождается специальным сигналом - запросом прерывания.

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

.        Определение наиболее приоритетного запроса на прерывание(при одновременном поступлении нескольких запросов)

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

.        Сохранение текущего слова состояния процессора, то есть адреса следующей команды, состояния регистра флагов и т.д.

.        Определение адреса обработчика прерывания по его номеру и передача управления первой команде этого обработчика.

.        Выполнение обработчика прерывания.

.        Восстановление сохраненного слова состояния процессора.

.        Продолжение выполнения прерванной программы.

Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.

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

Аппаратные прерывания используются для организации взаимодействия с внешними устройствами. Запросы аппаратных прерываний поступают на специальные входы микропроцессора.

Программные прерывания вызываются следующими событиями:

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

.        наличие в программе специальной команды прерывания INT n ( n - номер прерывания).

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

Время реакции зависит от момента, когда процессор определяет факт наличия запроса прерывания. Опрос запросов прерываний может проводиться либо по окончании выполнения очередного этапа команды, либо после завершения каждой команды программы.

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

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

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

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

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

1.2 Ввод-вывод по прерыванию

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

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

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

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

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

1.3 Обработка прерывания

Рассмотрим более детально роль процессора в обработке прерывания ввода-вывода. Появление сигнала запроса прерывания запускает несколько процессов, часть которых реализуется аппаратными средствами, а часть - программными. На рисунке 1 представлен типичный алгоритм обработки прерывания.

Рисунок 1. Алгоритм обработки прерываний

После завершения модулем ввода-вывода заданной операции на аппаратном уровне выполняются следующие действия:

. Модуль ввода-вывода формирует сигнал запроса прерывания, который предназначается процессору.

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

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

. Процессор выполняет действия, предшествующие передаче управления по программе обработки прерывания. Прежде всего нужно позаботиться о сохранении текущего состояния процессора, что позволит в дальнейшем возобновить выполнение прерванной программы с той же точки. Здесь нужно обратить внимание на то, что в этот момент в счетчике команд процессора находится адрес команды, которая должна была бы выполняться процессором, если бы не произошло прерывание. Эту команду (а точнее, ее адрес) принято называть точкой прерывания, и она же является точкой возврата из прерывания. Поэтому процессор должен каким-то образом сохранить состояние счетчика команд, регистра состояния, который содержит слово состояния процессора PSW (processor status word). Как правило, эта информация помещается в системный стек.

. Затем процессор загружает в счетчик команд начальный адрес программы (подпрограммы) обработки прерывания. В разных компьютерах и разных операционных системах эта операция выполняется по-разному. В одних - каждый источник прерывания (модуль ввода-вывода, вызвавший прерывание) имеет свою подпрограмму обработки, в других - прерывания разбиты на группы и каждая группа имеет свою программу обработки, а в третьих - вообще существует одна программа обработки всех прерываний, внутри которой происходит ветвление в соответствии с конкретным источником прерывания. Если архитектура системы предусматривает наличие множества подпрограмм обработки прерываний, то информацию о том, какую именно подпрограмму нужно вызывать в каждом конкретном случае, процессор должен получать вместе с самим сигналом запроса прерывания. Другой вариант процессор получает ее от устройства, инициировавшего прерывание, в ответ на сигнал подтверждения. Как только в счетчик команд будет помещен адрес подпрограммы, процессор начнет новый цикл выполнения команды. Первой фазой цикла будет извлечение команды, адрес которой находится в счетчике. В результате процессор приступит к выполнению заданной подпрограммы обработки прерывания. Что именно будет при этом сделано, определяет программист, который разработал подпрограмму.

. Перед передачей управления подпрограмме обработки прерывания процессор аппаратными средствами выполнил сохранение счетчика команд и PSW в системном стеке. Но помимо этой информации для возобновления прерванной программы может потребоваться и восстановление состояния других регистров процессора. Поэтому, как правило, первые команды подпрограммы обработки сохраняют в стеке состояния всех остальных регистров процессора, поскольку они могут понадобиться самой подпрограмме и, следовательно, их содержимое к моменту завершения подпрограммы будет изменено. На рисунке 2а показано, что при этом происходит. В данном случае пользовательская программа была прервана в тот момент, когда выполняла команду, хранящуюся по адресу N. Аппаратно в стек помещается содержимое счетчика команд, каким оно было в момент завершения выполнения этой команды - N+1, а в счетчик команд заносится начальный адрес подпрограммы обработки Y. Сама подпрограмма затем помещает в стек содержимое регистров процессора, в результате чего указатель стека смещается и после завершения сохранения регистров будет указывать на ячейку Т.

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

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

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

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


Рисунок 2. Изменение состояния памяти и регистров процессора в процессе обработки прерывания: а) - вход в подпрограмму обработки прерывания; б) - завершение подпрограммы обработки прерывания.

1.4 Контроллер прерываний Intel 82C59A

Микропроцессор Intel 80386 поддерживает работу с одной линией запроса прерывания (INTR) и одной линией сигнала предоставления прерывания (INTA). Для того чтобы процессор Intel 80386 мог обслуживать множество внешних устройств, к нему подключается внешний контроллер прерываний Intel 82C59A, к которому, в свою очередь, подключаются модули управления внешними устройствами. Контролер Intel 82С59А в данном случае играет роль арбитра прерываний.

На рисунке 3 представлена схема подключения множества модулей ввода-вывода к процессору Intel 803S6 через контроллер прерываний Intel 82С59А Отдельный контроллер Intel 82C59A может обслуживать до восьми модулей ввода-вывода. Если в компьютере предполагается использовать более восьми модулей, контроллеры включаются по каскадной схеме и в результате могут обслуживать до 64 модулей.

Единственная задача контроллера Intel 82C59A - обслуживание прерываний. Он получает сигналы запроса прерываний от подключенных модулей ввода-вывода, анализирует, какое из устройств, одновременно приславших запрос имеет наивысший приоритет, и передает сигнал запроса прерывания на линию INTR, подключенную непосредственно к процессору. Процессор отвечает сигналом предоставления прерывания на линии INTA. В ответ контроллер помещает вектор соответствующего прерывания на линии данных. После этого процессор начинает выполнять процедуру обработки прерывания и работает напрямую с модулями ввода-вывода - считывает или передает данные.

Рисунок 3. Схема подключения контроллеров прерываний INTEL 82C59A к микропроцессору INTEL 80386.

Режим работы контроллера Intel 82C59A, а именно схема назначения приоритетов, программируется процессором. Существуют три варианта режима назначения приоритетов.

• Вложенный (fully nested). Приоритет запроса определяется тем, к какому контакту контроллера подключен сигнал. Тот из них, который подключен ко входу IRO, имеет приоритет 0, а подключенный ко входу IR7 - приоритет 7.

• Циклический (rotating). В некоторых приложениях нескольким внешним устройствам (группе) назначается один и тот же приоритет. В этом режиме после получения сигнала предоставления прерывания модуль, инициировавший прерывание, получает самый низкий приоритет в группе.

• Маскируемый (special mask). В этом режиме процессор может заблокировать прерывания от выбранных устройств, передав специальный код маски.

1.5 Программируемый контроллер интерфейса Intel 82C55A

Программируемый контроллер интерфейса Intel 82C55A может служить прекрасным примером модуля, используемого как в режиме программируемого ввода-вывода, так и в режиме ввода-вывода по прерыванию. Модуль выполнен в виде БИС в корпусе с 40 выводами и предназначен для работы с микропроцессором Intel 80386. На рисунке 4 представлена блок-схема контроллера и назначение выводов.

Внешнее устройство подключается к контроллеру через 24 линии связи, показанные на схеме справа. Сигналы на этих линиях определяются состоянием внутренних регистров контроллера, которые программируются процессором Intel 80386. Процессор может задавать через регистры управления разные режимы работы контроллера. 24 выходных линии разбиты на три группы по 8 линий в каждой - группы А, В и С. Каждая группа может функционировать как отдельный 8-разрядный порт ввода-вывода. Кроме того, группа С разбита на две подгруппы - СА и СВ, - которые можно использовать в сочетании с портами А и В соответственно. Если контроллер будет сконфигурирован таким способом, то подгруппы са и СВ смогут передавать (принимать) сигналы управления и состояния, а порты - сигналы данных на ввод и на вывод.

Рисунок 4. Программируемый контроллер интерфейса INTEL82C55A: а)блок-схема; б) назначение выводов микросхем.

Слева на схеме представлены линии интерфейса, по которым контроллер обменивается сигналами с процессором через системную магистраль. В их числе входят 8 двунаправленных линий передачи данных (линии DO-D7), по которым передаются (принимаются) данные в порты ввода-вывода и в регистры управления. Обмен данными выполняется, когда установлен сигнал CHIP SELECT и один из сигналов READ или WRITE. Сигнал RESET устанавливает контроллер в исходное состояние.

Загружая тот или иной код в регистр управления, процессор способен задавать режим работы контроллера и конфигурацию порта С. В режиме 0 три группы выходных линий контроллера работают как три независимых 8-разрядных порта, каждый из которых может быть сконфигурирован либо как порт ввода, либо как порт вывода. Другой вариант конфигурации - группы линий А и В работают как порты ввода-вывода, а группа линий С делится на две, одна из которых становится группой передачи сигналов управления, поддерживающих порт А, а другая - порт В. Сигналы управления предназначены для выполнения двух основных процедур - обмена сигналами при установлении связи (процедура «handshaking» - рукопожатие) и формирования сигнала запроса прерывания. В первом случае реализуется самый простой алгоритм синхронизации. Одна управляющая линия используется для передачи сигнала готовности DATA READY,который означает, что данные выставлены на внешние линии данных. Другая линия используется для приема сигнала подтверждения ACKNOWLEDGE, который является индикатором того, что выставленные ранее данные считаны и соответствующие сигналы можно сбросить. Еще одна линия предназначена для передачи сигнала запроса прерывания INTERRUPT REQUEST и подключается непосредственно к соответствующей линии системной магистрали.

Поскольку режим работы контроллера Intel 82C55A программируется извне, его можно настроить на работу с самыми разными несложными внешними устройствами. На рисунке 5 показано, как с помощью этого контроллера можно реализовать управление клавиатурой и дисплеем видеотерминала. Клавиатура рассматривается как устройство ввода, передающее 8-разрядный код. Два разряда, shift и CONTROL, имеют особое значение для программы обслуживания клавиатуры, которая выполняется процессором. Однако особая интерпретация этих; разрядов никак не затрагивает контроллер - это не его заботы. Он передает эти разряды дальше на линии данных системной магистрали точно так же, как и шесть остальных. Для синхронизации обмена с клавиатурой выделены две сигнальных линии - DATA READY И ACKNOWLEDGE.

Дисплей также подключен к контроллеру через 8-разрядный порт данных. Набор управляющих линий включает, помимо DATA READY и ACKNOWLEDGE, еще две дополнительных.

Рисунок 5. Подключение клавиатуры и дисплея контроллеру интерфейса INTEL 82C55A.

2 Аналитическая часть

.1 Общие сведения о матричных принтeраx

Матричный принтер (Dot-Matrix-Printer) - старейший из ныне применяeмыx типов принтеров, был изобретён в 1964 году корпорацией Seiko Epson.

Принцип работы матричного принтера следующий. Изображение формируется с помощью печатающей головки, которая представляет собой один или два ряда вертикально расположенных тонкие иголок (игольчатая матрица), приводимых в действие электромагнитами. Головка устанавливается на ракетке и передвигается построчно вдоль листа, при этом иголки в нужный момент времени ударяют через красящую ленту по бумаге, формируя точечное изображение. Этот тип принтеров называется SIDM (англ. Serial Impact Dot Matrix - последовательные ударно-матричные принтеры).

Существуют принтеры с 9, 12, 14, 18 и 24 иголками в головке. Основное распространение получили 9-ти (дешевые модели) и 24-x игольчатые принтеры. Качество печати и скорость графической печати зависят от числа иголок: больше иголок - больше точек. Качество печати в 9-ти игольчатых принтeраx улучшается при печати информации не в один, а в два или четыре прохода печатающей головки вдоль печатаемой строки. Более качественная и быстрая печать обеспечивается 24-игольчатыми принтерами, называемыми LQ (англ. Letter Quality - качество пишущей машинки). Однако эти принтеры не только более дорогостоящи, но и менее надежны, а также замена вышедших из строя печатающих головок представляет определенные трудности.

Существуют монохромные пяти цветные матричные принтеры, в которых используется 4 цветная CMYK лента. Смена цвета производится смещением ленты вверх-вниз относительно печатающей головки.

Для перемещения красящей ленты используется передаточный механизм, использующий движение каретки. За перемещение каретки отвечает шаговой двигатель. Еще один шаговой двигатель отвечает за перемещение бумагоопорного валика. Именно поэтому скорость печати матричных принтеров невысока. В зависимости от выбранного качества печати и модели принтера скорость печати составляет от 10 до 60 секунд на страницу. Скорость печати матричных принтеров измеряется в CPS (англ. characters per second - символах в секунду).

Матричные принтеры оборудованы внутренней памятью (буфером) для хранения данных, полученных от персонального компьютера. Объем памяти недорогих принтеров составляет от 4 до 64 Кбайт. Хотя существуют модели, имеющие и больший объем памяти (например, Seikosha SP-2415 имеет буфер размером 175 Кбайт).

2.2 Проeктированиe символов для матричных принтeров

Матричные принтеры поставляются с несколькими типовыми начертаниями символов (прямое, полужирное, наклонное) и несколькими вариантами литер (престиж, оратор, скрипт и пр.), позволяющих воспроизводить тексты с латинским алфавитом. Такие шрифты называют встроенными.

Описание встроенных шрифтов хранится в постоянном запоминающем устройстве принтера и в любой момент доступно для применения. Однако не всегда стандартный набор символов достаточен для воспроизведения нужного текста. Особенно это характерно для документов специализированного характера, требующих некоторых специфических знаков (например, символов русского или других национальных алфавитов, условные обозначения географических элементов, знаков диаграмм шахматных позиций и т.п.). Для этих случаев в системе команд принтера предусматривается возможность конструирования недостающих символов, сохранения их в оперативной памяти принтера и воспроизведения в момент печати. Шрифты подобного вида называют загружаемыми. Загружаемые шрифты становятся доступными только после размещения их описания в оперативную памяти принтера не могут воспроизводиться только до конца текущего сеанса (до выключения питания принтера) или до момента загрузки в оперативную память принтера описания другого шрифта.

Проектирование и воспроизведение произвольных литер состоит из следующих этапов:

. Сначала изображается кривая, образующую литeру.

. Далee рассчитываются данные, необходимые для описания кривой.

. Затем эти данные посылаются в оперативную память принтера для связи описание символа с определенным кодом.

. Принтеру дается команда напечатать данную литеру вместо той, которую он воспроизводит в соответствии с описанием

Рассмотрим механизм формирования символов на примере принтера Epson LX1050. Этот матричный принтер имеет печатающую головку с 24 иголками и может воспроизводить символы в нескольких режимах. В каждом из режимов допускается конструирование символов с помощью матриц различной ширины и высоты (таблица 1). Минимальная ширина символов - 5.

Таблица 1 - Таблица соответствия размеров матриц режимам принтера

Режим

Ширина

Высота

Draft

9

24

LQ pica

29

24

LO elite

23

24

LQ semi-.condensed

15

24

LQ proportional

37

24

Draft super subscript

7

16

LQ super subscript

23

16

LQ prop, super subscript

23

16

Рисунок 6 - Пример формирования матрицы для печати символа «А»

Размер матрицы для воспроизведения символов

Положение иголок для печати символов А


Номера иголок


* * * * * * * * * *

1

* * * * * *

* * * * * * * * * *

2

* * * * * * *

* * * * * * * * * *

3

* * * *

* * * * * * * * * *

4

* * * *

* * * * * * * * * *

5

* * * *

* * * * * * * * * *

6

* * * * * * * * *

* * * * * * * * * *

7

* * * *

* * * * * * * * * *

8

* * * *

* * * * * * * * * *

9

* * * *

1 2 3 4 5 6 7 8 9 10


1 2 3 4 5 6 7 8 9 10

Номера позиций


Номера позиции


Символ представляет собой матрицу, в которой темные ячейки соответствуют выпячиваемым иголкам, а светлые - утапливаемым. Такая матрица может быть закодирована. Каждой строке матрицы присвоен номер. Все строки матрицы разбиты на три группы, внутри каждой из которых нумерация повторяется. Каждый столбец матрицы кодируется тремя байтами, соответствующими одной из групп строк. Значение каждого из трех байтов, кодирующих столбец, определяется суммой, присвоенной строкам, на пересечении которых созданным столбцом размещен знак"*" (рисунок 2).

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

При описании символа количество колонок (ml), образующих символ, и общее пространство (m0+ml+m2). занимаемое символом, не должны превышать значений, представленных в таблице 2.

печатающий матричный принтер программный

Таблица 2 - Таблица соответствия значения количества колонок и общего пространства режимам принтера

Режим

ml

m0+ml+m2

Draft

9

12

LQ pica

29

36

LO elite

23

30

LQ semi-.condensed

15

24

LQ proportional

37

42

Draft super subscript

7

12

LQ super subscript

23

36

LQ prop, super subscript

23

42


В соответствии с условием поставленной задачи рассматриваемым режимом матричного принтера является LQ pica, следовательно, матрица имеет размеры в ширину 29 позиции и в высоту 24 иголки. Ширину отступов от символа слева (m0) и справа (m2) выберем равными 2 и 5 соответственно, общее пространство символа m0+ml+m2=2+29+5=36, что не превышает максимального значения 36.

Чтобы связать описание символа с соответствующим кодом, необходимо послать на принтер набор команд, указывающих режим, номер кода загружаемого символа, три байта общего описания символа (m0, ml, m2) и байты описания столбцов матрицы. Данные операции прослеживаются на примере листингов приложений.

Заданием на курсовую работу было проектирование своих инициалов «А» и «И».

Проектирование символа «А»

1.       На клеточном поле 29х24 изображается кривая проектируемого символа, затем на ее основе проектируется матрица (Рисунок 7)

Рисунок 7- Матрица символа «А»


Таблица 3- Значение кодирующих байтов матрицы для символа «А»


1

2

3

4

5

6

7

8

9

10

11

12

13

14

байт 1

0

0

0

0

0

0

0

0

15

15

127

112

112

112

байт 2

0

0

0

0

1

15

255

254

254

252

28

28

28

28

байт 3

0

0

0

14

254

254

254

0

0

0

0

0

0

0

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

112

112

112

112

112

112

127

127

127

0

0

0

0

0

0

28

28

28

28

28

28

255

255

255

0

0

0

0

0

0

0

0

0

0

0

0

254

254

254

0

0

0

0

0

0


. Затем в оперативную память принтера передается данные, связанные с кодом литеры, и подается команда печати спроектированного символа (Приложение 1).

Проектирование символа «И»

Рисунок 8- Матрица символа «И»


Таблица 4- Значение кодирующих байтов матрицы для символа «И»


1

2

3

4

5

7

8

9

10

11

12

13

14

байт 1

0

0

0

127

127

127

0

0

0

0

0

0

0

0

байт 2

0

0

0

255

255

255

0

0

0

3

3

3

60

60

байт 3

0

0

0

254

254

254

120

120

120

192

192

192

0

0

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

0

3

3

3

124

124

127

127

127

0

0

0

0

0

0

60

192

192

192

0

0

255

255

255

0

0

0

0

0

0

0

0

0

0

0

0

254

254

254

0

0

0

0

0

0


Листинг третьего этапа проектирования приведен в приложении 2.

Заключение

В ходе работы над теоретической частью курсовой работы была изучена соответствующая литература по организации и механизмам прерывания. Особое внимание было уделено контроллеру прерываний Intel 82C59A и Intel 82C55A, работающих на базе процессора Intel 80386.

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

Была так же выполнена поставленная задача - формирование новых символов, разработка команд для их загрузки в оперативную память принтера и программы, реализующей вывод данных символов на печать - выполнена путем разработки начертания символов, составляющих мои инициалы (буквы «А» и «И»), и реализации необходимых программных кодов на языке BASIC.

Список используемой литературы

1.       Гайчук Д.В., Подопригора Н.Б. Методические указания к выполнению курсовой работы по дисциплине «Безопасность операционных систем» для студентов специальности 090105 «Комплексное обеспечение информационной безопасности автоматизированных систем»,Ставрополь 2006-05-15

.        Духнич Е.И., Андреев А.Е., Организация вычислительных машин и систем: Учебн. пособие/ВолгГТУ, Волгоград, 2003.-80с.

.        Луценко Е.В. «Вычислительные машины» - Краснодар. 2000.

.        Тертышный В.Т. «История персонального компьютера» - М. 2002.

.        Уильям Столлингс «Структурная организация и архитектура компьютерных систем». - М 2002г.

6.       Уинзор Дж. SOLARIS. Руководство системного администратора. 3-е изд. - СПб.: Питер, 2003.- 448 с.

.        Современные операционные системы. Э. Таненбаум, 3-е изд. -СПб.: Питер, 2010.

.        Аппаратное обеспечение IBM PC Александр Фролов, Григорий Фролов Том 2, книга 1, М.: Диалог-МИФИ, 1992.

Приложения

Приложение 1

Листинг вывода на печать символа «А» на языке QBASIC

LPRINTCHR$(27);"xl";

LPRINT CHR$(27);"&";CHR$(0);CHR$(31);CHRS(31);

RESTORE 1540

FORN=31 TO 31

READ LS :LPRTNT CHR$(LS);

READ CW :LPRTNT CHR$(CW);

READ RS :LPRTNT CHR$(RS);

FOR M=l TOCW*3

READ MM

LPRINT CHR$(MM);

NEXT M

NEXTN

'Symbol'

DATA 2,29,5

DATA 0,0,0, 0,0,0, 0,0,0, 0,0,14, 0,1,254

DATA 0,15,254, 0,255,254, 0,254,0, 15,254,0, 15,252,0

DATA 127,28,0, 112,28,0, 112,28,0, 112,28,0, 112,28,0

DATA 112,28,0, 112,28,0, 112,28,0, 112,28,0, 112,28,0,

DATA 127,255,254, 127,255,254, 127,255,254, 0,0,0, 0,0,0

DATA 0,0,0, 0,0,0, 0,0,0, 0,0,0

Приложение 2

Листинг вывода на печать символа «И» на языке QBASIC

LPRINTCHR$(27);"xl";

LPRINT CHR$(27);"&";CHR$(0);CHR$(31);CHRS(31);

RESTORE 1540

FORN=31 TO 31

READ LS :LPRTNT CHR$(LS);

READ CW :LPRTNT CHR$(CW);

READ RS :LPRTNT CHR$(RS);

FOR M=l TOCW*3

READ MM

LPRINT CHR$(MM);

NEXT M

NEXTN

'Symbol'

DATA 2,29,5

DATA 0,0,0, 0,0,0, 0,0,0, 127,255,254, 127,255,254

DATA 127,255,254, 0,0,120, 0,0,120, 0,0,120, 0,3,192

DATA 0,3,192, 0,3,192, 0,60,0, 0,60,0, 0,60,0

DATA 3,192,0, 3,192,0, 3,192,0, 124,0,0, 124,0,0,

DATA 127,255,254, 127,255,254, 127,255,254, 0,0,0, 0,0,0

DATA 0,0,0, 0,0,0, 0,0,0, 0,0,0


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!