Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 13

Аварийный выход из буфера клавиатуры по тайм-айту

02.05.2012, 15:54. Показов 1164. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Обьясните, пожалуйста, как реализовать код выхода из проверки регистра статуса контроллера клавиатуры по тайм-айту, если контроллер клавиатуры (допустим, неисправен) и не может считать информацию из буфера и соответсвенно 1 байт регистра статуса всегда останется "1", что создаст вечный цикл.

Исходный код...

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
begin
       asm
      @M1: 
      IN AL, 64h        //Перед обращением к клавиатуре, BIOS
      AND AL, 00000010b //проверяет регистр статуса, что никакая
      JNZ @M1           //клавиша не нажата и буфер не переполнен                   
 
      MOV AL, 0F5h      //Команда отключения сканирования клавиатуры
      OUT 60h, AL       //Запись данных в Input RG контроллера
 
      MOV AX, 40h       //Передача адреса в сегмент данных
      MOV DS, AX
      MOV BL, [6Ch]     //Чтение системного времени (по адресу 46Ch)
      ADD BL, 180       //Увеличение времени на 10 секунд
      @M3: 
      CMP BL, [6Ch]     //Сравнение ожидаемого значения с текущим
      JNE @M3
 
      @M2: 
      IN AL, 64h
      AND AL, 00000010b
      JNZ @M2
 
      MOV AL, 0F4h      //Команда разрешения приёма данных клавиатуры
      OUT 60h, AL       //Запись данных в Input RG контроллера
       end
end.
Необходимо организовать выход из данного цикла по тайм-ауту...
@M1:
IN AL, 64h
AND AL, 00000010b
JNZ @M1


Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2012, 15:54
Ответы с готовыми решениями:

Аварийный выход
Каждый день 1С говорит, чт опроизошел аварийный выход из программы и необходима индексация. Как отследить нарушителей, или, может, причина...

аварийный выход из цикла for
в цикле for пишу файл в ком порт. если ответа из порта нет после очередного пакета - как выйти из цикла? у меня все равно доходит цикл до...

Чем можно заменить Аварийный выход
procedure poisk; // Процедура поиска жильца var s0, s1: string; i: integer; fnd: boolean; begin fnd:= false; ...

6
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
02.05.2012, 17:08
Используй функцию чтения системного времени. Вначале читаешь, плюсуешь таймаут и в каждом проходе цикла получаешь текущее время и сравниваешь его со специальным. Если >=, то выходишь. Номер функции забыл.

Добавлено через 2 минуты
Или пишешь резидент таймера, который считает, скажем 182 раза (т.е 10 сек) без действий (стартуется при начале просчетов), а затем выводит на седьмую видеостраницу код в угол, скажем 3101h, В каждом просчете цикла программа сравнивает данные на 7 видеостранице в углу и если код равен, то выходит и все.
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 13
02.05.2012, 17:20  [ТС]
Цитата Сообщение от programmisto Посмотреть сообщение
Используй функцию чтения системного времени. Вначале читаешь, плюсуешь таймаут и в каждом проходе цикла получаешь текущее время и сравниваешь его со специальным. Если >=, то выходишь. Номер функции забыл.
Спасибо за ответ. А как лучше выход сделать...всмысле куда? Сразу end?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
02.05.2012, 17:31
Int 20h вызывай и все.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
02.05.2012, 18:08
Technus, Можно повесить свой обработчик на int 1Ch, которой будет только декрементировать заданную ячейку до 0. Перед опросом порта задаёте таймаут, в цикле проверяете, не истёк ли таймаут. Примерчик обработчика тут.

programmisto, Изыди, троллятина, надоел.
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 13
02.05.2012, 18:12  [ТС]
Цитата Сообщение от Charles Kludge Посмотреть сообщение
programmisto, Изыди, троллятина, надоел.
А разве вариант от programmisto не подходит?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
03.05.2012, 06:18
Цитата Сообщение от Charles Kludge Посмотреть сообщение
programmisto, Изыди, троллятина, надоел.
Сам надоел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2012, 06:18
Помогаю со студенческими работами здесь

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

СМА CANDY HOLIDAY 804R аварийный слив, нет блокировки и сразу аварийный слив
Доброе время суток, при включении не происходит блокировки замка, включается аварийный слив. Вся переферия проверена, выкладываю прошивку....

С клавиатуры вводятся символы, записать в память последние три латинские буквы из буфера клавиатуры
Написать программу в учебной модели ЭВМ С клавиатуры вводятся 10 символов, записать в память, начиная с 60 адреса последние три...

С клавиатуры вводятся 7 символов,записать в память,начиная с 60 адреса все строчные латинские буквы из буфера клавиатуры
Здравствуйте, помогите пожалуйста!!! С клавиатуры вводятся 7 символов,записать в память,начиная с 60 адреса все строчные латинские буквы...

Очистка буфера клавиатуры
Добрый день. Начал писать тетрис. Возникла проблема с обработкой нажатий клавиш. Если часто нажимать на клавиши, то определенные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru