Обработка массива: поиск минимума, сортировка - Assembler
Формулировка задачи:
Дано такое условие: Если минимальный элемент вектора является последним элементом вектора, то отсортировать элементы вектора по убыванию. Как я понимаю по условию задачи я должен найти минимальный элемент и его индекс, потом выяснить этот индекс является последним или не последним, а если последний то отсортировать по убыванию. Как это реализовать у меня это "хромает". Знаю только как минимум находить в этом коде (ниже).
Dseg segment para public 'data' mas db -1,3,5,2,-7 n dw 5 min db ? Dseg ends Sseg segment para stack 'stack' dw 30 dup(0) Sseg ends Cseg segment para public 'code' osn proc near assume c s:cseg,ds:dseg,ss:sseg mov a x,dseg mov d s,ax mov cx,n ;cx=n mov al, mas ;al=mas[0] mov di,0 ;di=0 start: cmp al, mas[di] jle met mov al, mas[di] met: inc di loop start mov min, al mov ax, 4c00h int 21h osn endp cseg ends end osn
и как поменять местами первый и минимальный элементы вектора. (с последним не знаю)
Dseg segment para public 'data' mas db -1,3,5,2,-7 n dw 5 min db ? imin dw ? Dseg ends Sseg segment para stack 'stack' dw 30 dup(0) Sseg ends Cseg segment para public 'code' osn proc near assume c s:cseg,ds:dseg,ss:sseg mov a x,dseg 35 mov d s,ax mov cx,n ;cx=n mov al, mas ;al=mas[0] mov si,0 mov di,0 ;di=0 start: cmp al, mas[di] jle met mov al, mas[di] mov si,di met: inc di loop s tart mov min, al mov imin,si mov di, 0 mov bl, mas[di] mov mas[di],al mov mas[si],bl mov ax, 4c00h int 21h osn endp cseg ends end osn
Решение задачи: «Обработка массива: поиск минимума, сортировка»
textual
Листинг программы
mov ax, imin cmp ax, n je Sort
Объяснение кода листинга программы
- Значение переменной
imin
загружается в регистрax
. - Значение переменной
n
сравнивается с содержимым регистраax
. - Если оба значения равны, выполняется переход к метке
Sort
для выполнения сортировки массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д