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

Реферат Курсовая Конспект

Системы программирования и операционные системы

Работа сделанна в 2000 году

Системы программирования и операционные системы - Курсовой Проект, раздел Программирование, - 2000 год - Министерство Образования Украины Одесская Государственная Академия Холода Инс...

Министерство образования Украины Одесская государственная академия холода Институт информационных технологий Кафедра Информационных систем Разработка резидентного обработчика прерываний от клавиатуры Курсовой проект по дисциплине Системы программирования и операционные системы Руководитель Ненов А. Д. Исполнитель Ст. гр. 333А Лазанюк А. С. Зач. книжка 983214 Защищн с оценкой личная подпись г. Одесса 2000 г. Содержание 1. Задание.2. Краткие теоретические сведенья 1. Резидентный обработчик прерываний 2. Защита резидентной программы от повторной установки 3. Выгрузка резидентной программы из памяти 4. Перехват прерываний5. Обработчик прерываний6. Прерывания от внешних устройств 12 2.7. Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика.3. Описание программы 1. Описание для пользователя 2. Описание для программиста.3. Листинг программы 4. Рекомендации по улучшению 4. Список используемой литературы 1. Задание Разработка резидентного обработчика прерываний от клавиатуры с подключением до системного. Данный обработчик должен производить запись скэн-кодов всех нажимаемых клавиш, а также фиксировать байт флагов клавиатуры при каждом нажатии.

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

Также программа должна иметь защиту от повторной установки в оперативную память. 2.

Краткие теоретические сведенья

Резидентные поля данных Резидентная часть Точка входа entry программы ... В этом случае в секции инициализации необходимо заполнить соответствую... После отработки функции DOS 31h программа остается в памяти в пассивно... Типичная структура резидентной программы. .

Защита резидентной программы от повторной установки

Если резидентная программа после ее активизации не обращается к старом... Иногда для большей надежности идентификации своей функции резидентная ... Она должна начинаться с вызова прерывания 2Fh с соответствующей функци... Если же нашей программы в памяти нет, то в секции инициализации, помим... Если же вызвана функция F1h с подфункцией 00h, обработчик устанавливае...

Выгрузка резидентной программы из памяти

Следует подчеркнуть, что восстановление векторов представляет в общем ... Размер освобождаемого блока DOS известен, он хранится в блоке управлен... Сегментный адрес этого блока адрес PSP находится в регистре CS. Обнулением регистра СН длина хвоста расширяется на весь регистр СХ, чт... Команда scasb сравнивает в цикле байты хвоста с содержимым AL кодом пр...

Перехват прерываний

IRQ1 INT 9 - прерывание клавиатуры, вызывается при каждом нажатии и от... Именно для этого и применяется механизм аппаратных прерываний - они по... Прерывания от внешних устройств Прерывания от внешних устройств или ап... . Стандартный обработчик этого прерывания выполняет довольно много функц...

Резидентный обработчик прерываний от клавиатуры с подключением до системного обработчика

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

Описание программы

Описание программы 3.1.

Описание для пользователя

Описание для пользователя. При этом фиксируются только нажатия клавиш. Запись происходит при кажд... Программа является резидентной. После этого вы увидите строку Program is DIE, сигнализирующую об успеш... Таким образом, в файл будут записаны все нажатия клавиш вплоть до выгр...

Описание для программиста

Затем вызываем мультиплицированное прерывание int2Fh c функцией F1h и ... После чего происходит вывод строки Program is DIE на экран сигнализиру... Перехват прерывания int09hклавиатура. 2. После запуска процедуры new09h сохраним используемые регистры.

Листинг программы

Листинг программы text segment code assume cstext, dstext org 256 main proc jmp init Поля данных резидентной секции old2fh dd 0 Ячейка для сохранения системного вектора 2Fh old09h dd 0 Ячейка для сохранения системного вектора 09h bufer db 34 dup Буфер для скэн-кодов и флагов клавиатуры sch db 0 Счтчик нажатий клавиш filename db scodef.txt,0 Константа содержащая имя файла с которым работает программа Обработчик от клавиатуры new09h proc Сохраним используемые регистры push ax push bx push cx push dx push ds push cs Настроим DS на наш сегмент для простоты программирования pop ds in al,60h Получим скэн-код клавиши cmp al,80h Проверим, является ли скэн-код кодом нажатия ja exit Нет на выход mov bh,0 0BH mov bl, sch Текущее значения счтчика в BL mov buferbx, al Запишем в буфер скэн-код клавиши inc bl Увеличим смещение буфера push es Сохраним регистр ES mov ax,40h Настроим ES на начало области данных BIOS mov es, ax mov al, es17h Занесм байт флагов клавиатуры в AL pop es Восстановим ES mov buferbx, al Запишем байт флагов в буфер inc bl Увеличим смещение на 1 add sch,2 Счтчик нажатий 2 cmp sch,32 Пора скидывать буфер в файл je go Да на процедуру записи в файл jmp exit Нет на выход go call fil Вызов процедуры записи в файл Восстановим использовавшиеся регистры exit pop ds pop dx pop cx pop bx pop ax jmp csold09h Передадим управление системному обработчику int09h new09h endp Конец процедуры обработчика от клавиатуры Процедура записи в файл скэн-кодов и флагов клавиатуры fil proc push cs Настроим DS на наш сегмент pop ds mov ah,3dh Функция открытия файла mov al,1 для записи mov dx, offset filename DSDX ASCIIZ имени файла int 21h mov bx, ax Дескриптор в ВХ xor cx, cx Отчистим СХ xor dx, dx и DX mov ax,4202h Функция установки указателя в конец файла int 21h mov ah,40h Функция записи в файл mov cl, sch CL количество байт mov dx, offset bufer DSDX адрес буфера int 21h mov ah,3eh Функция закрытия файла int 21h mov sch,0 Обнулим счтчик ret Выход из процедуры fil endp Конец процедуры записи в файл Обработчик мультиплексорного прерывания new2fh proc cmp ah,0f1h Проверим номер функции мультиплексорного прерывания jne out2fh Не наша на выход cmp al,00h Подфункция проверки на повторную установку je inst Да, сообщим о невозможности повторной установки cmp al,01h Подфункция выгрузки je off Да на выгрузку jmp short out2fh Неизвестная подфункция, на выход inst mov al,0ffh Программа уже установлена iret Выход из прерывания out2fh jmp csold2fh Переход в следующий по цепочке обработчик прерывания 2Fh Выгрузим программу из памяти, предварительно восстановив все перехваченные ею векторы Сохраним используемые регистры off push ds push es push dx push ax push bx push cx call fil Вызов процедуры записи в файл содержимого буфера Восстановим использовавшиеся регистры pop cx pop bx pop ax Восстановим вектор 09h mov ax,2509h Функция установки вектора lds dx, csold09h Заполним DSDX int 21h Восстановим вектор 2fh mov ax,252fh Функция установки вектора lds dx, csold2fh Заполним DSDX int 21h Получим из PSP адрес собственного окружения и выгрузим его mov es, cs2ch ES окружение mov ah,49h Функция освобождения блока памяти int 21h Выгрузим теперь саму программу push cs Загрузим в ES содержимое CS, т.е. сегментный адрес PSP pop es mov ah,49h Функция освобождения блока памяти int 21h Восстановим использовавшиеся регистры pop dx pop es pop ds iret Возврат в вызвавшую программу new2fh endp Конец процедуры обработки прерывания 2Fh endres Смещение конца резидентной части программы main endp tail db off Ожидаемый хвост команды flag db 0 Флаг требования выгрузки tabl db 0123456789 Таблица для перевода BCD кода в ASCII time db 25 dup Ячейка для сохранения текущей даты и времени Процедура создания файла divf proc mov ah,3ch Функция создания файла mov cx,0 Без атрибутов lea dx, filename DSDX ASCIIZ имени файла int 21h mov bx, ax Дескриптор в ВХ mov ah,40h Функция записи в файл mov cx, buflen CХ количество байт lea dx, buf DSDX адрес строки int 21h mov ah,3eh Функция закрытия файла int 21h ret Выход из процедуры divf endp Конец процедуры создания файла Процедура открытия файла и записи в него текущей даты и времени div2f proc mov time,0ah Запись в переменную time маркеров mov time1,0dh перехода на следующую строку mov ah,3dh Функция открытия файла mov al,1 для записи mov dx, offset filename DSDX ASCIIZ имени файла int 21h mov bx, ax Дескриптор в ВХ push bx Сохраним дескриптор xor cx, cx Отчистим СХ xor dx, dx и DX mov ax,4202h Функция установки указателя в конец файла int 21h mov ah,02h Функция чтения времени из постоянных CMOS часов реального времени int 1ah Прерывание ввода вывода для времени mov bx, offset tabl DSDX адрес таблицы mov si,2 Установим смещение для переменной time mov ax, cx Часы и минуты сохраним в AX mov cx,12 Установим счтчик сдвига next push ax Сохраним AX shr ax, cl Сдвинем AX на CL and al,0fh Получим номер ячейки в таблице прибавив маску xlat Получим ASCII код числа mov timesi, al Занесм его в переменную time inc si Увеличим на 1 смещение cmp si,4 Смещение 4 je ras Да, переход на метку ras vw sub cl,4 Нет, уменьшим CL на 4 pop ax Восстановим AX cmp cl 4 Сравним CL с -4 jne next Не равно выполним ещ раз jmp ent1 Равно переход на ent1 ras mov timesi, Запишем в переменную time inc si Увеличим на 1 смещение jmp vw Перейдм на метку vw ent1 mov timesi, Запишем в переменную time inc si Увеличим на 1 смещение mov ah,04h Функция чтения даты из постоянных CMOS часов реального времени int 1ah Прерывание ввода вывода для времени mov ax, dx Дату сохраним в AX mov cx,12 Установим счтчик сдвига next1 push ax Сохраним AX shr ax, cl Сдвинем AX на CL and al,0fh Получим номер ячейки в таблице прибавив маску xlat Получим ASCII код числа mov timesi, al Занесм его в переменную time inc si Увеличим на 1 смещение cmp si,10 Смещение 10 je ras1 Да, переход на метку ras1 vw1 sub cl,4 Нет, уменьшим CL на 4 pop ax Восстановим AX cmp cl 4 Сравним CL с -4 jne next1 Не равно выполним ещ раз jmp ent2 Равно переход на ent2 ras1 mov timesi Запишем в переменную time . inc si Увеличим на 1 смещение jmp vw1 Перейдм на метку vw1 ent2 mov timesi,0ah Запись в переменную time маркеров mov timesi1,0dh перехода на следующую строку pop bx Восстановим дескриптор mov ah,40h Функция записи в файл mov cx,20 CХ количество байт mov dx, offset time DSDX адрес строки int 21h mov ah,3eh Функция закрытия файла int 21h ret Выход из процедуры div2f endp Конец процедуры подготовки файла Процедура инициализации init proc mov cl, es80h Получим длину хвоста PSP cmp cl,0 Длина хвоста 0 je live Да программа запущена без параметров xor ch, ch Теперь CXCLдлина хвоста mov di,81h DSSI хвост в PSP lea si, tail DSSI поле tail mov al, Уберм пробелы из начала хвоста repe scasb Сканируем хвост, пока пробелы dec di DI первый символ после пробелов mov cx,3 Ожидаемая длина параметра repe cmpsb Сравниваем введнный хвост с ожидаемым jne live Введена неизвестная команда inc flag Введено off, установим флаг запроса на выгрузку Проверим, не установлена ли уже данная программа live mov ah,0f1h Установим нашу функцию mov al,0 и подфункцию на наличие нашей программы в оперативной памяти int 2fh cmp al,0ffh Программа установлена je installed Да, при наличии запроса на выгрузку е можно выгрузить Сохраним вектор 2fh mov ax,352fh Функция получения вектора 2fh int 21h mov word ptr csold2fh, bx Сохраним смещение системного обработчика mov word ptr csold2fh2,es Сохраним сегмент системного обработчика Заполним вектор 2fh mov ax,252fh Функция установления вектора прерывания 2fh mov dx, offset new2fh Смещение нашего обработчика int 21h Сохраним вектор 09h mov ax,3509h Функция получения вектора 09h int 21h mov word ptr csold09h, bx Сохраним смещение системного обработчика mov word ptr csold09h2,es Сохраним сегмент системного обработчика Заполним вектор 09h mov ax,2509h Функция установления вектора прерывания 09h mov dx, offset new09h Смещение нашего обработчика int 21h mov ah,4eh Функция поиска файла lea dx, filename DSDX ASCIIZ имени файла int 21h cmp ax,12h Файл не найден je creat Да, создадим файл call div2f Нет, вызов процедуры открытия файла и записи в него текущей даты и времени jmp by Переход на метку by creat call divf Вызов процедуры создания файла Выведем на экран информационное сообщение by mov ah,09h Функция вывода на экран lea dx, mes DSDX адрес строки int 21h mov ax,3100h Функция завершиться и остаться резидентным mov dx, endres-main10fh16 Размер в параграфах int 21h installed cmp flag,1 Запрос на выгрузку установлен je unins Да, на выгрузку Выведем на экран информационное сообщение mov ah,09h Функция вывода на экран lea dx, mes1 DSDX адрес строки int 21h Выведем предупреждающий звуковой сигнал mov cx,5 Количество гудков mov ah,02h Функция вывода на экран l mov dl,07h ASCII код зуммера int 21h loop l Повторим CX раз mov ax,4c01h Функция завершения с кодом возврата int 21h unins Перешлм в первую резидентную копию программы запрос на выгрузку mov ax,0f101h Наша функция с подфункцией выгрузки int 2fh Мультиплексное прерывание Выведем на экран информационное сообщение mov ah,09h Функция вывода на экран lea dx, mes2 DSDX адрес строки int 21h mov ax,4c00h Функция завершения программы int 21h buf db SkencodeKlavflag file,0ah,0dh buflen equ -buf mes db Program installed mes1 db Program already installed mes2 db Program is DIE init endp text ends end main 3.4.

Рекомендации по улучшению

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

Список используемой литературы

Список используемой литературы 1. П.И.Рудаков, К.Г.Финогенов Программируем на языке ассемблера IBM PC, Обнинск 1997г. 2. Зубков С.В. Assembler для DOS, Windows и UNIX, Москва 2000г. 3. Богумирский Б.С. Руководство пользователя ПЭВМ, Санкт Петербург 1994г.

– Конец работы –

Используемые теги: системы, программирования, операционные, системы0.07

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Системы программирования и операционные системы

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекция 1. Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем. 1. Понятие операционной системы
Понятие операционной системы... Причиной появления операционных систем была необходимость создания удобных в... Операционная система ОС это программное обеспечение которое реализует связь между прикладными программами и...

История эволюции вычислительных и операционных систем, основные функции, классических операционных систем в процессе эволюции
Первый период гг Ламповые машины Операционных систем нет... Первые шаги в области разработки электронных вычислительных машин были... Вычислительная система выполняла одновременно только одну операцию ввод вывод или собственно вычисления Отладка...

Введение в операционные системы. Определение, назначение, состав и функции операционных систем
Государственное образовательное учреждение высшего профессионального образования... ТОЛЬЯТТИНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СЕРВИСА...

Экзаменационные вопросы к экзамену по дисциплине Операционные системы, среды и оболочки 1. Общие сведения и об операционных системах. Назначение и функции
Общие сведения и об операционных системах Назначение и функции... Операционная система ОС это упорядоченная последоват системных управляющих программ совместно с необходимыми...

