Вставить подстроку в строку - Ошибка в коде - Assembler
Формулировка задачи:
Доброй ночи, господа. "В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции" - тема моей программы. Код написала, но мне кажется, что он делает не совсем то, что нужно... В OllyDbg выдает такое, но я не понимаю, что там(
Прошу помочь разобраться в чем соль. Буду очень признательна!
.486 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\kernel32.inc include \masm32\macros\macros.asm includelib \masm32\lib\masm32.lib includelib \masm32\lib\kernel32.lib .data text1 db 'AAAAAA',0 text2 db 'BBB', 0 text3 db 9 dup (0) position = 3 .code start: cld lea si, [text1] ;цепочка источник lea di, [text3] ;цепочка приёмник mov cx, position ;количество элементов для обработки rep movsb cld lea si, [text2] ;цепочка источник lea di, [text3] ;цепочка приёмник mov cx, position ;количество элементов для обработки rep movsb cld lea si, [text1 + position] ;цепочка источник lea di, [text3] ;цепочка приёмник mov cx, 3 ;количество элементов для обработки rep movsb mov ah, 09 lea dx, [text3] int 21h ;выводим строку-приёмник на экран mov ax, 4c00h int 21h end start
Решение задачи: «Вставить подстроку в строку - Ошибка в коде»
textual
Листинг программы
.486 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\kernel32.inc include \masm32\macros\macros.asm includelib \masm32\lib\masm32.lib includelib \masm32\lib\kernel32.lib .data hConsoleOutput HANDLE ? text1 db 'AAAAAA',0 text2 db 'BBB', 0 text3 db 9 dup (0) position = 3 .code start: cld lea esi, [text1] ;цепочка источник lea edi, [text3] ;цепочка приёмник mov ecx, position ;количество элементов для обработки rep movsb cld lea esi, [text2] ;цепочка источник lea edi, [text3] ;цепочка приёмник mov ecx, position ;количество элементов для обработки rep movsb cld lea esi, [text1 + position] ;цепочка источник lea edi, [text3] ;цепочка приёмник mov ecx, 3 ;количество элементов для обработки rep movsb invoke GetStdHandle, STD_OUTPUT_HANDLE mov hConsoleOutput,EAX invoke WriteConsole, hConsoleOutput, offset text3, 16d, NULL, NULL invoke ExitProcess, 0 end start