МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ДОНЕЦКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ
По учебной практике
«Микропроцессорные системы»
Вариант №1
Выполнил Бабко Богдан Олегович ОКС 07 – 2
Руководитель Дворниченко Елена Александровна
Донецк
2010
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1 ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ DOS
1.1 Функции ввода с клавиатуры
1.2 Функции вывода на экран
1.3 Сервис клавиатуры BIOS-Int 16h
1.4 Описание алгоритмов вывода чисел
1.5 Задание
2 ГЕНЕРАЦИЯ ЗВУКОВЫХ СИГНАЛОВ В ПЭВМ
2.1 Таймер КР1810ВИ54
2.2 Программируемый периферийный интерфейс КР580ВВ55А
2.3 Генерация звука в IBMPC
2.4 Выполнение задержки
2.5 Область данных BIOS
2.6 Задание
3 ПРИНЦИП РАБОТЫ КЛАВИАТУРЫ
3.1 Таблица векторов прерываний
3.2 Маскирование прерываний
3.3 Изменение таблицы векторов прерываний
3.4 Задание
4 ПРИНЦИПЫ РАБОТЫ ВИДЕОСИСТЕМЫ ПЭВМ
4.1 Адресация и режимы работы адаптера CGA
4.2 Режим работы дисплея
4.3 Задание
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ВВЕДЕНИЕ
В любой сфере человеческой деятельности - в науке, технике, производстве - методы и средства вычислительной техники направлены на повышение производительности труда. В связи с этим уровень специалистов в существенной мере определяется их подготовкой в следующих направлениях, связанных с применением средств вычислительной техники:
-управление технологическими процессами, включая автоматизированные контроль и диагностику технических средств;
-использование ЭВМ для автоматизированного проектирования, научных исследований, административно-организационного управления.
Стремительное совершенствование технологии производства интегральных полупроводниковых компонентов, обеспечившее возможность создания высокоэкономичных цифровых устройств обработки и хранения информации, а также появление эффективных средств программирования оказывают все более существенное влияние не только на развитие техники измерений и управления, но и на подход к автоматизации вообще. Первые попытки применения цифровых устройств для автоматизации производственных процессов относятся к началу 60-х гг., когда были разработаны первые управляющие вычислительные машины. В 70-х гг. ЭВМ стала обычным элементом оборудования автоматизированных систем.
Дальнейшее развитие электронной вычислительной техники привело к ее широкому применению в военном деле, как составной части автоматизированных систем управления войсками и вооружением. Что предопределило повышение требований к квалификации современного командира-инженера, которому необходимо знать основы организации и функционирования универсальных и специализированных управляющих электронных вычислительных машин.
1 ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ DOS
Программное прерывание Int 21h – это набор функций, с помощью которых организуется операции ввода/вывода в базовой версии DOS.
1.1 Функции ввода с клавиатуры
аh=01h – Фильтрующий ввод с клавиатуры с ожиданием и эхом на экране.
Пример:
movah, 01
int 21h
Результат функции – в AL находится код символа из буфера клавиатуры.
При вводе функциональных клавиш (F1,…F12, PgUp и др.) необходимо 2 обращения к этой функции. При 1-м AL = 0, при 2-м AL = расширенный код ASCII. В процессе выполнения этой функции проверяется нажатие комбинаций клавиш Ctrl + Break, которая используется для прерывания работы программы, если она зацикливается. По Ctrl + Break можно снять программу, если она использует функции ввода/вывода, содержащие проверку на Ctrl + Break. Такие функции называют фильтрующими.
ah = 08h – Фильтрующий ввод символа с клавиатуры с ожиданием без эха.
Пример:
mov ah, 08h
int 21h
Результат функции – в AL код символа.
Отличается от предыдущей тем, что символ не отображается на экране.
ah = 07h – Не фильтрующий ввод символа с клавиатуры с ожиданием без эха.
Пример:
mov ah, 07h
int 21h
Результат функции – в AL код символа.
Отличается от предыдущей тем, что не реагирует на Ctrl + Break.
аh = 0Вh – Проверить статус ввода (фильтрующая).
Функция проверяет на наличия символа в буфере клавиатуры без извлечения его из буфера.
Пример:
Mov ah, 0Вh
Int 21h
Результат функции – AL = 00h, если буфер пуст, и AL=FFh, если есть символ в буфере клавиатуры.
Пример выхода из программы по нажатию клавиши ESC без ожидания нажатия клавиши.
mov ah, 0bh
int 21h
cmp al,0
jz m1
mov ah, 07h
int 21h
cmp al, 27
jne m1
mov ax, 4C00h
int 21h
m1: ;---Продолжение программы
ah=0Ch – Чтение с предварительной очистки буфера .
Пример:
movah, 0Ch
moval, <номер функции 01h, 07h, 08h, 06h,или 0Ah>
int 21h
Чтобы программа не читала из буфера клавиатуры давно нажатую клавишу, данная функция очищает буфер клавиатуры, а затем выполняет функцию, номер которой указана в регистре al. Для функций 06h и 0Ah необходимо указать дополнительные параметры в регистре dl и dx. Реакция на Ctrl – Break определяется используемой функцией ввода.
ah=0Ah – Ввод строки в буфер ввода(фильтрующая).
Для ввода строки нужно подготовить блок параметров.
Пример:
BL_par label byte
Maxlen db 7
Actlen db ?
S db 7 dup(?)
……………….
Movah, 0Ah
Leadx, BL_par ;адрес поля блока параметров
Int 21h
Результат функции – в поле S введённая строка, а в поле Actlen длинна введённой строки.
Функция ожидает ввода строки начиная с текущей позиции курсора. Пользователь может набрать на экране 6 символов максимум (т.е. Maxlen - 1), а при вводе следующего символа выдаётся предупреждающий звуковой сигнал и символ не вводится. Набор строки завершается нажатием клавиши Enter, до нажатия Enter с помощью BackSpace строку можно отредактировать.
Например:
Если набранная строка – Строка
EnterТогда Actlen =6
‘С’ | ‘Т’ | ‘Р’ | ‘О’ | ‘К’ | ‘А’ | 0Dh(Код Enter) |
S=
Если набрана строка – 123
EnterТогда Actlen = 3
‘1’ | ‘2’ | ‘3’ | 0Dh(Код Enter) |
S=
Если набранная строка – Строка -
EnterТогда Actlen = 0
0Dh | X | X | X | X | X |
S =
1.2 Функции вывода на экран
Ah=02h – Вывод символа на дисплей (фильтрующая)
Пример
movah, 02
movdl, 35hили dl, ‘5’
int21h
В регистр dl помещается ASCII-код символа или указывается непосредственно сам символ в кавычках. Функция выводит символ на экран в текущую позицию курсора и перемещает курсор вправо на одну позицию. На символ BackSpace перемещает курсор влево на одну позицию. Функция реагирует на вывод управляющих кодов 07h(звонок), 08h(BackSpace), 09h(Tab), 0Ah(lf), 0Dh(cr).
ah=09h – Вывод строки.
Пример:
Msg db 13,10эPress and key…$’
mov ah, 09h
lea dx, Msg
int21h
В регистр dx помещается адрес выводимой строки, которая должна быть предварительно описана в сегменте данных, при этом в конце строки обязательно нужно указать символ $ (конец строки). 13 и 10 – это ASCII-коды символов возврата каретки и перевода строки, которые указываются для вывода строки в первую позицию новой строки экрана. Действие функции полностью аналогично функции 02h, но выводится не один символ, а целая строка.
1.3 Сервис клавиатуры BIOS-Int 16h
Клавиши Alt, Ctrl левый и правый Shift называются клавишами сдвига. При нажатии такой клавиши соответствующий бит байта состояния клавиатуры устанавливается в 1, а при отпускании сбрасывается в 0. Клавиши Insert, Caps Lock, Scroll Lock, Num Lock называютсяклавишамирежимов. При первом нажатии такой клавиши в соответствующий бит байта состояния клавиатуры записывается 1 (Режим установлен), при следующем – 0 и т.д. Нажатие клавиши сдвига или режима не изменяет содержимого буфера клавиатуры. Они обеспечивают расширение возможности управления ЭВМ в различных программных системах.
Назначение бит регистра флагов клавиатуры следующее:
7 6 5 4 3 2 1 0
Insert | Caps Lock | Num Lock | Scroll Lock | Alt | Ctrl | Shift левый | Shift правый |
Клавиши режимов Состояния клавиш сдвигов
Для чтения данного регистра флагов используется функция 02h прерывания BIOSInt 16h.
ah=02h – Читать байт флагов клавиатуры (статус флагов клавиатуры).
Пример:
Movah, 02h
int16h
Результат функции – в AL байт флагов клавиатуры.
Пример завершения циклической программы при нажатой клавише Ctrl:
c:…………………. ; основная часть программы
Movah,02h
Int 16h
Andal, 00000100b ; выделение флага Сtrl
Jzc
Movax, 4c00h ; выход из программы
Int 21h
При нажатии клавиши Ctrl взводится бит 2 в статусе клавиатуры и пока клавиша нажата остается в состоянии «1». При отпускании клавиши производится сброс флага Ctrl. Остальные флаги работают аналогично.
Значении байтов флагов клавиатуры хранится по адресу 0040:0017hв области данный BIOS(0040:0000h – 0040:00FFh). Поэтому проверку флага клавиатуры можно осуществить прямым обращением к ячейке 0040:0017h.
Тот же пример без использования int 16h
MovES, 40h
MovSI, 17
C:…………………. ; основная часть программы
MovAL, ES:[SI]; результат этой команды такой же, как и у функции ah=02hint 16h
AndAL, 04h
Jzc
Movax, 4c00h; выход из программы
Int21h
1.4 Описание алгоритмов вывода чисел
Вывод числа в 2 с/с
1. Занесите число для вывода в регистр(например в bl).
2. Выполните сдвиг на один разряд влево через флаг переноса
3. Обнулите вспомогательный регистр (например dl).
4. выполните сдвиг dl на один разряд влево так , чтобы содержимое флага переноса попало в младший бит регистра dl.
5. прибавьте к регистру dlконстанту 30h для преобразования числа в ASCII-код символа данного числа и выведите на экран полученный символ.