Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте za4eti.ru

Компьютеры, Программирование Компьютеры, Программирование     Программирование, Базы данных Программирование, Базы данных

Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл)

Гуашь "Классика", 12 цветов.
Гуашевые краски изготавливаются на основе натуральных компонентов и высококачестсвенных пигментов с добавлением консервантов, не
170 руб
Раздел: 7 и более цветов
Брелок LED "Лампочка" классическая.
Брелок работает в двух автоматических режимах и горит в разных цветовых гаммах. Материал: металл, акрил. Для работы нужны 3 батарейки
131 руб
Раздел: Металлические брелоки
Совок №5.
Длина совка: 22 см. Цвет в ассортименте, без возможности выбора.
18 руб
Раздел: Совки

Министерство образования Украины Одесская государственная академия холода Институт информационных технологий Кафедра «Информационных систем» Разработка резидентного обработчика прерываний от клавиатуры Курсовой проект по дисциплине «Системы программирования и операционные системы»Руководитель Ненов А. Д. Исполнитель Ст. гр. 333А Лазанюк А. С. Зач. книжка № 983214 Защищён с оценкой (личная подпись) г. Одесса 2000 г. Содержание: Задание .2 Краткие теоретические сведенья Резидентный обработчик прерываний .3 Защита резидентной программы от повторной установки .5 Выгрузка резидентной программы из памяти .8 Перехват прерываний 11 Обработчик прерываний 12 Прерывания от внешних устройств .12 Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика .14 Описание программы Описание для пользователя .19 Описание для программиста .20 Листинг программы . .24 Рекомендации по улучшению .32 Список используемой литературы . .33 1. Задание Разработка резидентного обработчика прерываний от клавиатуры с подключением до системного. Данный обработчик должен производить запись скэн-кодов всех нажимаемых клавиш, а также фиксировать байт флагов клавиатуры при каждом нажатии. Обработчик должен иметь механизм выгрузки из оперативной памяти встроенный в него самого. Также программа должна иметь защиту от повторной установки в оперативную память. 2. Краткие теоретические сведенья 2.1. Резидентный обработчик прерываний Большой класс программ, обеспечивающих функционирование вычислительной системы (драйверы устройств, программы шифрации и защиты данных, русификаторы, обслуживающие программы типа элек­тронных блокнотов или калькуляторов и др.), должны постоянно нахо­диться в памяти и быстро реагировать на запросы пользователя или на какие-то события, происходящие в вычислительной системе. Такие программы носят названия программ, резидентных в памяти ( ermi a e a d S ay Reside , SR), или просто резидентных программ. Сделать ре­зидентной можно как программу типа СОМ, так и программу типа ЕХЕ, однако ввиду того, что резидентная программа должна быть мак­симально компактной, чаще всего в качестве резидентных используют программы типа СОМ. Рассмотрим типичную структуру резидентной программы и систем­ные средства оставления ее в памяти после инициализации (рис. 2.1). ex segme 'code' assume CS: ex ,DS: ex org 100h mai proc jmp i i ;Переход на секцию инициализации ; Данные резидентной секции программы . . . e ry: ; Текст резидентной секции программы . . . mai e dp i i proc ;Секция инициализации . . . mov DX, (i i -mai 10Fh)/16;Paзмер в параграфах mov АН,3100h ;функция &quo ;Завершить и оставить в i 21h ; памяти&quo ; i i e dp ex e ds e d mai Рис 2.1. Типичная структура резидентной программы. Программа пишется в формате СОМ, поэтому в ней предусматри­вается только один сегмент, с котором связываются сегментные ре­гистры CS и DS; в начале сегмента резервируется l00h байт дня PSP. При запуске программы с клавиатуры управление передается (в со­ответствии с параметром директивы e d) на начало процедуры mai . Командой jmp сразу же осуществляется переход на секцию инициализа­ции, которая может быть оформлена в виде отдельной процедуры или входить в состав процедуры mai .

