Расположить отрицательные элементы в заданном векторе по убыванию - Assembler
Формулировка задачи:
Расположить отрицательные элементы в заданном векторе по убыванию; элементы вектора двухбайтовые.
Заранее спасибо!!
Только в нем по убыванию положительные числа..
#make_COM# include 'emu8086.inc' ORG 100h .data mas db 1,18,12,13,56,14,65,43 X db 0 .code mov cx, 7 mov si, 1 cycl1: push cx mov cx, 8 sub cx, si push si mov si, 7 cycl2: mov al, mas[si-1] cmp mas[si], al jb m1 mov x,al mov al, mas[si[ mov mas[si-1],al mov al,x mov mas[si],al m1: dec si loop cycl2 pop si inc si pop cx loop cycl1 CALL PTHIS DB 13, 10, 'Otsortirovanniy massiv: ', 0 mov cx,8 mov si,0 cycl4: mov al,mas[si] CALL PTHIS DB 13, 10, 'Element:', 0 CALL PRINT_NUM_UNS inc si loop cycl4 exit: ret ;================================= DEFINE_SCAN_NUM DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS ;================================= END
Решение задачи: «Расположить отрицательные элементы в заданном векторе по убыванию»
textual
Листинг программы
mas db 1,18,12,13,56,14,65,43
Объяснение кода листинга программы
- Задана переменная
mas
типаdouble word
(10h) - Переменная
mas
содержит список чисел: 1, 18, 12, 13, 56, 14, 65, 43 - Неизвестно, каким образом числа были размещены в переменной
mas
- Для решения задачи использован алгоритм сортировки выбором (selection sort)
- Переменная
temp
(10h) инициализируется значением 0 - Цикл 8 раз (длина списка минус один)
- В каждой итерации находится минимальный элемент в неотсортированной части списка
- Минимальный элемент меняется местами с первым неотсортированным элементом
- Удаляются повторяющиеся элементы (если они есть)
- Результат выводится на экран (неотсортированный список)