- •Вопрос 1. Структура машин фон-Неймана, с общей шиной, с каналами прямого доступа в память. Сравнительный анализ и область применения.
- •Вопрос 11. Защита памяти с помощью ключей защиты. Структурная схема памяти с защитой. Достоинства и недостатки.
- •Вопрос 17. Методы параметрического диагностирования.
- •Вопрос 19. Детерминированный структурный подход к синтезу тестов.
- •Вопрос 20. Применение логического моделирования к синтезу тестов.
- •Асинхронное событийное моделирование
- •Видно, что на выходе схемы образуется последовательность значений 01011, что приводит к ложному импульсу. Троичное моделирование
- •Вопрос 21. Методы анализа выходных реакций.
- •Вопрос 40. Однокристальные м-эвм фирмы Intel
- •Вопрос 74. Com и exe программы. Их особенности и правила написания.
- •Вопрос 75. Принципы организации взаимодействия пользовательской программы с клавиатурой ibm pc.
- •Вопрос 76. Принципы организации вывода информации на экран ibm pc.
- •Вопрос 78. Файловая система ms dos, функции с использованием fcb и дескриптора
- •Вопрос 80. Компоновщики и загрузчики. Назначение и применение.
- •Вопрос 81. Отладчики, дизассемблеры и профайлеры. Назначение. Функции и возможности.
- •Вопрос 82. Утилиты. Назначение. Примеры использования.
- •Вопрос 97. Авм. Основные решающие элементы.
- •Вопрос 102. Квантование информации. Теорема Котельникова.
- •3.2. Выбор частоты отсчётов при дискретизации.
- •Вопрос 119. Алгоритмическая структура вычислительных сетей. Назначение протоколов соответствующих уровней.
- •Вопрос 120. Стандарты комитета ieee в области локальных вычислительных сетей. Протоколы ieee 802.3, ieee 802.4, ieee 802.5.
- •Вопрос 122. Стандарты скоростных магистралей Fast Ethernet, Switch Ethernet, 100vg.
- •Вопрос 123. Архитектурные особенности малых локальных сетей. Структура сети битбас.
- •Вопрос 124. Структура региональных сетей эвм.
- •Вопрос 141. Векторный операционный автомат с изменяющейся разрядностью данных и размерностью вектора.
- •Вопрос 156. Управляющий автомат с принудительной адресацией, с проверкой двух логических условий и с одним укороченным адресом в поле микрокоманды.
- •Вопрос 167. Принципы иерархической организации памяти эвм. Роль взу в иерархической структуре памяти современных эвм.
- •4.1 Основные понятия и классификация взу
- •Вопрос 184. Современные методологии разработки сложных информационных систем и их программного обеспечения. Case-системы, особенности организации и применения.
Вопрос 75. Принципы организации взаимодействия пользовательской программы с клавиатурой ibm pc.
Управление клавиатурой в машинах класса AT построено на основе микроконтроллера Intel 8042. Контроллер клавиатуры выполняет следующие действие:
прием данных от клавиатуры;
проверка четности поступившего байта;
трансляция (кодирование) полученной информации;
помещение байта данных в выходной буфер и извещение процессора;
передача байта во входной буфер клавиатуры.
Для каждой клавиши клавиатурой вырабатывается два кода: код нажатия и код прерывания (клавишу отпустили). Коду прерывания предшествует код FOh. Контроллер преобразует коды от клавиатуры в scan-коды. Код FOh (при отпускании) преобразуется в 7-й бит scan-кода. Некоторые клавиши, однако, могут быть запрограммированы только на посылку клавиши нажатия. Кроме того, при длительном удержании клавиши начинают посылать повторные коды нажатия.
Регистр состояния контроллера клавиатуры. Доступен по чтению по адресу 64Н. Биты регистра:
0 - равен 0, если выходной буфер клавиатуры пуст.
1 - состояние входного контроллера клавиатуры. Равен нулю, если буфер пуст.
2 - отражает тот факт, что тестирование клавиатуры прошло.
3 - указывает контроллеру, как интерпретировать полученный байт. Если бит 1, то байт считается данным, если 0 - байт считается командой.
4 - если бит, равен 0, то клавиатура заблокирована.
5 - устанавливается в 1, если передача байта в клавиатуру не была завершена.
6 - устанавливается в 1, если прием байта от клавиатуры не был закончен в заданный промежуток времени.
7 - если значение равно 1, то последний принятый байт содержал четное число единиц, т.е. произошла ошибка.
Входной буфер контроллера. Доступен по записи: 60Ь - запись данных, 64Н -запись команды.
Выходной буфер контроллера. Доступен по чтению по адресу 60Н.
Входной порт контроллера клавиатуры. Доступен по чтению по команде СОН. Биты;
0-3 - резерв.
4 - указывает количество RAM на системной плате.
5 - значение переключателя фирмы-изготовителя.
6 - определяет тип видеоадаптера.
7 - указывает, заблокирована или нет клавиатура. Данный порт устарел и данные, возможно, недостоверны.
Выходной порт контроллера клавиатуры. Доступен по чтению (команда DOH), по записи (команда D1H). Биты:
0 - подсоединен к линии сброса системы, изменение приводит к сбросу.
1 - определяет состояние дополнительной адресной линии А20. 2-3 - значения не определены.
4 - содержит 1, если выходной буфер полон.
5 - равен 1, если входной буфер пуст.
6 • определяет значение линии часов при передаче данных в клавиатуру.
7 - определяет значение линии данных при передаче их в клавиатуру.
Порт состояния входных линий. Значение может быть считано по команде E0H
0 - состояние входной линии часов.
1 - состояние входной линии данных.
2-7 не определены.
Команды контроллера клавиатуры.
Как уже упоминалось, команды передаются через порт 64Н. Если у команды < шествует параметр, то он помещается сразу за посылкой команды в порт 60Н.
Команда 20Н. После этой команды контроллер записывает значение управляющего байта в выходной буфер.
Команда 00Н. Запись управляющего байта контроллера (поместить в порт 60Н). Значение битов:
0 - значение 1 приводит к генерированию прерывания от контроллера клавиатуры» если выходной буфер содержит данные.
1 - обычно 0.
2 - заменяет собой соответствующий бит управляющего регистра контроллера,
3 - при установке в 1, переключатель замка клавиатуры перестает действовать.
4 - при установке в 1 клавиатура отключается.
5 • режим интерфейса. При установке в 1 не выполняется проверка четности, и не преобразуются scan-коды.
6 - бит совместимости.
7-0.
Команда ААН. Внутренний тест контроллера. Если ошибок нет, то в выходной буфер посылается 55h. После данной команды следует восстановить управляющий байт (см. команды 20h и 60h).
Команда АВН. По команде выполняется тест интерфейса между контроллером и клавиатурой. Результат помещается в выходной буфер:
00 - ошибок нет,
01 - сигнал линии часов завис в нижнем положении,
02 - сигнал линии часов завис в верхнем положении,
03 - сигнал линии данных завис в нижнем положении,
04 - сигнал линии данных завис в верхнем положении.
Команда АСН. Выполняется диагностический дамп 16-байтной памяти контроллера, текущего состояния входного и выходного порта, а также слова состояния контроллера. Дамп выдается в виде последовательности scan-кодов. В конце выдается символьная строка, идентифицирующая фирму-изготовитель.
Команда ADH. Блокировка клавиатуры.
Команда АЕН. Разблокировка клавиатуры.
Команда СОН. Чтение входного порта. Значение порта помещается в выходной буфер.
Команда DOH. Чтение выходного порта. Значение порта помещается в выходной буфер.
Команда D1H. Помещает байт в выходной порт контроллера клавиатуры.
Команда ЕОН. Команда предназначена для помещения информации о состоянии входных линий ТО и Т1 из порта состояния входных линий в выходной буфер.
Команды FOH-FFH - сброс выходного порта.
Команды управления клавиатурой.
Команды передаются через входной буфер 60H. Если необходим параметр, то он передается после подтверждения получения команды, Подтверждением того, что клавиатура приняла команду, является чтение процессором из порта 60h байта ответа клавиатуры. Ответ посылается на все команды, кроме ЕЕН и FEH.
Команда EDH. Установка и сброс индикатора состояния. Следующий за командой параметр представляет собой байт, первые 3 бита которого определяют состояние индикаторов, а остальные равны 0:0 - Scrol Lock, I - Num Lock, 2 - Caps Lock.
Команда ЕЕН. На данную команду клавиатура откликается такой же командой (эхо). Используется для диагностики.
Команды EFH, F1H. Недействительные команды.
Команда FOH. Установка или запрос таблицы скан-ющов. Входной параметр: 0 -получить номер таблицы, I - установить таблицу 1,2- установить таблицу 2,3- установить таблицу 3.
Команда F2H. Прочитать идентификатор. Вначале посылается подтверждение, • затем идентификатор • 83АВН.
Команда F3H. Задание частоты повтора кода клавиш и начальной задержки. Используются биты 0-6:
частота = (l+2*b6+b5)*250;
повтор = 4.17*(8+4*b2+2b1+b0)*2*(2*b4+bЗ).
Команда F4H. Включение клавиатуры. После этой команды клавиатура посылает подтверждение, чистит свой внутренний буфер и переходит в состояние ожидания.
Команда F5. По этой команде все характеристики устанавливаются в исходные, зятем клавиатура блокируется и ждет дальнейших команд.
Команда F6h. Аналогична предыдущей, но клавиатура не блокируется.
Команды F7h-FAh. Характер реакции клавиш;
F7h - все клавиши повторяемые,
F8h - все клавиши посылают код нажатия и код прерывания,
F9h - все клавиши посылают только код нажатия,
FAh - все клавиши повторяемые и посылают коды нажатия и Орерыпния.
Команды FBh-FDh. Определение действия отдельных клавиш.
FBh - клавиша повторяемая,
FCh - клавиша посылает код нажатия и прерывания,
FDh - клавиша посылает только код нажатия.
При посылке такой команды следует послать scan-квд клавиши (таблица 3).
Команда FEh. Повторить передачу - клавиатура повторяет передачу.
Команда FFh. Сброс клавиатуры. Выполняется внутренний тест и посылает если все удачно, FCh - ошибка.
В качестве примера работы с клавиатурой ниже мы приводим программу, которая несколько раз периодически зажигает и nушит индикаторы ры клавиатуры.
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAK BEGIN:
MOV AX, DATA
MOV DS,AX
MOV CL,0
MOV COUNT,0
MOV AL,0
/отключить прерывания клавиатур»! на уровне контроллера /прерываний, другие прерывания работают исправно
MOV AL,00000010В
OUT 21H,AL
LOO:
/ждать, когда освободится входной буфер
CALL WAIT_IN_BUF
/послать команду
MOV AL,OEDH
OUT 60H,AL ;ждать подтверждение
CALL WAIT_OUT
IN AL,60H
/правильное ли подтверждение?
CMP AL,OFAH
JN2 ERR1
/теперь ждем, когда можно посылать параметр
CALL WAIT_IN_BUF
MOV AL.00000001B
MOV CL,CL
/переход к следующему индикатору
SHL AL.CL
OR AL,AL
MOV AL,AL
OUT 60H,AL /небольшая задержка
CALL DELAY
INC СL
/все ли индикаторы зажгли?
CMP CL,3
JNZ LOO
MOV CL,0
MOV _AL,0
CALL WAIT_IN_BUF /теперь погасим все индикаторы
MOV AL,OEDH
OUT 60H,AL
CALL WAIT_OUT
IN AL,60H
CMP AL.OFAH
JNZ ERR1
CALL WAIT_IN_BUF
MOV AL, 0
OUT 60H,AL
IMC COUNT ;не пора ли заканчивать?
СМР COUNT,20
JZ END
CALL DELAY
JMP LOO
ERR:
POP AX
ERR1:
MOV AL, 0
OUT 21H,AL
LEA DX,MES
INT 21H
MOV AX,4C01H
INT 21H
END:
MOV AL, 0
OUT 21H,AL
MOV AX,4COOH
INT 21H
;ждать, когда освободится входной буфер
WAIT_IN_BUF PROC
XOR CX,CX Tl:
IN AL,64H
TEST AL,2
LOOPNZ Tl
JNZ ERR
RETN WAIT_IN_BUF ENDP ;ждать, когда заполнится выходной буфер WAIT_OUT PROC
T3:
IN AL,64H
TEST AL,1
JZ ТЗ
RETN WAIT_OUT
ENDP DELAY PROC
XOR CX,CX L
PUSH CX MOV CX,50
LOOP LL2
POP CX
LL2:
LOOP LLl
RETN DELAY
ENDP CODE
ENDS
DATA SEGMENT CL DB ?
AL DB ?
COUNT DW ?
MES db 'Произошла овибка клавиатуры ,13,10,'$'
DATA ENDS
STAK SEGMENT STACK
DB 50 DUP(?)
STAK ENDS
END BEGIN
Кусок нашей лабы по работе с клавиатурой:
new_09h proc ;для работы с клавиатурой
push ax
push bx
push cx
push dx
in al,60h
cmp al,3eh ;скан-код F4
je hotkey_F4
cmp al,42h ;код F8
je hotkey_F8
pop dx
pop cx
pop bx
pop ax
jmp cs:old_09h
…………………………..
hotkey_F8:
in al,61h ;по нажатию F8 звук прекращался
and al,0fch
out 61h,al
and al,7fh ;разрешаем работу клавиатуры
out 61h,al
mov al,20h ; в контролер прерываний команду EOI
out 20h,al
pop dx
pop cx
pop bx
pop ax
iret