В секции инициализации, в частности, подготавливаются условия для работы программы уже в ре­зидентном состоянии. Последними строками секции инициализации вызывается функция DOS 31h, которая выполняет завершение програм­мы с оставлением в памяти указанной ее части. Эта функция не может оставлять резидентными программы размером больше 64 Кб, но многие программы, написанные на ассемблере, соответствуют этому усло­вию. Так как резидентные программы уменьшают объем основной памяти, их все­гда пишут на ассемблере и оптимизируют для достижения минимального размера. Размер резидентной части программы (в параграфах) передается DOS в регистре DX. Опре­делить размер резидентной секции можно, например, следующим обра­зом. К разности смещений mil-mai , которая равна длине резидентной части программы в байтах, прибавляется размер PSP (l00h) и еще число 15 (Fh) для того, чтобы после целочисленного деления на 16 результат был округлен в большую сторону. С целью экономии памяти секция инициализации располагается я конце программы и отбрасывается при ее завершении. Точка входа  mai при загрузке jmp i i . Резидентные  поля данных Резидентная часть Точка входа  e ry программы при вызове . Резидентные  коды ire i i . Секция  инициализации Завершение программы Функция DOS 31h  с составлением в памяти её резидентной части Рис. 2.2 Взаимодействие элементов резидентной программы. Функция 31h, закрепив за резидентной программой необходимую для ее функционирования память, передает управление командному процессору и вычислительная система переходит в исходное состояние. Наличие программы, резидентной в памяти, никак не отражается на хо­да вычислительного процесса, за исключением того, что уменьшается объем свободной памяти. Одновременно в память может быть загруже­но любое число резидентных программ. На рис. 2.2 показаны элементы резидентной программы и их вза­имодействие. Любая резидентная программа имеет по крайней мере две точки входа. При запуске с клавиатуры программы типа .СОМ управление всегда передается на первый байт после PSP (IP=l00h). Поэтому прак­тически всегда первой командой резидентной программы является ко­манда jmp, передающая управление на начало секции инициализации. После отработки функции DOS 31h программа остается в памяти в пассивном состоянии. Для того, чтобы активизировать резидентную программу, ей надо как-то передать управление и, возможно, парамет­ры. Вызвать к жизни резидентную программу можно разными способа­ми, но наиболее употребительным является механизм аппаратных или программных прерываний. В этом случае в секции инициализации не­обходимо заполнить соответствующий вектор адресом резидентной части программы (точка e ry на рис. 2.2). Адрес e ry образует вторую точку входа в программу, через которую осуществляется ее активизация. Очевидно, что резидентная секция программы должна заканчиваться командой выхода из прерывания ire . Поля данных резидентной части программы переместились в начало программы после команды imp. Это довольно естественное место дня резидентных данных, потому что и при первом запуске, и при активизации сюда никогда не будет передано управление.

При заполнении в секции инициализации векторов не возникает проблем с перенастройкой регистра DS, так как в программе типа СОМ все регистры указывают на единственный сегмент програм­мы. В секции инициализации предусмотрен, как это обычно делается, вывод на экран сообщения о загрузке программы в память. После запуска программы она остается в памяти и, активизируясь фактически аппаратными прерываниями от клавиатуры (а более точно – программой BIOS, активизируемой аппаратными прерываниями от клавиатуры). 2.2. Защита резидентной программы от повторной установки Как правило, в секции инициализации загружаются векторы прерываний, через которые будет активизироваться программа. Последними строками секции инициализации вызывается функция DOS 31h, которая выполняет завершение программы с оставлением в памяти ее резидентной части. Если программу запустить с клавиатуры повторно, в память будет загружена и останется резидентной ее вторая копия. Это плохо не только потому, что понапрасну расходуется память, более неприятным является вторичный перехват тех же векторов. Если резидентная программа после ее активизации не обращается к старому содержимому перехваченных ею векторов, то вторая копия полностью лишит первую работоспособности, и тогда повторная загрузка приведет только к расходованию памяти. Если, однако, как это обычно и имеет место, резидентная программа в процессе своей работы передаст управление старому обработчику перехваченного ею прерывания, то новая копия резидентной программы, сохранившая в процессе инициализации адрес первой копии в качестве содержимого перехватываемого вектора, будет при каждой активизации вызывать и первую копию. В результате резидентная программа будет фактически выполняться при каждом вызове дважды. Во многих случаях такое повторное выполнение нарушит правильную работу программы. Поэтому обязательным элементом любой резидентной программы является процедура защиты ее от повторной загрузки, или, как говорят, установки. Наиболее распространенным методом защиты резидентной программы от повторной установки является использование прерывания 2Fh, специально предназначенного для связи с резидентными программами. При вызове этого прерывания в регистре АН задается номер функции (от 00h до FFh), а в регистре AL - номер подфункции (в том же диапазоне). 00h - 7Fh зарезервировано для DOS/Wi dows 0B8h - 0BFh зарезервировано для сетевых функций 0C0h - 0FFh отводится для программ. Для того, чтобы резидентная программа могла отозваться на вызов прерывания i 2Fh, в ней должен иметься обработчик этого прерывания. Фактически все резидентные программы, как системные, так и прикладные, имеют такие обработчики, через которые осуществляется не только проверка на повторную установку, но и вообще связь с резидентной программой: смена режима ее работы или получение от неё в транзитную программу каких-то параметров. Задание действия, которое надлежит выполнить обработчику прерывания 2Fh конкретной резидентной программы, осуществляется с помощью номера подфункции, помещаемого перед вызовом прерывания в регистр AL Таким образом, обработчик прерывания 2Fh резидентной программы должен, прежде всего, проверить номер функции в регистре АН; при обнаружении &quo ;своей&quo ; функции обработчик анализирует содержимое регистра AL и выполняет затребованные действия, после чего командой ire передаст управление вызвавшей его программе.

