Обработка массива: поиск минимума, сортировка - 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

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

  1. Значение переменной imin загружается в регистр ax.
  2. Значение переменной n сравнивается с содержимым регистра ax.
  3. Если оба значения равны, выполняется переход к метке Sort для выполнения сортировки массива.

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

15   голосов , оценка 3.667 из 5
Похожие ответы