В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции - Assembler
Формулировка задачи:
Вот мое задание:
В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции.
Прошу вас помочь мне. Я понимаю что это скорее всего элементарщина,но мне нужна помощь.P.S
Желательно алгоритм и код!Решение задачи: «В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции»
textual
Листинг программы
text_line_1 db 'Welcome to hell!', 0 ; строка, в которую надо вставить строку. text_line_2 db 'Cyberforum.ru ', 0 ; строка, которую надо вставить. text_line_3 db 31 dup (0) ; буфер, для готовой строки. position = 10 ; позиция, с которой надо вставить строку.
Объяснение кода листинга программы
- Объявляются три строки: text_line_1 db 'Welcome to hell!', 0 text_line_2 db 'Cyberforum.ru ', 0 text_line_3 db 31 dup (0)
- Первая строка (text_line_1) содержит исходную строку, в которую необходимо вставить подстроку.
- Вторая строка (text_line_2) содержит подстроку, которую необходимо вставить.
- Третья строка (text_line_3) является буфером для результата. Изначально она заполнена нулевыми символами.
- Объявляется переменная position, которая задает позицию, с которой необходимо начать вставку подстроки.
- Код для вставки подстроки в исходную строку: mov dx, position mov cx, len(text_line_2) mov bx, len(text_line_1) copy_loop: mov al, [text_line_1 + bx] cmp al, 0 jne not_end_of_string mov [text_line_3 + dx], al jmp copy_loop not_end_of_string: mov [text_line_3 + dx], 0 jmp finish_string finish_string: mov bx, len(text_line_2) mov cx, len(text_line_1) sub bx, cx jle not_enough_space mov [text_line_3 + dx - bx], [text_line_2 + bx] jmp done not_enough_space: mov [text_line_3 + dx - bx], 0 jmp done done: ; результат в text_line_3
- Результатом работы программы является строка, полученная после вставки подстроки в исходную строку, которая сохранена в переменной text_line_3.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д