Это может быть, например, программа, переключающая раскладку клавиатуры, резидентный словарь или программа, выполняющая иные действия по нажатию "горячей" комбинации клавиш. Перехват всех событий в Windows (в том числе и событий от клавиатуры) выполняется с помощью вызова функции SetWindowsHook(). Данная функция регистрирует в системе Windows ловушку (hook) для определенного типа событий/сообщений. Ловушка — это пользовательская процедура, которая будет обрабатывать указанное событие. Основное здесь то, что эта процедура должна всегда присутствовать в памяти Windows. Поэтому ловушку помещают в DLL и загружают эту DLL из программы. Пока хоть одна программа использует DLL, та не может быть выгружена из памяти. Приведем пример такой DLL и программы, ее использующей. В примере ловушка перехватывает нажатие клавиш на клавиатуре, проверяет их и, если это клавиши "+" или "-", посылает соответствующее сообщение в конкретное приложение (окно). Окно ищется по имени его класса ("TForm1") и заголовку (caption, "XXX"). Размер такой DLL в скомпилированном виде будет около 3Кб, поскольку в ней не используются объекты из VCL

1. Чтение, создание, запись и печать текстовых файлов

2. Счета бухгалтерского учета и двойная запись

3. Дурной запах изо рта

4. Чорноморський біосферний заповідник

5. Спадкування за заповітом

6. Швидкість обробки запитів на SQL-серверах укр
7. Запись голоса через микрофон на компьютер
8. "Повстанські республіки" як одна із форм українського повстанського запілля (1943-1945 рр.)

9. Двойная запись операций по бухгалтерским счетам

10. Система счетов бухгалтерского учета. Двойная запись

11. Поліський заповідник

12. Мова запитів SQL

13. Постійні запам’ятовувальні пристрої

14. Створення таблиць за допомогою SQL-запитів в середовищі DELPHI

15. Магнитная запись информации

16. Педагогічні основи розвитку процесів запам’ятовування у молодших школярів

Пеногенератор для минимоек, для пистолета 375 серии.
Пеногенератор для мойки высокого давления ЗУБР предназначен для расширения функциональности моек ЗУБР. Регулировка выхода пены. Большой
1855 руб
Раздел: Мойки высокого давления
Настольная игра "Маленький балансир".
Классическая настольная игра – балансир. Смешные, зеленые лягушата прыгают в пруду, нужно помочь им забраться на кувшинки. Настольная игра
1699 руб
Раздел: Игры на ловкость
Сейф-книга Alparaisa СС0072/1 "Вокруг света", 17х11х5 см.
Размеры: 17х11х5 см. Бокс-сейф в виде книги для хранения мелких ценных вещей. Встроенный замок, запирающийся на ключ. Аксессуары: ключ - 2 штуки.
572 руб
Раздел: Копилки

17. Заповідники Естонії

18. Регіональні особливості природно-заповідного фонду Корюківського району

19. Кримський природний заповідник

20. Роль микроэлементов в обменных процессах растений и на накоплении ими биологически активных веществ (Реферат (обзор литературы) () WinWord 97)

21. Экономическая сказка-реферат "НДС - вражья морда" или просто "Сказка про НДС"

22. Несколько рефератов по культурологии
23. Реферат по научной монографии А.Н. Троицкого «Александр I и Наполеон» Москва, «Высшая школа»1994 г.
24. Разработка контроллера матричной клавиатуры на микроконтроллере К1816ВЕ48

25. Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология

26. Командные файлы

27. Программ-игра «Морской бой», с использованием анимированных графических объектов и возможностью управлять их движением с помощью клавиатуры

28. Реферат по технологии приготовления пищи "Венгерская кухня"

29. Несколько рефератов по Исламу

30. "Камю", "Сартр", "Шопенгауэр", "Ясперс", "Фромм" (Рефераты, доклады по философии)

31. Реферат по информационным системам управления

32. Семь чудес света - древний мир, средние века и наше время (история цивилизации, реферат)

