Записать max элементы из двух массивов в третий - Assembler
Формулировка задачи:
Здравствуйте.
Даны два одномерных массива, А[4], B[4]. Нужно, попарно сравнивая их элементы, записать максимальные в массив С. Ну т.е. результат будет примерно С: 7 8 9 6
В общем, где-то ошибка, думаю в m3 или m4. Посмотрите, пожалуйста. На Asm пишу недолго, т.ч. извините сразу.
Листинг программы
- sseg segment
- db 128 dup(?)
- sseg ends
- dseg segment
- a db 7,4,9,3
- b db 4,8,2,6
- c db 4 dup(?)
- dseg ends
- cseg segment
- assume ds:dseg, cs:cseg, ss:sseg
- start proc far
- m1:
- mov cx,4
- mov al,a[si]
- cmp al,b[si]
- ja m2
- mov bl,b[si]
- mov c[si],bl
- inc si
- loop m1
- m2:
- mov bl,a[si]
- mov c[si],bl
- cmp cx,1
- jz m4
- jmp m3
- m4:
- xor bx,bx
- mov bx,cx
- mov ds,bx
- mov si,0
- m3:
- mov ah,02
- mov dl,c[si]
- add dl,30h
- inc si
- int 21h
- mov ah,02
- mov dx,20h
- int 21h
- mov ah,09
- mov dx,offset c
- int 21h
- end start
- cseg ends
- end
Решение задачи: «Записать max элементы из двух массивов в третий»
textual
Листинг программы
- ; fasm code...
- org 100h
- jmp start
- a db 7,4,9,3
- b db 4,8,2,6
- c db 4 dup(0)
- start: mov cx,4
- mov si,a
- mov di,c
- mov bx,b
- cycle: lodsb
- cmp al,byte[bx]
- jae next
- mov al,byte[bx]
- next: stosb
- inc bx
- loop cycle
- xor ax,ax
- int 16h
- int 20h
Объяснение кода листинга программы
В этом коде:
- Массивы a и b содержат четыре элемента.
- Массив c содержит четыре нулевых элемента, которые будут заменены на максимальные элементы из массивов a и b.
- Переменная start содержит адрес первого элемента массива c.
- Переменная cx содержит количество элементов, которые должны быть скопированы в массив c.
- Цикл while (cx != 0) читает элементы из массива b и сравнивает их с текущим элементом массива a. Если элемент из массива b больше, он записывается в массив c. Затем происходит инкремент индекса элемента в массиве b.
- После завершения цикла программа выводит на экран сообщения об ошибке.
- Затем программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д