Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2011, 22:49   #1
Ирида
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 13
По умолчанию прерывание

Здравствуйте, подскажите, пожалуйста, как осуществить прерывание при нажатии на какую-то кнопку клавиатуры, не используя при этом int16, int21 и т.д. ???
Ирида вне форума Ответить с цитированием
Старый 26.10.2011, 23:34   #2
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию

Написать обработчик прерывания и поставить его на линию irg1. В реальном и защищённом режиме работа с прерываниями будет отличаться.

В реальном режиме:

Код:
;Установка сегментного регистра ES на начало таблицы векторов прерываний
  MOV AX,0H
  MOV ES,AX
  MOV ES:[9H*4],OBRAB_KLAV
  MOV ES:[9H*4+2],CS
;Разрешить прерывания на уровне КПр
  IN AL,21H
  AND AL,0FDH
  OUT 21H,AL
;Разрешить прерывания на уровне процессора
  STI
;Пустой цикл
EMPTY_CIRCLE:
  NOP
  NOP
  JMP EMPTY_CIRCLE
OBRAB_KLAV PROC FAR
EXIT:
...
;EOI
  MOV AL,20H
  OUT 20H,AL
;Выход в DOS
  MOV AH,4CH
  INT 21H
  IRET
В защищённом режиме же нужно работать не с таблицей векторов прерываний, а с таблицей IDT, писать для неё дескрипторы (шлюзы прерываний, ловушек) и потом закидывать адрес на неё и её размер в специальный регистр IDTR. Но это лучше всё же почитать, т.к. код более объёмный.

Последний раз редактировалось Ang15; 26.10.2011 в 23:52.
Ang15 вне форума Ответить с цитированием
Старый 27.10.2011, 04:36   #3
Ирида
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 13
По умолчанию

спасибо,попытаюсь разобраться.
Ирида вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывание VKorablev Паскаль, Turbo Pascal, PascalABC.NET 5 15.04.2011 21:12
прерывание в Си Misha_M. Помощь студентам 2 04.02.2010 20:11
6 прерывание ленусик Фриланс 1 03.06.2008 16:22
6 прерывание ленусик Помощь студентам 5 30.05.2008 16:57