model tiny
code1 segment
assume cs:code1,ds:code1,ss:code1,es:code1
org 100h
begin:
mov ax,3
int 10h
mov ax,3509h
int 21h
mov old09o,bx
mov old09s,es
mov ax,2509h
mov dx,offset new09
int 21h
mov ah,9
mov dx,offset mess1
int 21h
mov ah,10
mov dx,offset mess2
int 21h
mov ax,2509h
mov dx,old09o
mov ds,old09s
int 21h
ret
old09o dw ?
old09s dw ?
mess1 db 10,10,13,'Enter a key: $'
mess2 db 120,?,120 dup(?)
new09:
in al,60h
and al,01111111b
push ax
call proc1
proc1 proc
pop ax
mov bx,1030h
mov ah,0
div bh ; ax/bh=(al, ost->ah)
cmp ah,09h
ja @@03
add bl,ah
jmp @@04
@@03:
mov bl,41h
sub ah,0Ah
add bl,ah
@@04:
mov ah,0
div bh ; ax/bh=(al, ost->ah)
cmp ah,09h
ja @@05
mov dx,3030h
add dx,ax
jmp @@06
@@05:
mov dx,4141h
sub ah,0Ah
add dx,ax
@@06:
push dx
mov ah,2
mov dh,10
mov dl,20
mov bh,0
int 10h
pop dx
mov ah,2
mov dl,dh
int 21h
mov dl,bl
int 21h
mov dl,68h
int 21h
; mov dl,0Dh
; int 21h
ret
proc1 endp
code1 ends
end begin
model tiny
.code
org 100h
start:
mov al,0F5h
;начало вывода
mov bx,1030h
mov ah,0
div bh ; ax/bh=(al, ost->ah)
cmp ah,09h
ja @@03
add bl,ah
jmp @@04
@@03:
mov bl,41h
sub ah,0Ah
add bl,ah
@@04:
mov ah,0
div bh ; ax/bh=(al, ost->ah)
cmp ah,09h
ja @@05
mov dx,3030h
add dx,ax
jmp @@06
@@05:
mov dx,4141h
sub ah,0Ah
add dx,ax
@@06:
mov ah,2
mov dl,dh
int 21h
mov dl,bl
int 21h
;конец вывода
; mov ah,0
; int 16h
mov ah,4Ch
int 21h
end start
... аппаратный обработчик клавиатуры выполняет ещё много различных функций важных для ОСи и если Вы их не сделаете, то система может рухнуть. Он должен сбросить контролер клавиатуры-т.е. сказать ему, что событие обработано, также должен ещё быть сброшен контролер обработки аппаратных прерываний, чтобы другие аппаратные прерывания могли дождаться своей очереди;...
Он должен сбросить контролер клавиатуры-т.е. сказать ему, что событие обработано, также должен ещё быть сброшен контролер обработки аппаратных прерываний,
Абель П Ассемблер и Программирование Для Ibm Pc
Абель П Ассемблер и Программирование Для Ibm Pc.txt
Аблязов Р. Программирование на ассемблере на платформе х86-64
Бондарев В.М.Основы программирования
Бурдаев О.В. Иванов М.А. Тетерин И.И. Ассемблер в задачах защиты информации
Витницкий В.Я. Архитектура IBM PC и язык Ассемблера
Вострикова З. Программирование на языке Ассемблера ЕС ЭВМ
Голубь Н. Искусство программирования на Ассемблере
Данкан Р. Профессиональная работа в MS-DOS
Дробушевич Г.А. Справочник программиста
Зубков С. Assembler для DOS, Windows и UNIX
Ирвин К. Язык ассемблера для процессоров Intel
Калашников О. Ассемблер. Это просто
Калашников О.А. Ассемблер - это просто. Учимся программировать (2-е издание, 2011)
Ключи tasm и tlink
Козиол Д., Личфилд Д. Искусство взлома и защиты систем
Крупник А. Ассемблер Самоучитель
Крупник А.Б. Изучаем Ассемблер
Кулаков В. - Программирование на аппаратном уровне_ специальный справочник.
Кулаков В. Программирование дисковых подсистем
Кучеренко В. Ассемблер. Тонкости, хитрости и секреты программирования
Лин В. PDP-11 и VAX-11 Архитектура ЭВМ и программирование на языке ассемблера
Магда Ю. - Ассемблер для процессоров Intel Pentium
Малютин Э.А., Шитов Ю.И. Английский язык для программистов
Марек Р. Ассемблер на примерах. Базовый курс
Морер У. - Язык ассемблера для персонального компьютера Эпл
Мытницкий В. Архитектура IBM PC и язык Ассемблера
Несвижский В. Программирование аппаратных средств в Windows
Нортон П. Персональн компьютер фирмы IBM операционн система MS-DOS 600
Нортон П. Программно-аппаратная организация IBM PC
Нортон П. Работа с жестким диском IBM PC
Нортон П. Соухэ Д. Язык ассемблера для IBM PC
Одиноков В.В. Программирование на ассемблере
Петцольд Ч. Код. Тайный язык информатики
Пильщиков В. Программирование на языке ассемблер IBM PC
Пирогов В. Ассемблер для Windows
Пирогов В. Ассемблер и дизассемблирование
Пирогов В. Ассемблер Учебный курс
Рудаков П.И., Финогенов К.Г. Программируем на языке ассемблера IBM PC (1997)
Салихан Д. BIOS. Дизассемблирование, модификация, программирование
Северов Л.С. Архитектура ЭВМ и язык ассемблера
Сингер М. Мини-ЭВМ РDР-11 - Программирование на языке ассемблера и организация машины
Скляров И. Изучаем Assembler за 7 дней (2010)
Скэнлон Л.Дж. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера
Соколенко П. Программирование SVGA-графики для IBM PC
Спесивцев А.В. Вегнер В.А. Крутяков А.Ю. Серегин В.В Сидоров В.А. Защита информации в персональных ЭВМ
Столяров А.В. Программирование на языке ассемблера NASM для ОС UNIX
Титовский С.В. Языки программирования. Ассемблер
Финогенов К. Самоучитель по системным функциям МС-ДОС
Хоггер К. Введение в логическое программирование
Хогланд Г. МакГроу Г. Взлом программного обеспечения анализ и использование кода
Элфринг Г. - Программирование на языке ассемблера для микроЭВМ
Юров В. Ассемблер Практикум
Юров В. Ассемблер Учебник
Использование программных прерываний внутри аппаратных - запрещено, т.к. у них более низкий приоритет
and al,0fh
PrHDig: add al, 90h
daa
adc al, 040h
daa
push ax ; какое значение регистра AX заносится в стек ?
in al,60h ; в регистр AL заносится полный (8-битный) скен-код нажатой клавиши, не так ли ?
push ax
;-------------------------------------------------------------------------------------
;
in al,61h ; 7-ой читаемый старший бит описывает блокировку (1-да, 0-нет) клавиатуры
mov ah,al ; но здесь этот 7-ой бит при нажатии равен 0, то есть клавиатура разблокирована ?
or al,80h ; это эквивалентно замене 7-ого старшего бита в AL на "1", то есть блокировка клавиатуры
out 61h,al ; здесь клавиатура официально блокируется
xchg ah,al ; здесь в AL в 7-ой старший бит записывается первоначальное значение "0"
out 61h,al ; здесь клавиатура официально разблокировывается
В момент вызова прерывания скан-код будет находиться в порте A (адрес 60h). Поэтому сначала надо этот код прочитать и сохранить на стеке. Затем используется порт B (адрес 61H), чтобы быстро послать сигнал подтверждения микропроцессору клавиатуры. Надо просто установить бит 7 в 1, а затем сразу изменить его назад в 0. Заметим, что бит 6 порта B управляет сигналом часов клавиатуры. Он всегда должен быть установлен в 1, иначе клавиатура будет выключена. Эти адреса портов применимы и к AT, хотя он и не имеет микросхемы интерфейса с периферией 8255.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.