В заданной строке с нулевым завершителем определить символы, входящие в другую строку - Assembler

Узнай цену своей работы

Формулировка задачи:

Записывает первую строку в результирующую , как исправить?
.data 
    
str1 db "qaz123",0
str2 db "war426",0
 res db ?
 
.code
start:
lea esi,str1
lea edi,str2

repnz cmpsb
jne equals

equals: 
    mov ecx,6
    lea esi,str1
    lea edi,res
    L1:
    mov al,[esi]
    mov [edi],al
    inc edi
    inc esi
 
    LOOP L1

end start

Решение задачи: «В заданной строке с нулевым завершителем определить символы, входящие в другую строку»

textual
Листинг программы
    mov si,offset string1; строка в которой делают поиск
    mov cx,lenth_of_string1
    mov bh,0
@@: lodsb
    mov bl,al
    or byte ptr string3[bx],1
    loop @b

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

  1. mov si,offset string1 — в этой строке кода переменная SI получает смещение (offset) строки, в которой нужно выполнить поиск.
  2. mov cx,lenth_of_string1 — в этой строке кода переменная CX получает длину строки, в которой нужно выполнить поиск.
  3. mov bh,0 — в этой строке кода переменная BH получает значение 0.
  4. lodsb — в этой строке кода происходит загрузка байта из строки, начиная с регистра SI, в регистр AL.
  5. mov bl,al — в этой строке кода значение из регистра AL копируется в регистр BL.
  6. or byte ptr string3[bx],1 — в этой строке кода к значению по адресу BX в строке string3 добавляется единица.
  7. loop @b — в этой строке кода выполняется переход к следующей итерации цикла, пока значение в регистре BH не станет равным 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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