АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ввод информации с клавиатуры терминала

Читайте также:
  1. Автоматизированная информационная поисковая система правовой информации
  2. Алфавитный подход к измерению информации.
  3. Алфавитный подход к измерению информации.
  4. Анализ диаграмм внешней передачи информации
  5. Аппаратные средства защиты информации
  6. Аттестация объектов информации
  7. Блок 3. Кодирование информации.
  8. В12. Поиск информации в базе данных по сформулированному условию
  9. В13. Знание о дискретной форме представления числовой, текстовой, графической и звуковой информации.
  10. В15. Умение определять скорость передачи информации
  11. Ввод дискретной информации в групповой поток
  12. Ввод и вывод информации

Федеральное агентство связи

Бурятский филиал федерального государственного образовательного бюджетного учреждения высшего профессионального образования «Сибирский государственный университет телекоммуникаций и информатики» в городе Улан-Удэ

Факультет информационных технологий и экономики

Кафедра информатики и вычислительной техники

 

 

ОСНОВЫ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ

Методические указания

по выполнению курсовой работы

Направление 230100 «Информатика и вычислительная техника»

 

 

Улан-Удэ

СОДЕРЖАНИЕ

Введение

1 Тематика и содержание курсовой работы

1.1 Ввод информации с клавиатуры термина

1.2 Вывод текстовой информации на экран терминала

1.3 Вывод графической информации на экран терминала

1.4 Программирование файловой системы MS DOS

1.5 Программирование прерываний

2 Задание к курсовой работе

3 Правила оформления пояснительной записки

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

5 Методика курсовой работы

6 Порядок защиты

7 Список используемых источников

 


Введение

Настоящие методические указания предназначены для студентов направления 230100 «Информатика и вычислительная техника», выполняющих курсовую работу по дисциплине «Основы системного программирования».

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

Целью выполнения курсовой работы по дисциплине «Основы системного программирования» является закрепление у студентов навыков алгоритмизации типовых задач при практическом использовании основных разделов дисциплины «Основы системного программирования».

 

1 Тематика и содержание курсовой работы

Ввод информации с клавиатуры терминала

Работой клавиатуры управляет специальная электронная схема – контроллер клавиатуры. В его функции входит распознавание нажатой клавиши и помещение закрепленного за ней кода в свой выходной регистр (порт), обычно с номером 60h. Код клавиши, поступающий в порт, называется скэн-кодом и является, по существу, порядковым номером клавиши. При этом каждой клавише присвоены как бы два скэн-кода, отличающиеся друг от друга на 80h. Один скэн-код (меньший, код нажатия) засылается контроллером в порт 60h при нажатии клавиши, другой (больший, код отпускания) – при ее отпускании. Только не путайте скэн-коды с ASCII-кодами и прочими кодировками символов. Скэн-код – это, по сути, заводской идентификатор клавиши, который никогда не изменяется.

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

Нажатие (а также отпускание) любой клавиши вызывает сигнал аппаратного прерывания, заставляющего процессор прервать выполняемую программу и перейти на программу обработки прерывания от клавиатуры. Процессор вместе с сигналом прерывания получает еще и номер вектора прерывания. За клавиатурой закреплен вектор с номером 9h. Адрес программы обработки прерываний от клавиатуры располагается, таким образом, в векторе 9h, занимающем слова с адресами 4h и 6h. Поскольку программа обработки прерываний от клавиатуры вызывается через вектор 9h, ее иногда называют программой INT 9h. Эта программа, помимо порта 60h, работает еще с двумя областями оперативной памяти: кольцевым буфером ввода, располагаемым по адресам от 40h:1Eh до 40h:3Dh, куда, в конце концов, помещаются коды ASCII нажатых клавиш, и словом состояния клавиатуры, находящимся по адресу 40h:17h, где фиксируется состояние нажатых клавиш.

Операционная система предоставляет несколько способов ввода данных с клавиатуры:

- обращение к клавиатуре, как к файлу, с помощью прерывания DOS INT 21h с функцией 3Fh;

- использование группы функций DOS INT 21h из диапазона 1 – Ch, обеспечивающих посимвольный ввод с клавиатуры;

- посимвольный ввод путем обращения непосредственно к драйверу BIOS с помощью прерывания INT 16h.

Ввод с клавиатуры средствами файловой системы использует предопределенный дескриптор, закрепленный за стандартным устройством ввода. Например:

MOV AH,3Fh; номер функции

MOV BX,0; номер дескриптора файла

LEA DX,STR_BUFER; указатель на буфер ввода строки

MOV CX,80; максимальная длина строки

INT 21h; вызов прерывания

Адрес, по которому должна вводиться строка, должен находиться в DS:DX, а в CX - максимальная длина строки в байтах. Ввод строки завершается нажатием клавиши «Enter» и DOS добавляет в конец строки два символа: возврат каретки и перевод строки. Длина введенной строки возвращается в AX, и это значение включает два символа-ограничителя.

Для ввода с клавиатуры можно использовать 7 функций прерывания INT 21h:

01h - ввод символа с эхом;

06h - прямой ввод - вывод через консоль;

07h - ввод символа без эха и без отработки Ctrl/C;

08h - ввод символа без эха и с отработкой Ctrl/C;

0Ah - буферизованный ввод строки с эхом;

0Bh - проверка состояния клавиатуры;

0Ch - сброс входного буфера и ввод.

Функции 01h, 06h, 07h и 08h при каждом вызове вводят в программу один символ из кольцевого буфера клавиатуры. Для ввода строки символов функции следует использовать в цикле. Кроме того, эти функции позволяют вводить расширенные коды ASCII. Для этого, обнаружив, что введенный код равен нулю, следует выполнить функцию повторно. Это дает возможность управления прикладными программами с помощью функциональных клавиш, а также сочетаний клавиши Alt с цифрами и буквами.

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

MOV AH,7; номер функции

INT 21h; ожидание ввода символа

CMP AL,0; проверка на расширенный код

JE EXT_COD; если да, то на особую процедуру

; процедура обработки расширенных кодов

EXT_COD: INT 21h; берется второй байт кода

CMP AL,75; проверка на «стрелку-влево»

JNE C_R; если нет, то следующая проверка

JMP C_L; если да, то на процедуру

C_R: CMP AL,77; следующее сравнение и т.д.

Работа с клавиатурой на уровне BIOS (INT 16h) позволяет считывать двухбайтовые коды, поступающие в кольцевой буфер ввода (код ASCII + скэн-код) и анализировать слово состояния клавиатуры. Для ввода используются следующие функции прерывания INT 16h:

00h - чтение двухбайтового кода из входного буфера;

01h - чтение состояния клавиатуры и двухбайтового кода без извлечения его из буфера;

02h - чтение флагов клавиатуры.

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

Функция 01h относится к числу асинхронных: определив состояние буфера ввода, она возвращает управление программе. Состояние буфера определяется по флагу ZF, если ZF = 0, то в буфере есть ожидающие ввода в программу символы, если же буфер пуст, ZF=1. При наличии в буфере кода символа его можно проанализировать, так как он копируется функцией в регистре AX.

Функция 02h передает в программу содержимое слова флагов (ячейка 417h). Она может использоваться для определения состояния клавиш Shift, Caps Lock и др.


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



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