Форум программистов, компьютерный форум, киберфорум
FASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 0
Регистрация: 15.06.2012
Сообщений: 9
FASM

Макрос ожидания нажатия клавиши

15.06.2012, 21:00. Показов 2550. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу на fasm'е систему макросов. Стал делать макрос ожидания нажатия клавиши без эха.
Синтаксис макроса:
console.waitkey key
вместо key код символа в ASCII. Если key равен нулю, то разрешается нажатие любой клавиши.
console.waitkey 0 работает, а console.waitkey 13 (ожидание нажатия <Enter>) не работает. Кто знает, почему?
Вот мой макрос
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
macro console.waitkey key
{
  local ..waitloop
  .waitloop equ ..waitloop
  stack.set ax
  .waitloop:
      dos 0x08
      cmp al, 0
      je .waitloop
      if key = 0
      else
        cmp al, key
        jne .waitloop
      end if
  stack.get ax
  restore .waitloop
}
Дополнительные макросы:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
macro dos command
{
  push  ax
  mov   ah, command
  int   0x21
  pop   ax
}
macro stack.set [reg]
{
  push reg
}
 
macro stack.get [reg]
{
  pop reg
}

Не по теме:

можно ли сразу догадаться, что это asm?:

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
28
29
30
31
32
include 'GreyAsm16.inc'
 
var hello1 : string = "Hello, world!!! (Press any key...)$"
var hello2 : string = "   it is a inner 'for'.$"
var hello3 : string = "The socond 'for'. (Press any key...)$"   
var press1 : string = "Press any key to exit$"
var for1_min : word = 1
var for1_max : word = 5
var for2_min : word = 1
var for2_max : word = 3
  
start
  set ax = [for1_min], bx = [for1_max]
  for ax to bx
    console.printline hello1
    console.waitkey 0    
    stack.set ax, bx
    set ax = [for2_min], bx = [for2_max]   
    for ax to bx
      console.printline hello2
    for.end    
    stack.get bx, cx  
  for.end  
  console.line  
  for 1 to 5
    console.printline hello3
    console.waitkey 0
  for.end
  console.line
  console.print press1
  console.waitkey 13
finish



Добавлено через 1 час 42 минуты
Неправильно написал. Вообще не работает (зависает) console.waitkey key, где key больше 0

Добавлено через 6 часов 29 минут
Неужели никто не знает?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2012, 21:00
Ответы с готовыми решениями:

Блокирование нажатия клавиши
Добрый день.Пытаюсь разобраться с блокированием нажатия определенных клавиш на клавиатуре.К примеру,пытаюсь заблокировать нажатие клавиши...

Ожидание нажатия клавиши
У меня ниже представлен код. Как сделать что б на указанном участке прорамма приостановилась и ждала нажатия клавиши для дальнейшего...

Побуквенный вывод слова через цикл + ожидания нажатия клавиши (после нажатия очистка и установка курсора на )
строку) Masm32 (com -программа) вообщем столкнулся с проблемой. к примеру ввожу ' LSD49 $' выводится через цикл loop (в ECX -...

2
23 / 13 / 47
Регистрация: 23.03.2013
Сообщений: 157
03.07.2016, 15:56
Как биос прерывания получения символов так и дос и прямого чтения с буфера ввода - дают правильные результаты, так что проблемы в ваших макросах!
0
Эксперт быдлокодинга
 Аватар для Полный 30h
2095 / 529 / 70
Регистрация: 04.11.2010
Сообщений: 1,314
03.07.2016, 21:59
Mycola, вы реально думаете что человек создавший тему четыре года назад и заходивший последний раз на форум три года назад, до сих пор мучается этим вопросом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2016, 21:59
Помогаю со студенческими работами здесь

Реализация ожидания нажатия клавиши в asm
Возможно кто-то сталкивался с данным вопросом ранее, Как реализовать проверку нажатия клавиши к примеру(shift) т.е пока нажата клавиша -...

Нужно найти функцию ожидания нажатия клавиши
Мне нужно, чтобы код выполнялся пока не нажата клавиша, а потом с номером нажатой клавиши продолжать манипулировать. Слышал про что-то...

Вывод текста на экран во время ожидания нажатия клавиши.
Языс C, компилятор Borland C++ 3.1 for DOS. Прошу помочь и ответить на мой вопрос. Я пишу игру, управление в игре стрелками на...

После нажатия клавиши Enter или нажатия на Button
Помогите пожалуйста.:-[ Задача: После нажатия клавиши Enter или нажатия на Button поле курсора переходит в соответствующий компонент...

После нажатия клавиши, не обрабатывать другие клавиши
На форме по нажатию разных клавиш происходят разные вещи, но хочу реализовать паузу по нажатию пробела, т.е. после нажатия пробела, другие...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru