78172

Драйвер клавиатуры

Лабораторная работа

Информатика, кибернетика и программирование

При выполнении лабораторной работы мы познакомились с механизмом обработки прерываний системыMSDOS, механизмом обработки прерываний от клавиатуры.

Русский

2017-10-18

59 KB

2 чел.

Драйвер клавиатуры

Цель

Разработать обработчик прерываний от клавиатуры для ОСMS-DOS.

Лабораторное задание

На языке ассемблера составить программу, выполняющую следующие функции управления клавиатурой:

  • обpаботка пpеpываний от клавиатуpы;
  • упpавление буфеpом (16 знаков по 2 байта на знак) в области адpесов пpогpаммы;
  • pаспознавание 10 цифp и символа <BK> (Enter);
  • контpоль пеpеполнения буфеpа;
  • вывод из буфеpа символов на экpан.

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

 stseg segment para stack 'stack'

  dw 30h dup(?)

 stseg ends

 dseg segment para public 'data'

 keepcs        dw      0

 keepip        dw      0

 buf_start     dw      0

 buf_end       dw      0

 mybuf         dw      40 dup(0)

 start_mess    db      0dh,0ah,'KeyBoard driver by brigada 7',0dh,0ah,'$'

 kodl          db      0,27,'1234567890-=',8,9

 db      'qwertyuiop[]',13,0

 db      'asdfghjkl;',39,92,0,0

 db      'zxcvbnm,./',0,0,0,32,0,67,66,65

 dseg ends

 cseg segment para public 'code'

  assume cs:cseg,ds:dseg,ss:stseg

 start:

  mov   ax, dseg

  mov   ds, ax

  mov   dx, offset start_mess

  mov   ah,9

  int   21h

cli                    ; Запрещаем прерываение

movax,3509h

int   21h              ; Читаем текущий вектор

movkeepcs,es

movkeepip,bx        ; Сохраняем его

movax,offsetmybuf ; Инициализируем буферPTR

mov   buf_start, ax

  mov   buf_end, ax

  push  ds               ; сохраняем сегмент данных

  mov   ax, seg new_vect ;

  mov   ds, ax

  mov   dx, offset new_vect

  movax,2509h         ;

int   21h              ; устанавливаем новый вектор

popds               ; читаем сегмент данных из стека

sti                    ; разрешаем прерывания

loop1:

movdi,buf_start   ; загрузка начальногоPTR

movdx,buf_end     ; загрузка конечногоPTR

cmpdi,dx          ; сравнениеPTR

jeloop1           ; если равны, то повтор операций

movbx, [di]        ; загрузкаASCII и сканирование

cmp     di, offset mybuf + 40

je      end_reg

adddi, 2           ; изменение начальногоPTR

jmpcont

end_reg:

mov     di, offset mybuf

cont:

movbuf_start,di

moval, ‘/’         ; если введенный символ «/»

cmpal,bl

jepend            ; завершем программу

movdl,bl          ; если введен другой символ, то выводим его

mov     ah, 2

int     21h

jmp     loop1

pend:

pushds               ; Восстановлтваем старый вектор

movdx,keepip

mov   ax, keepcs

  mov   ds, ax

  mov   ax, 2509h

  int   21h

  pop   ds

  movax,4c00h         ; выходим из программы

int   21h

 new_vect PROC FAR

push    ax

push    bx

push    cx

push    dx

push    di

push    es

pushds

;чтение скан-кода

inal,60h            ; чтение скан-кода из порта 60h

mov     bx,ax

in      al,61h

or      al,80h

out     61h,al

and     al,7fh

mov   ax,seg mybuf

moves,ax

; декодирование символа

movax,bx

testal,80h

jnzquit              ; если не ноль, то на выход

mov     bx,seg kodl

mov     ds,bx

mov     bx,offset kodl

xlatb                     ; декодирование

cmpal,0

jequit              ; если код не найден, то на выход

; check buffer

mov     cx, buf_start

mov     di, buf_end

cmp     di,offset mybuf + 40

je      spec

inc     di

inc     di

cmp     cx,di

je      ovflow

dec     di

dec     di

jmp     g_s

 spec:

cmp     cx,offset mybuf

je      ovflow

 g_s:

moves:[di],ax         ; запись отсканированногоASCII в буфер

cmpdi,offsetmybuf + 40

jneno_w               ; если не равны, то наno_w

movdi,offsetmybuf    ; иначеdi присвоить смещениеmybuf

sub     di,2

 no_w: add     di,2

movbuf_end,di       ; изменение смещения конца буфера

quit: pop     ds

pop     es

pop     di

pop     dx

pop     cx

pop     bx

mov     al,20h

out     20h,al

pop     ax

iret

ovflow:

mov ah,02h

mov dl,07h

int 21h

jmp quit

new_vect endp

cseg ends

end start

Вывод

При выполнении лабораторной работы мы познакомились с механизмом обработки прерываний системыMSDOS, механизмом обработки прерываний от клавиатуры.


 

А также другие работы, которые могут Вас заинтересовать

