2013-08-02 7 views
0

MASM 구문을 사용 중입니다. 키보드 키를 누른 다음 나중에 코드에서 사용하기 위해 저장하려고합니다. 사용하려고 시도했습니다. int 21h interrupt하지만 작동하지 않는 것 같습니다. 32 비트.keypress를 관리하십시오.

그 밖의 다른 방법이 있습니까?

감사합니다.

+0

프로그램이 실행되는 환경은 무엇입니까? – duskwuff

+0

Windows7, 32 비트. 이 프로그램은 실제로 콘솔을 기반으로한다고 언급하는 것을 잊어 버렸습니다. –

+0

DosBox와 같은 에뮬레이터에서 프로그램을 실행해야합니다. 또는 대신 Windows 콘솔 응용 프로그램 (인터럽트 대신 Win32 API 사용)을 사용하십시오. – Michael

답변

0

Windows로 전환하려면 GetKeyboardState 기능을 사용하여 하나 이상의 키가 눌러져 있는지 확인하십시오. GetKeyboardState을 사용하는 것보다 더 쉬운 방법은 다음과 같이 사용하는 것입니다.

.486 
.model flat,stdcall 
option casemap : none 

include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
include \masm32\include\msvcrt.inc 
include \masm32\macros\macros.asm 

includelib \masm32\lib\kernel32.lib 
includelib \masm32\lib\msvcrt.lib 

.data? 
key dd ? 

.code 

start: 

printf("Press a key..") 
call crt__getch 
mov key,eax 
printf("\nYou pressed key number %d", key) 

invoke ExitProcess,0 

END start 
+0

crt_getch를 불러주세요. 감사합니다. –