|
|
|
|
|
|
|
|
страницы:
1
2
3
Текущая страница: 1
|
|
Институт Переподготовки Кадров Уральского Государственного Технического Университета
Кафедра микропроцессорной техники
Оценка работы
Члены комиссии
ПРОГРАММА – РЕЗИДЕНТ ПЕРЕКЛЮЧАТЕЛЯ АЛЬТЕРНАТИВНОЙ КОДИРОВКИ
Курсовая работа
Пояснительная записка
Руководитель к.т.н. доцент В. П. Кулюкин
Слушатель Группа СП-913 А. А. Соколов
ЕКАТЕРИНБУРГ 1997
Содержание
ПОСТАНОВКА ЗАДАЧИ...................- ВВЕДЕНИЕ............................3 1. ОПИСАНИЕ ПРОГРАММЫ...............4 1.1 ОБРАБОТКА 09h...................7 1.2 ОБРАБОТКА 10h...................9 ЗАКЛЮЧЕНИЕ..........................10 БИБЛИОГРАФИЧЕСКИЙ СПИСОК ...........11 ПРИЛОЖЕНИЕ 1 ТЕКСТ ПРОГРАММЫ........12
ВВЕДЕНИЕ
С самого начала существования IBM совместимых компьютеров встала проблема вывода на экран и ввода с клавиатуры символов кириллицы. Только начиная с версии MS DOS 6.0 появилась поддержка национальной 866 страницы. До появления версии MS DOS 6.0 проблему решали так называемые программы русификаторы. Эти программы замещали символы дополнительного кодового набора. Делалось это путем подстановки шрифта прошитого в ПЗУ видеоадаптера своим. Эти программы были практически на каждом компьютере. Самыми известными из них являлись ENHFONT, KEYRUSS, LMSCR&LMKEY, KYRILLIC. Был еще один способ решить проблему русификации - перепрограммировать ПЗУ видеоадаптера, но он не нашел большого применения.
ОПИСАНИЕ ПРОГРАММЫ
Поскольку данная программа относиться к типу программ, которые меняют шрифт загружающийся из ПЗУ видеоадаптера, то сначала она открывает файл находящийся в этом же каталоге в котором находиться шрифт 8х16. После этого программа читает 4096 байт и помещает их в буфер. Затем загружаются полученные данные в видеобуфер, другими словами меняется текущий шрифт на новый. Следующий шаг программы это получение, сохранение и установка своих обработчиков 10h и 09h прерываний. После данных операций программа завершает работу и остается резидентной используя 27h прерывание, причем в регистре DX находится первый байт памяти после резидентной части программы. Общая логика работы показана на рис. 1.1 и 1.2
Рис. 1.1 Рис. 1.2
1.1 ОБРАБОТКА INT 09h
Обработка 09h программой представлена на рис. 1.3 и 1.4
Рис. 1.3 Рис. 1.4
1.2 ОБРАБОТКА INT 10h
Обработка 10h программой представлена на рис. 1.5
Рис. 1.5
ЗАКЛЮЧЕНИЕ
Данная программа имеет следующие недостатки: Может использоваться только в ДОС - режиме Клавиша переключающая раскладки неизменяемая Во время работы программы файл со шрифтом должен находиться в том же каталоге, где находится русификатор Файл шрифта должен быть только с именем «8х16.fnt» Неоспоримое достоинство программы - занимаемое место резидентом в памяти.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Абель П. Язык Ассемблера для IBM PC и программирования М.: Высшая школа, 1992. 447с.
Гук М. Аппаратные средства IBM PC СПб.: Питер, 1996. 224с.
ПРИЛОЖЕНИЕ 1
ТЕКСТ ПРОГРАММЫ
.MODEL TINY ; Все сегменты в одном .CODE ; Как ком файл .STARTUP .286 LOCALS ; Близкие переходы JUMPS jmp Install
RSHIFT_SCAN EQU 36h ; RSHIFT scan code FLAGS record inRussian:1,shiftPressed:1,keyPressed:1,reserved:6 iFlags FLAGS <0, 0, 0, 0> STable db 'йцукенгшщзхъфывапpолджэячсмитьбюЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ' Hook09 proc far ;обpабока int 09h push ax push bx push cx push di push ds push es mov ax,cs ;сегмент резидента mov ds,ax ; данные в сегменте кода in al,60h ; ситываем mov ah,al ; и сохраняем cmp al,RSHIFT_SCAN ; ? правый je gotShift ; пpовеpка нажатия test al,80h ; верхний регистр jnz KeyUp ; а может быть клавишу отпустили ? нет ? test [iFlags], MASK inRussian ; выделяем флаг русского набора jz OldHook09 ; если в английском, то стаpый обpаботчик push ax mov ax,40h mov es,ax ; es = сегмент данных BIOS pop ax cmp al,34h ; начало блока тpансляции jg OldHook09 cmp al,2Ch jl check2 sub al,2Ch ; проверка не символьная
Текущая страница: 1
|
|
|
|
|
|
|
|
|
|