Удаление символа из строки и перезапись в новую строку - Assembler

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

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

Нужно написать программу которая получает две строки и символ и удаляет символ из 1 строки , записывает результат во вторую строку и выводит обе строки на экран. Вот почти рабочий код. Только он почему-то пропускает все символы до указанного "D". Можете подсказать в чём ошибка?
Листинг программы
  1. TITLE Program Template (Stack.asm)
  2. ; Testing PUSH and POP, 16-bit and 32-bit operands
  3. INCLUDE Irvine32.inc
  4. .data
  5. sir1 BYTE "ABCDEFGH",0
  6. sir2 BYTE 100 DUP(?)
  7. .code
  8. main PROC
  9. mov esi,OFFSET sir1 ; Адрес 1 строки
  10. mov edi,OFFSET sir2
  11. ;sirului de scanat
  12. mov ecx,LENGTHOF sir1 ; счётчик
  13. cld ; direction = forward
  14. l1:
  15. cmp byte ptr [esi],'D' ; поиск
  16. jne numuta
  17. mov ebp,esi
  18. inc esi
  19. push esi
  20. push cx
  21. inc cx
  22. m:
  23. mov al,byte ptr [esi]
  24. mov byte ptr [edi],al
  25. inc esi
  26. inc edi
  27. loop m
  28. pop cx
  29. pop esi
  30. numuta:
  31. inc esi
  32. loop l1
  33. mov edx,OFFSET sir2 ;вывод 2 строки
  34. call WriteString
  35. exit
  36. main ENDP
  37. END main

Решение задачи: «Удаление символа из строки и перезапись в новую строку»

textual
Листинг программы
  1. l1:lodsb
  2.    cmp al,'D'
  3.    je l2
  4.    stosb
  5.    l2:loop l1

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

  1. l1 - начало цикла
  2. lodsb - загрузка байта из памяти в регистр AL
  3. cmp al,'D' - сравнение значения регистра AL со символом 'D'
  4. je l2 - если значение регистра AL равно 'D', то переход на метку l2
  5. stosb - запись байта из регистра AL в память
  6. l2 - начало цикла
  7. loop l1 - переход на метку l1
  8. В результате выполнения цикла, в памяти будет новая строка без символа 'D'

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы