Записать 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.
- После завершения цикла программа выводит на экран сообщения об ошибке.
- Затем программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д