У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 9 Цель работы- изучить принципы программирования процедур работы с устройствами ввод

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.2.2025

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

Цель работы: изучить принципы программирования процедур работы с устройствами ввода-вывода.

                                                                                                        Выполнил

        Студент группы 2-09П

                     Полойников Вадим

        Проверил: Каневский А.С

Ход работы.

Задание №1

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

Программирование работы с дисплеем

Задание режимов работы и обмен данными с дисплеем можно выполнять при прерываниях BIOS типа 10Н, а вывод данных на дисплей и при прерываниях DOS типа 21Н. Для уяснения отличий прерываний BIOS от прерываний DOS рассмотрим в качестве примера несколько функций видеопрерываний BIOS.

Видеооперации с прерыванием 10Н BIOS

Это прерывание обеспечивает выполнение 16 различных процедур работы с дисплеем (идентифицируются содержимым регистра АН). Приведем самые важные из них.

1. Перемещение курсора в заданную позицию: АН = 2.

Координаты курсора (строка, столбец) предварительно засылаются, соответственно, в регистры DН, DL. В регистре ВН указывается номер страницы буфера: по умолчанию и в графическом режиме ВН = 0.

2. Очистка экрана дисплея: АН = 6 и АL = 0, или АН = 7 и АL = 0.

3. Чтение символа, находящегося в текущей позиции курсора и его атрибута (только для текстовых режимов): АН = 8. В регистре ВН указывается номер страницы буфера. Считанный символ возвращается в АL, а его атрибуты — в АН (атрибуты символа — это его характеристики: цвет, цвет фона, яркость, инвертирование, мигание и т. д.).

4. Установка видеорежима изображения (текстовый, графический, цветность, формат, разрешающая способность и т. п.): АН = 0. Видеорежим определяется содержимым регистра АL.

5. Запись новых атрибутов символа и вывод символа в текущую позицию курсора: АН = 9. Прочие регистры должны содержать:

• АL — записываемый символ;

• ВL — его атрибуты или цвет (в графическом режиме);

• ВН — номер видеостраницы;

• СХ — счетчик записываемых символов (число повторений символа).

6. Вывод символа в текущую позицию курсора: АН = 9 и ВL = 0. Содержимое АL, ВН и СХ аналогично п. 5.

7. Чтение текущего видеостатуса: АН = ОFh. Возвращает в: АL — текущий режим; АН — число столбцов на экране; ВН — активную страницу буфера.

8. Вывод строки символов: АН = 13h и АL = 0. Прочие регистры должны содержать:

• ЕS : ВР — указатель строки (ее начальный адрес в памяти);

• СХ — длину строки;

• DХ — строку дисплея;

    • ВН — номер страницы буфера.

Видеооперации с прерыванием 21Н DOS

• Вывод символа на экран дисплея: АН = 2 или АН = 6 и DL <> ОFFh. В регистре DL должен быть АSСII-код символа. Пример фрагмента программы (вывод символа «С»):

mov АН, 6

mov DL 43Н ; 43Н — это АSСII -код символа С

int 21Н

• Вывод строки символов: АН = 9 (чаще всего используемая функция). В регистрах DS : DХ должен находиться начальный адрес строки символов, которая обязана заканчиваться символом $. Пример фрагмента программы (отображение текста 'вывод строки символов $'):

Техt db 'вывод строки символов $'

mov АН, 9

mov DХ, оffsеt tехt; это адрес выводимой строки

int 21Н

• Ввод/вывод из файла через логический номер. Стандартные файловые логические номера

определяют тип и устройство ввода-вывода:

0 - ввод с клавиатуры;

1 - вывод на экран дисплея;

2 - вывод на экран сообщения об ошибке;

3 - ввод-вывод на внешнее устройство;

4 - вывод на печать.