32869. ОБЩЕСТВЕННОЕ СОЗНАНИЕ И ЕГО СТРУКТУРА. ЦЕННОСТИ, НРАВСТВЕННОСТЬ, ИСКУССТВО 28.43 KB
  Структурными элементами общественного сознания являются различные его формы: политическое правовое нравственное религиозное эстетическое научное и философское которые различаются между собой по предмету и форме отражения по социальной функции по характеру закономерности развития а также по степени своей зависимости от общественного бытия. В этом и заключается та исторически сложившаяся функция общественного сознания которая делает его объективно необходимым и реально существующим элементом любого общественного устройства. Элементами...
32870. РЕВОЛЮЦИЯ И РЕФОРМА 79.5 KB
  Современные ученые выделяют несколько видов революции: социальная экономическая политическая культурная идеологическая и т. По Марксу социальные революции являются выражением сущности естественно исторического процесса развития общества. Открытый марксизмом закон социальной революции указывает на объективную необходимость в смене одной общественноэкономической формации другой более прогрессивной. Спенсер сравнивал социальные революции с голодом бедствиями повальными болезнями проявлениями неповиновения и âагитацией разросшейся до...
32871. РУССКАЯ АКСИОЛОГИЯ 49.78 KB
  Проблемы ценностей в философии Человека интересует не просто истина а значение объекта для человека для удовлетворения его потребностей. Философские направления XX в выдвигают проблему ценностей на первый план. Выработка ценностей: Часть ценностей человек приобретает по наследству от тех традиций в которые он попал в результате рождения. Интерпритация всегда есть переплавка старых ценностей в новые установки.
32872. ИЛЬИН Иван Александрович 25.84 KB
  усматривал главный порок Человека началасередины 20 века во внутренней расколотости в противоречии между разумом умом рассудком и чувствами душой сердцем. Но в выборе направления движения и основных целях его он был прав поскольку без обретения свободы преодоление тоталитарного отчуждения человека его освобождение невозможно и немыслимо. искал пути к снятию противоречий к такой схеме их взаимодействий при которой отедельные части оппозиции становятся разными проявлениями одних и тех же проблем в существовании человека. Пол это...
32873. ФИЛОСОФИЯ КАК МИРОВОЗЗРЕНИЕ. ПРЕДМЕТ ФИЛОСОФИИ 37.61 KB
  ПРЕДМЕТ ФИЛОСОФИИ. ОСНОВНОЙ ВОПРОС ФИЛОСОФИИ. Главное отличие философии от всех иных наук заключается в том что философия является теоретическим мировоззрением предельным обобщением ранее накопленных человечеством знаний. Предмет философии шире предмета исследования любой отдельной науки философия обобщает интегрирует иные науки но не поглощает их не включает в себя все научное знание не стоит над ним.
32874. МИФОЛОГИЯ КАК МИРОВОЗЗРЕНИЕ. ПЕРВОБЫТНАЯ МИФОЛОГИЯ. РЕЛИГИЯ КАК МИРОВОЗЗРЕНИЕ 57.06 KB
  Как правило мифы пытаются дать ответ на следующие основные вопросы: происхождение Вселенной Земли и человека; объяснение природных явлений; жизнь судьба смерть человека; деятельность человека и его достижения; вопросы чести долга этики и нравственности. Религия форма мировоззрения основанная на вере в наличие фантастических сверхъестественных сил которые влияют на жизнь человека и окружающий мир. При религиозном мировоззрении для человека характерна чувственная образноэмоциональная а не рациональная форма восприятия...
32875. АНТИЧНАЯ ФИЛОСОФИЯ. ПИФАГОР, СОКРАТ, ПЛАТОН, АРИСТОТЕЛЬ, ДЕМОКРИТ, ЭПИКУР 64.08 KB
  Подобно тому как математик ставит вопрос что такое единица и дает довольнотаки сложное определение этого казалось бы простейшего понятия так и философ с глубокой древности задается проблемой: что такое бытие что значит быть Эта специфика философии проливает известный свет и на вопрос о том почему и когда философия возникает. Философ ставит все это под сомнение но делает это для того чтобы докопаться до подлинных корней из которых растет сама данная традиция; в этом и состоит смысл его вопроса: что значит быть что такое бытие А...
32876. СРЕДНЕВЕКОВАЯ ФИЛОСОФИЯ. ОТЦЫ ЦЕРКВИ. ВАСИЛИЙ ВЕЛИКИЙ, ГРИГОРИЙ БОГОСЛОВ, ИОАНН ЗЛАТОУСТ, ФОМА АКВИНСКИЙ, ГРИГОРИЙ ПАЛАМА. РЕАЛИЗМ И НОМИНАЛИЗМ 45.65 KB
  которое признавало Бога в качестве высшего существующего начала а весь окружающий мир Его творения. 50 Можно выделить следующие основные черты средневековой теологической философии: теоцентризм главной причиной всего сущего высшей реальностью основным предметом философских исследований являлся Бог; изучению самого по себе космоса природы явлений окружающего мира уделялось мало внимания так как они считались творением Бога; господствовали догматы истины не нуждающиеся в доказательствах о творении всего Богом и откровении...
32877. Географическая среда в развитие общества. Географическое направление в обществоведении 41.93 KB
  Географическая среда в развитие общества. В более узком смысле это часть материи за исключением общества т. Географическая среда имеет историческую обусловленность и расширяется с развитием общества. Географическая среда является важным фактором развития общества: Она влияет на разделение труда на размещение отраслей производства что изучается экономической географией; Она влияет на темпы развития общества может быть боле или менее благоприятной; Она опосредованно влияет на характер политических систем что изучается...