Чехол-органайзер для спинки авто "Happy Baby".
Чехол-органайзер – аксессуар, просто незаменимый во время поездок на автомобиле, благодаря множеству вместительных карманов. Помимо
699 руб
Раздел: Прочее
Детская горка, цвет: красный/желтый, скат 140 см.
Для активного летнего отдыха вам пригодится пластиковая горка Долони. Горка изготовлена из яркого пластика и украсит любую детскую комнату
2200 руб
Раздел: Горки
Магнитная игра для путешествий "Волшебный лес".
Уникальная логическая игра-головоломка для отличного времяпрепровождения и тренировки ума. Имеет компактное игровое поле с магнитными
530 руб
Раздел: Игры на магнитах

33. Кодирующее устройство для ввода информации с клавиатуры

34. реферат

35. Обзорный реферат по творчеству Ф.И. Тютчева

36. Реферат - Социальная медицина (ЗДРАВООХРАНЕНИЕ КАК СОЦИАЛЬНАЯ СИСТЕМА ЧЕЛОВЕЧЕСКОГО ОБЩЕСТВА)

37. Реферат - Физиология (строение и функции гемоглобина)

38. Реферат по менеджменту
39. Реферат монографии А.А. Смирнова Проблемы психологии памяти
40. Сборник рефератов о конфликтах

41. Реферат по экскурсоведению

42. Запуск анимационных и видео-файлов

43. Реферат Евро

44. Реферат о прочитаной на немецком языке литературы

45. Лесные пожары - реферат

46. ДЫХАНИЕ - реферат за 9-й класс

47. Реферат по Мексике

48. Файловая структура диска. Виды файлов и их обозначение

Кружка "Peter Rabbit".
Красивая кружка серии "Peter Rabbit" из меламина с изображением кролика из сказки. Удобная, легкая, противоударная. На дне
594 руб
Раздел: Кружки, стаканы, чашки
Детский велосипед Jaguar трехколесный (цвет: синий).
Детский трехколесный велосипед для малышей от 1 года до 3 лет. Трехколесный велосипед колясочного типа с музыкально-световой кнопкой.
1800 руб
Раздел: Трехколесные
Вешалка для одежды напольная, раздвижная ТД-00017.
Длина: 145 см. Регулируемая высота: 90-155 см. Ширина: 43 см. Количество перекладин: 2. Максимальная нагрузка: 15 кг. Вешалка напольная
1217 руб
Раздел: Вешалки напольные

49. Организация работы с файлами в системе “ТУРБО-ПРОЛОГ”

50. Создать меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu

51. Заражения вирусом программных файлов

52. Кодирующее устройство для ввода информации с клавиатуры

53. Программы скачивания файлов

54. Создать меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu
55. Файл
56. Работа с текстовыми файлами в Visual Basic

57. Описание файлов, создаваемых Дельфи

58. Объект Recordset и текстовые файлы (ASP)

59. Очерк по поводу создания PDF-файлов

60. Обработка последовательных файлов в программе

61. Создание, дополнение и чтение файла данных

62. Починяем файлы…

63. Файл BOOT.INI в Windows XP/NT/2000

64. Анализ входного файла программы и вывод результатов в выходной файл

Столик пеленальный "Фея" (цвет: сиреневый).
Пеленальный столик Фея - отличный вариант для пеленания младенца, который не займет много места в помещении и позволит сохранить больше
2048 руб
Раздел: Пеленальные столики, доски
Набор мисок с синими крышками, 5 предметов.
Разные по размерам и объему миски незаменимы на любой кухне, в них можно не только готовить и хранить салаты и закуски, но также красиво
346 руб
Раздел: Наборы
Планшет для пастелей "Сладкие грезы", А3, 18 листов.
Планшет для пастелей замечательно подходит для художественных техник, таких как пастель, масляная пастель, мел, карандаш или уголь,
420 руб
Раздел: Папки для акварелей, рисования

65. Архивация файлов

66. Виды компьютерной графики и графических файлов

67. Клавиатура как основной элемент компьютера

68. Копирование содержимого Файла 1 в остальные файлы

69. Обработка текстовых файлов

70. Организация виртуального диска. Структура файла-образа виртуального диска
71. Программа для перегляду текстових файлів різного розміру
72. Работа с каталогами и подкаталогами. Работа с файлами

73. Работа с файлами, папками WINDOWS: понятие файла, папки, сохранение, переименование

74. Редагування та фрагментація файлів

75. Управление доступом к дискам, каталогам и файлам

76. Файли config.sys та autoexec.bat

77. Файлы в языке Turbo Pascal

78. Выполнение ввода и вывода информации с носителей. Работа с клавиатурой


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.