Сравнение строк - Assembler (223283)

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

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

Здравствуйте,прошу помощи в решении задачи,хотя бы какие-то идеи. Задача: ввести с клавиатуры две строки одноразрядных чисел. Одна строка источник,вторая-строка приемник.Сравнить строки,первый совпадающий элемент строки источника записать в регистр BP.Остальные элементы строки источника обнулить.

Решение задачи: «Сравнение строк»

textual
Листинг программы
  1. .model small
  2.  
  3. .data
  4. str1 db 1,2,3,4,5
  5. len1 = $-str1
  6. str2 db 6,7,8,3,9
  7. len2 = $-str2
  8.  
  9. .stack 100h
  10.  
  11. .code
  12. start:
  13. mov ax,@data
  14. mov ds,ax
  15. mov es,ax
  16.  
  17. lea si,str1
  18. mov cx,len1
  19. big:
  20. push cx
  21.  
  22. lodsb
  23.  
  24. lea di,str2
  25. mov cx,len2
  26. min:
  27. mov ah,byte ptr [di]
  28.  
  29. cmp al,ah
  30. je same
  31.  
  32. inc di
  33. loop min
  34.  
  35. pop cx
  36. loop big
  37.  
  38. jmp exit
  39.  
  40. same:
  41. add sp,2
  42.  
  43. cbw
  44. mov bp,ax
  45.  
  46. lea si,str1
  47. mov cx,len1
  48. zero:
  49. mov al,byte ptr [si]
  50.  
  51. cmp al,byte ptr [di]
  52. je skip
  53.  
  54. mov byte ptr [si],0
  55.  
  56. skip:
  57. inc si
  58. loop zero
  59.  
  60. exit:
  61. mov ah,4Ch
  62. mov al,00h
  63. int 21h
  64. end start

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

В этом коде сравниваются две строки, представленные в виде массивов байтов. Список действий:

  1. Задаются модели сегмента данных и кода.
  2. Определяются две строки str1 и str2 и две переменные len1 и len2, которые содержат длину строк.
  3. Устанавливается стек размером 100 байтов.
  4. Код начинается с перемещения указателя на сегмент данных в регистр ds.
  5. В цикле big происходит чтение байтов из str1 и сравнение каждого байта с соответствующим байтом из str2 в цикле min.
  6. Если байты совпадают, то в цикле zero происходит очистка байта в str1.
  7. Если байты не совпадают, то в цикл zero не заходится и байт в str1 не очищается.
  8. После окончания циклов выводится сообщение об успешном выполнении программы.

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


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

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

15   голосов , оценка 3.8 из 5

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

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

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