спасибо, понял. набросал тестовый код, все работает
start:
invoke GetStdHandle, STD_OUTPUT_HANDLE ;получаем дескриптор экрана
mov stdout, eax
xor eax, eax
MainLoop:
invoke GetAsyncKeyState, 26h ;проверяем не нажата ли клавиша Up
cmp eax, -32767d
je up
invoke GetAsyncKeyState, 28h ;проверяем не нажата ли клавиша Down
cmp eax, -32767d
je down
invoke GetAsyncKeyState, 25h ;проверяем не нажата ли клавиша Left
cmp eax, -32767d
je left
invoke GetAsyncKeyState, 27h ;проверяем не нажата ли клавиша Right
cmp eax, -32767d
je right
invoke GetAsyncKeyState, 1Bh ;проверяем не нажата ли клавиша Esc
cmp eax, -32767d
je escape
invoke Sleep, 100 ; задержка в 0,1 сек
jmp MainLoop ;опять проверяем клавиши на нажатие
up:
invoke WriteConsoleA, stdout, ADDR UpText,\
6, ADDR cWritten, NULL ; выводим строку на экран
jmp MainLoop
down:
invoke WriteConsoleA, stdout, ADDR DownText,\
6, ADDR cWritten, NULL ; выводим строку на экран
jmp MainLoop
left:
invoke WriteConsoleA, stdout, ADDR LeftText,\
6, ADDR cWritten, NULL ; выводим строку на экран
jmp MainLoop
right:
invoke WriteConsoleA, stdout, ADDR RightText,\
6, ADDR cWritten, NULL ; выводим строку на экран
jmp MainLoop
escape:
invoke ExitProcess, 0
end start
только...
"меня терзают смутные сомнения"(с) :
я загоняю процессор в бесконечный цикл, он работает почем зря. Можно как-то сделать чтоб он ждал нажатия клавиши и реагировал только непосредственно по нажатию?