Заполнить массив masm32 - Assembler
Формулировка задачи:
Помогите найти ошибку, пожалуйста?
После ввода первого числа программа аварийно завершается.
.386 .model flat, stdcall option casemap :none ; case sensitive ; ###################################################### include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib ; ###################################################### .data ConsoleTitle db 'Input & Output',0 mas dd 10 dup(?) ; ###################################################### .code ; ###################################################### Main proc LOCAL InputBuffer[128] :BYTE ;буффер для ввода LOCAL InputBuffer2[128] :BYTE ;буффер для ввода LOCAL hOutPut :DWORD ;хэндл для вывода LOCAL hInput :DWORD ;хэндл для ввода LOCAL lpszBuffer :DWORD ;адрес буфера LOCAL nRead :DWORD ;прочитано байт LOCAL nWriten :DWORD ;напечатано байт LOCAL Number :BYTE LOCAL New_Out[128] :BYTE ;устанавливаем титл окна invoke SetConsoleTitle, addr ConsoleTitle ;получаем хэндл для вывода invoke GetStdHandle, STD_OUTPUT_HANDLE mov hOutPut, eax ;получаем хэндл для ввода invoke GetStdHandle,STD_INPUT_HANDLE mov hInput, eax mov ecx, 4 lea esi, mas mass: invoke ReadConsole, hInput, addr InputBuffer, 2, ADDR nRead, NULL mov al, InputBuffer[0] ;Берем первый символ sub al, 30h; преобразуем в число mov bl, 10; нужный множитель mul bl ; умножили на 10 mov bl, al mov al, InputBuffer[1];Берем второй символ sub al, 30h ; преобразуем в число add bl, al ; получаем 1 число mov edx, 0 mov dl, bl mov mas[esi], edx add esi, 4 loop mass invoke Sleep, 15000d ;выход invoke ExitProcess,0 Main endp ; ###################################################### end Main
Решение задачи: «Заполнить массив masm32»
textual
Листинг программы
push ecx ; вместо mov buf, ecx pop ecx ; вместо mov ecx, buf
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д