Записать max элементы из двух массивов в третий - Assembler

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

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

Здравствуйте. Даны два одномерных массива, А[4], B[4]. Нужно, попарно сравнивая их элементы, записать максимальные в массив С. Ну т.е. результат будет примерно С: 7 8 9 6 В общем, где-то ошибка, думаю в m3 или m4. Посмотрите, пожалуйста. На Asm пишу недолго, т.ч. извините сразу.
Листинг программы
  1. sseg segment
  2. db 128 dup(?)
  3. sseg ends
  4. dseg segment
  5. a db 7,4,9,3
  6. b db 4,8,2,6
  7. c db 4 dup(?)
  8. dseg ends
  9. cseg segment
  10. assume ds:dseg, cs:cseg, ss:sseg
  11. start proc far
  12. m1:
  13. mov cx,4
  14. mov al,a[si]
  15. cmp al,b[si]
  16. ja m2
  17. mov bl,b[si]
  18. mov c[si],bl
  19. inc si
  20. loop m1
  21. m2:
  22. mov bl,a[si]
  23. mov c[si],bl
  24. cmp cx,1
  25. jz m4
  26. jmp m3
  27. m4:
  28. xor bx,bx
  29. mov bx,cx
  30. mov ds,bx
  31. mov si,0
  32. m3:
  33. mov ah,02
  34. mov dl,c[si]
  35. add dl,30h
  36. inc si
  37. int 21h
  38. mov ah,02
  39. mov dx,20h
  40. int 21h
  41. mov ah,09
  42. mov dx,offset c
  43. int 21h
  44. end start
  45. cseg ends
  46. end

Решение задачи: «Записать max элементы из двух массивов в третий»

textual
Листинг программы
  1. ; fasm code...
  2. org 100h
  3. jmp start
  4.  
  5. a  db  7,4,9,3
  6. b  db  4,8,2,6
  7. c  db  4 dup(0)
  8.  
  9. start: mov   cx,4
  10.        mov   si,a
  11.        mov   di,c
  12.        mov   bx,b
  13.  
  14. cycle: lodsb
  15.        cmp   al,byte[bx]
  16.        jae   next
  17.        mov   al,byte[bx]
  18. next:  stosb
  19.        inc   bx
  20.        loop  cycle
  21.  
  22.        xor   ax,ax
  23.        int   16h
  24.        int   20h

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

В этом коде:

  1. Массивы a и b содержат четыре элемента.
  2. Массив c содержит четыре нулевых элемента, которые будут заменены на максимальные элементы из массивов a и b.
  3. Переменная start содержит адрес первого элемента массива c.
  4. Переменная cx содержит количество элементов, которые должны быть скопированы в массив c.
  5. Цикл while (cx != 0) читает элементы из массива b и сравнивает их с текущим элементом массива a. Если элемент из массива b больше, он записывается в массив c. Затем происходит инкремент индекса элемента в массиве b.
  6. После завершения цикла программа выводит на экран сообщения об ошибке.
  7. Затем программа завершается.

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


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

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

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

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

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

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