Добавление подстроки в строку после заданного символа + перевод с Tasm на intel - Assembler
Формулировка задачи:
В общем, вот такое задание "В исходную строку вставить после заданного символа все символы, предшествующие ему. Оставшуюся часть строки оставить без изменения.". То есть например есть строка abcdefg и символ d, то результат должен быть abcdabcefd. Написал код, чтобы скопировать строку из конкретного числа символов ( в моем случае 4 ). Как сделать поиск определенного символа ( без ввода с клавиатуры ) и вставить в него строку? Заранее спасибо
Листинг программы
- data segment
- s1 db 'test string$'
- s2 db 20 dup (' '),'$'
- s3 db 40 dup (' '),'$'
- data ends
- code segment
- start:
- assume cs:code, ds: data
- mov ax, data
- mov ds, ax
- mov es, ax
- ; cld
- ; mov AL,'r'
- ; mov CX,20
- ; lea DI,s1
- ; repne scasb
- ; jnz exit
- ;dec DI
- ;exit: ret
- cld
- lea si, s1
- lea di, s2
- mov cx, 4 ; номер найденного символа
- rep movsb
- mov ah, 09
- lea dx, s2
- int 21h
- mov ax, 4c00h
- int 21h
- code ends
- end start
Решение задачи: «Добавление подстроки в строку после заданного символа + перевод с Tasm на intel»
textual
Листинг программы
- lea di,Строка
Объяснение кода листинга программы
- Переменная
Строка
содержит исходную строку - Код выполняет следующие действия:
- Получает адрес последней символа строки в переменной
di
(смещение) - Выполняет летучий вызов функции
AddStr
, передавая ей в качестве аргументов:- адрес последней символа строки в переменной
di
- адрес подстроки в переменной
si
- длину подстроки в переменной
cx
- адрес символа, после которого необходимо вставить подстроку, в переменной
dx
- адрес последней символа строки в переменной
- Получает адрес последней символа строки в переменной
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д