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

Объяснение кода листинга программы

  1. Переменная Строка содержит исходную строку
  2. Код выполняет следующие действия:
    • Получает адрес последней символа строки в переменной di (смещение)
    • Выполняет летучий вызов функции AddStr, передавая ей в качестве аргументов:
      • адрес последней символа строки в переменной di
      • адрес подстроки в переменной si
      • длину подстроки в переменной cx
      • адрес символа, после которого необходимо вставить подстроку, в переменной dx

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы