Консольное приложение определения координат точки на экране - Assembler
Формулировка задачи:
Задание:
Создать консольную программу, которая определяет координаты мыши на экране. В программе должны быть:Проблема в том, что выдается куча ошибок. Как их можно исправить?
- строка с сообщением «координаты мыши»
- возможность задания координат сообщения.
- возможность задания Ф.И.О.
.386P .MODEL FLAT, STDCALL STD_OUTPUT_HANDLE equ -11 STD_INPUT_HANDLE equ -10 KEY_EV equ 1h MOUSE_EV equ 2h EXTERN WriteConsoleA@20:NEAR EXTERN SetConsoleCursorPosition@8:NEAR EXTERN SetConsoleTitleA@4:NEAR EXTERN FreeConsole@0:NEAR includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib COOR STRUC X WORD ? Y WORD ? COOR ENDS _DATA SEGMENT DWORD PUBLIC USE32 'DATA' HANDL DWORD ? HANDL1 DWORD ? HANDL2 DWORD ? TITL DB "Mouse event processing",0 BUF DB 200 dup(0) LENS DWORD ? CO DWORD ? FORM DB "Coordinates: %u %u ",0 CRD COOR <?> STR1 DB "To exit press ESC.",0 MOUS_KEY WORD 19 dup(?) STR2 DB "Full Name" ,0 _DATA ENDS _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: CALL FreeConsole@0 CALL AllocConsole@0 PUSH STD_INPUT_HANDLE CALL GetStdHandle@4 MOV HANDL1,EAX PUSH STD_OUTPUT_HANDLE CALL GetStdHandle@4 MOV HANDL,EAX PUSH STD_OUTPUT_HANDLE CALL GetStdHandle@4 MOV HANDL2,EAX PUSH OFFSET TITL PUSH OFFSET TITL CALL CharToOemA@8 PUSH OFFSET TITL CALL SetConsoleTitleA@4 PUSH OFFSET STR1 PUSH OFFSET STR1 CALL CharToOemA@8 PUSH OFFSET STR1 CALL LENSTR PUSH 0 PUSH OFFSET LENS PUSH EBX PUSH OFFSET STR1 PUSH HANDL CALL WriteConsoleA@20 LOO: MOV CRD.X,35 MOV CRD.Y,40 PUSH CRD PUSH HANDL CALL SetConsoleCursorPosition@8 PUSH OFFSET CO PUSH 1 PUSH OFFSET MOUS_KEY PUSH HANDL1 CALL ReadConsoleInputA@16 CMP WORD PTR MOUS_KEY,MOUSE_EV JNE LOO1 MOV AX,WORD PTR MOUS_KEY+6 MOVZX EAX,AX PUSH EAX MOV AX,WORD PTR MOUS_KEY+4 MOVZX EAX,AX PUSH EAX PUSH OFFSET FORM PUSH OFFSET BUF CALL wsprintfA ADD ESP,16 PUSH OFFSET BUF PUSH OFFSET BUF CALL CharToOemA@8 PUSH OFFSET BUF CALL LENSTR PUSH 0 PUSH OFFSET LENS PUSH EBX PUSH OFFSET BUF PUSH HANDL CALL WriteConsoleA@20 JMP LOO LOO1: CMP WORD PTR MOUS_KEY,KEY_EV JNE LOO CMP BYTE PTR MOUS_KEY+14,27 JNE LOO CALL FreeConsole@0 PUSH 0 CALL ExitProcess@4 RET LENSTR PROC ENTER 0,0 PUSH EAX CLD MOV EDI,DWORD PTR [EBP+08H] MOV EBX,EDI MOV ECX,100 XOR AL,AL REPNE SCASB SUB EDI,EBX MOV EBX,EDI DEC EBX POP EAX LEAVE RET 4 LENSTR ENDP _TEXT ENDS END START
Решение задачи: «Консольное приложение определения координат точки на экране»
textual
Листинг программы
EXTERN AllocConsole@0:NEAR EXTERN GetStdHandle@4:NEAR EXTERN CharToOemA@8:NEAR EXTERN ReadConsoleInputA@16:NEAR EXTERN wsprintfA:NEAR EXTERN ExitProcess@4:NEAR
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д