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