Системы программирования и операционные системы
Обработчик должен иметь механизм выгрузки из оперативной памяти встроенный в него самого. Также программа должна иметь защиту от повторной установки в оперативную… Такие программы носят названия программ, резидентных в памяти Terminate and Stay Resident, TSR, или просто резидентных…

Разработка отказоустойчивой операционной системы реального времени для вычислительных систем с максимальным рангом отказоустойчивости
Таким образом, объектом исследования в рамках сетевой отказоустойчивой технологии становится ОСРВ - управляющее программное обеспечение особого… Данная дипломная работа посвящена разработке специализированной распределенной… Для полного освещения выбранной темы были поставлены следующие задачи 1. Провести анализ существующих операционных…

Лабораторная работа №2 по "Основам теории систем" (Решение задач линейного программирования симплекс-методом. Варианты разрешимости задач линейного программирования)
Будем увеличивать , т.к. ее увеличение вызовет большее увеличение функции цели.Предположим, что , тогда Запишем новый опорный план . Все оценки… Теперь базисными переменными являются , а свободными . Для анализа этого плана… Будем увеличивать . Пусть , тогда откуда получаем Все оценки опорного плана должны бытьнеотрицательны, а значит должны…

Операционная система MS DOS. Основные принципы хранения информации на магнитных дисках в MS DOS. Файловая система MS DOS
Размер Кластера NРазмерСектора N 512 байт, где N 2,4,8 и т.д. FAT - Таблица размещения файлов НАКОПИТЕЛИ НА МАГНИТНЫХ ДИСКАХ Магнитные диски… Для работы с Магнитными Дисками используется устройство, называ- емое… Контроллер дисковода вставляется в один из свободных разъемов сис- темной платы IBM PC MotherBoard. Дисковод содержит…

Непротиворечивая система аксиом называется независимой, если никакая из аксиом этой системы не является следствием других аксиом этой системы
При аксиоматическом построении теории по существу все утверж дения выводятся путем доказательства из аксиом Поэтому к системе аксиом предъявляются... Система аксиом называется непротиворечивой если из нее нельзя логически... Если система аксиом не обладает этим свойством она не может быть пригодной для обоснования научной теории...

0.039
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам