спасибо, понял. набросал тестовый код, все работает
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
только...
"меня терзают смутные сомнения"(с) : 

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