Для ввода предназначена функция АН = 3Fh прерывания 21Н. для вывода служит функция АН = 40h прерывания 21Н. В регистр СХ предварительно заносится число вводимых-выводимых байт, а в регистр DХ записывается начальный адрес поля памяти для ввода-вывода. В случае успешного завершения процедуры ввода-вывода обнуляется флаг переноса СF, а в регистре АХ возвращается количество фактически переданных байт. При неудачной операции флаг СF устанавливается в 1, а в регистр АХ заносится код ошибки.

Приведенный ниже пример содержит фрагмент программы для вывода на экран текстового файла Техt, содержащего 50 байт.

Tехt db 50 duр('')

mov АН, 40Н

mov ВХ, 1 ; указание устройства вывода

mov СХ, 50 ;указание числа выводимых байт

mov DХ, оffsеt tехt; указание начального адреса поля памяти, содержащего

текст int 21Н

Задание №2

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

При программировании работы с клавиатурой могут быть использованы прерывание 16Н BIOS и прерывание 21Н (АН = 1, 6, 7. 8, А, В, С) DOS.

Прерывание 16Н BIOS предусматривает достаточно простые операции обмена данными с клавиатурой, полезные при написании программ, выполняемых независимо от операционной системы DOS. Так, при АН = 0 и 1 считываются из буфера клавиатуры scan-код клавиши в регистр АН и ASCII-код клавиши в регистр АL; при АН = 2 в АL возвращается байт состояния клавиатуры - состояние управляющих клавиш: Shift, Ctrl, Аlt, Scroll Lock, Num Lock и Insert; при АН = 3 — устанавливаются режимы работы клавиатуры.

Ввод с клавиатуры по прерыванию 21Н DOS предполагает:

Чтение символа с клавиатуры (с ожиданием ввода) и отображением символа на экране дисплея: АН = 1 или АН = 6 и DL = ОFFh; то же, но без эха-отображения символа на экране дисплея: АН = 7 или АН = 8. Считанный символ (ASCII -код) помещается в регистр АL (scan-код не передается). Если к моменту запроса на чтение символа клавиша еще не нажата, то управление прерванной программе не будет возвращено до тех пор, пока это не будет сделано. Если код клавиши расширенный (клавиши F1-F10, Аlt, Сtrl и т. д.), необходимо повторное чтение. Пример фрагмента программы чтения символа:

mov АН, 1

int 21Н

2. Чтение строки символов с буферизацией: АН = ОАh. Для инициализации такого чтения необходимо:

• задать буфер, указав в нем число символов строки, подлежащих вводу, директивой:

buf DВ n, 0, 0……..0, 0

(buf - имя поля, которое, в принципе, может быть и любым другим); количество нулей в директиве должно быть на 2 больше, чем n (n - максимальное количество вводимых символов), на место первого нуля после ввода будет записано количество фактически введенных символов, на место последующих нулей будут введены АSСII-коды символов строки и еще один 0 для кода клавиши Еntеr - 13;

• занести в регистр DХ адрес буфера.

При выполнении рассматриваемого прерывания управление прерванной (основной) программе не возвратится до тех пор, пока не нажата клавиша Еntеr.

При нажатии каждой очередной клавиши ее код записывается в буфер клавиатуры и отображается на дисплее, но из буфера поступит в основную программ) (в поле buf) только после нажатия клавиши Еntеr. Если до Еntеr клавиш нажато больше, чем указано в буфере, то раздастся звуковой сигнал и лишние символы восприняты не будут.

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

buf  DВ 9,0,0,0,0,0,0,0,0,0,0,0

mov  АН, 0АН

mov  DХ, оffset buf 21Н

В поле буфера будут записаны АSСII-коды символов строки, и, если в основной программе предусмотрены операции над двоичными кодами символов (цифр) строки, то есть она предполагает ввод числового значения, то необходимо преобразовать АSСII -коды в двоичный код числа.

1. Чтение состояния клавиатуры: АН = ОВh. В регистр АL записывается 0, если в буфере клавиатуры содержится хотя бы один символ.

2. Очистка буфера клавиатуры и вызов функции: АН = 0СН. Обнуляется буфер клавиатуры и инициируется выполнение одной из 5 функций прерывания 21Н; в этом случае номер вызываемой функции должен быть записан не в регистре АН, а в регистре АL (АL=1,6,7,8 или ОАh).

3. Ввод с клавиатуры (из файла через логический номер): АН = 3Fh. Используется функция расширенного управления файлами МS DOS по файловому указателю. Ниже приведен пример фрагмента программы для ввода с клавиатуры 50 байт:

tехt db 50 dup(' ') ; задание поля памяти для ввода

…………

mov АН, 3FH

mov ВХ, 0 ; указание устройства ввода

mov СХ, 50 ; указание числа вводимых байт

mov DХ, ofset tехt; указание начального адреса поля памяти для ввода

int 21Н

Задание №3

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

Программирование работы с принтерами

При работе с печатающими устройствами могут быть использованы прерывания: 14Н и 17Н BIOS и 21Н (АН = 4 и 5) DOS. Следует различать программирование для печатающих устройств параллельного типа (информация передается на принтер побайтово по 8-битовой шине) и печатающих устройств последовательного типа (информация передается по одному проводу последовательно по 1 биту), подсоединяемых к любому последовательному порту микропроцессора.

Печатающие устройства параллельного типа

• Прерывание 17Н BIOS (номер принтера предварительно указывается в регистре DХ):

 послать 1 символ в устройство печати: АН=0. АSСII-код символа предварительно должен быть помещен в регистр АL. В регистре АН после завершения вывода символа возвращается признак успешности результата;

 инициировать принтер (посылка в порт служебных кодов): АН = 1 ;

 получить состояние принтера (в регистре АН): АН = 2.

• Прерывание 21Н DOS, АН = 5:

 вывести  на печать один символ: АН = 5.  АSСII-код символа предварительно

записывается в регистр DL. Фрагмент программы печати символа С (АSСII-код символа С равен 43h):

mov АН, 5

mov DL, 43 Н

int 21Н

• Вывести на печать текстовый файл: АН = 40h. Используются функции расширенного управления файлами MS DOS по файловому указателю. Пример фрагмента программы для вывода на печать текстового файла, содержащего 50 байт:

tехt db 50 dup(' ')

…………

mov АН, 40H

mov ВХ, 4 ; указание устройства вывода

mov СХ, 50 ; указание числа выводимых байт

mov DХ, ofset tехt; указание начального адреса поля памяти, содержащей текст

int 21Н

Печатающие устройства последовательного типа

• Прерывание 14Н BIOS (номер последовательного порта записывается в регистр DХ):

 инициализация параметров последовательного порта: АН = 0;

 послать в порт один символ (если к порту подсоединен принтер, то и печать): АН = 1 и др.

• Прерывание 21Н DOS, АН = 4 (номер последовательного порта записывается в регистр DХ):

 вывести на печать один символ: АН = 4. ASCII-код символа предварительно помещается в регистр DL;

 далее аналогично прерыванию 21Н DOS, АН = 5 для принтера параллельного типа и др.

Вывод: я изучил принципы программирования процедур работы с устройствами ввода-вывода.




1. Контрольная работа- Методы психологии труда
2. Доклад- Реологические свойства сырья для производства слоеного теста.html
3. На тему- Визуальная семантическая орнаментика в истории культуры
4. заимствуется собственно не стиль а отдельные языковые его средства хотя и имеющие окраску этого стиля.html
5. Реферат на тему ldquo;Поняття про інсталювання програмних продуктівrdquo; на прикладі операційної системи Win
6. Философия как разновидность мировоззрения 1
7. Кристалл Для реализации проекта требуется- Пробурить скважину на территории города Першотравенск;
8. тема права України
9. There is no certin nswer if it is good to be vegetrin or otherwise if it is bd.html
10. Реферат- Система кондиционирования автомобиля