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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2011, 21:09   #1
mrmrmr
Новичок
Джуниор
 
Регистрация: 23.04.2011
Сообщений: 1
По умолчанию зависает программа - обработчик прерывания

есть программа. выводит на экран Х когда нажата кнопка клавы

Код:
.model small
.386
.stack 100h

.data
old9 dd ?

.code

start:
mov ax,@data
mov ds,ax
mov es,ax
jmp setup

prg proc
  mov ah,2
  mov dl,'X'
  iret
prg endp

setup:

  cli
  mov ax,0h
  mov es,ax
  mov bx,es:[9*4]
  mov word ptr old9,bx
  mov bx,es:[9*4+2]
  mov word ptr old9+2,bx
  mov word ptr es:[9*4],offset prg
  mov es:[9*4+2],cs
  sti

  int 09h

  lds dx,dword ptr old9
  mov ax,2509h
  int 21h

  mov ax,4c00h
  int 21h
end start
тут я вешаю обработчик на девятое прерывание (клавиатурное). программа работает отлично, но стоит только поменять int 09h на
mov ah,01h
int 21h
программа виснет вместе с досом (Х печатает потом виснет)

я ведь правильно понимаю что если я считаю с клавиатуры символ ф-ей 01h то сработает девятое прерывание? т.е эффект должен быть такой же как если вызвать это прерывание из программы напрямую

помогите разобраться

ps tasm, ms-dos

Последний раз редактировалось mrmrmr; 23.04.2011 в 21:13.
mrmrmr вне форума Ответить с цитированием
Старый 01.05.2011, 12:50   #2
UsamaBenLadan
Пользователь
 
Аватар для UsamaBenLadan
 
Регистрация: 01.05.2011
Сообщений: 23
По умолчанию

DOS использует только программное прерывание сервиса клавиатуры int 16h.
А прерывание 9 - аппаратное - его обработчик заносит результаты в специальный буфер, из которого и берет данные int 16h.
Это всё популярно описано в книгах Питера Нортона и компании...
UsamaBenLadan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При второй синхронизации программа зависает bulldog5293 Работа с сетью в Delphi 0 27.11.2010 14:42
Зависает программа DimOn4Ik Общие вопросы Delphi 4 29.05.2010 21:05
Изза потока зависает программа RNT Общие вопросы Delphi 9 10.07.2009 19:15
VB6. Программа зависает при выполнении. Artinka Помощь студентам 2 03.04.2008 00:06