Добавление подстроки в строку после заданного символа + перевод с 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
- адрес последней символа строки в переменной
- Получает адрес последней символа строки в переменной