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

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

15.06.2012, 21:00. Просмотров 1594. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2012, 21:00
Ответы с готовыми решениями:

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

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

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

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

2
23 / 13 / 47
Регистрация: 23.03.2013
Сообщений: 157
03.07.2016, 15:56 2
Как биос прерывания получения символов так и дос и прямого чтения с буфера ввода - дают правильные результаты, так что проблемы в ваших макросах!
0
Эксперт быдлокодинга
2084 / 518 / 68
Регистрация: 04.11.2010
Сообщений: 1,293
03.07.2016, 21:59 3
Mycola, вы реально думаете что человек создавший тему четыре года назад и заходивший последний раз на форум три года назад, до сих пор мучается этим вопросом?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2016, 21:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.