Выходит ошибка Необработанное исключение в "0x0007102f" в "Lab08.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00078000". Как исправить - Assembler
Формулировка задачи:
.586 .model flat, stdcall option casemap :none ; case sensitive ; Раздел подключения библиотек include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib ; Сегмент данных .data x dd 5 src db "ABC " dst db 20 dup(" ") ; Сегмент кода .code main: xor EAX, EAX xor EBX, EBX xor EDX, EDX xor EDI, EDI lea ESI, src mov EDX, x copy proc copying: lea EDI, dst mov ECX, 4 rep movsb dec EDX mov ECX, EDX loop copying copy endp call copy mov AL, " " mov ECX, 14h xor EDI, EDI xor ESI, ESI lea EDI, dst check: scasb je found loop check jmp cont found: inc ESI loop check cont: dec ESI mov EAX, ESI quit: mov eax, 0 invoke ExitProcess, eax end main
Решение задачи: «Выходит ошибка Необработанное исключение в "0x0007102f" в "Lab08.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00078000". Как исправить»
textual
Листинг программы
xor EAX, EAX <-- обнулили EAX xor EBX, EBX <-- обнулили EBX xor EDX, EDX <-- обнулили EDX xor EDI, EDI <-- обнулили EDI lea ESI, src<-- загрузили адрес src mov EDX, x<-- EDX = x copy proc copying: <-- а вот здесь началось самопроизвольное выполнение процедуры сору lea EDI, dst mov ECX, 4 rep movsb dec EDX mov ECX, EDX loop copying copy endp call copy <-- снова выполняем процедуру сору