Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2017, 16:48   #1
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию Сортировка максимальных элементов масства

Добрый день, у меня возникла проблема с написанием программы, а именно сортировка максимальных элементов массива.
Условие самой задачи(найти два максимума в массиве и переставить в обратном порядке элементы массива, находящиеся между этими максимумами). Программа находит 1 и 2 максимум, а вот переставить их с ближайшими элементами не выходит. Подскажите как выполнить задание.
Вот сам код программы:

Код:
.model   small
        .stack  100h
 
        .data
 
len     equ     10
mas     db      '1', '2', '9', '4', '5','0','3','6','8','7', '$'
 
        .code
 
start:  mov     ax, @data
        mov     ds, ax
 
        mov     cx, len ;elements on massiv
        xor     bx, bx  ;0
        xor     ah, ah  ;predidyshii element 0
 
cycl1:  mov     al, mas[bx]     ;zapolnenie mas 
        xchg    al, ah          ;smena mestami tekus4ii s predidyshim
        cmp     ah, al          ;srawnenie tek i predidush
        jb      next2           ;esli zna4enia nizhe 
        mov     si, bx          ;indeks levogo = indeks tekysh
        inc     bx              ;powishenie na 1 
        loop    cycl1
next2:  jcxz    exit            ;na exit
cycl2:  inc     bx              ;powishenie na 1
        mov     al, mas[bx]     ;pro4it tekysh element
        xchg    al, ah          ;smena mestami tekus4ii s predidyshim
        cmp     ah, al          ;srawnenie tek i predidush
        ja      next3           ;perehod if bolwe
        loop    cycl2
next3:  jcxz    exit            ;if no na exit
        mov     di, bx          ;prewii max = tekus4ii element
cycl3:  inc     bx              ;powishenie na 1
        mov     al, mas[bx]     ;pro4it tekysh element
        xchg    al, ah          ;smena mestami tekus4ii s predidyshim
        cmp     ah, al          ;srawnenie tek i predidush
        jb      perest          ;esli zna4enia nizhe
        mov     di, bx          ;prewii max = tekus4ii element
        loop    cycl3
 
perest: ;perestanovka si..di
 
        lea     dx, mas[si]     ;adres pervogo max
        mov     mas+1[di], '$'  ;2 max $
        mov     ah, 9          
        int     21h
 
exit:   mov     ax, 4C00h
        int     21h
 
        end     start
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.05.2017 в 16:51.
flu3xz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]: Сортировка массива, состоящего из максимальных элементов заданных матриц hozer Помощь студентам 2 05.12.2016 23:32
Вектор из максимальных элементов матрицы droopy Помощь студентам 1 12.01.2014 18:59
Определение максимальных элементов массива (С++) Johnny_Grunge Помощь студентам 4 21.01.2012 16:28
количество максимальных элементов в масиве viknik Помощь студентам 3 21.03.2011 09:04
поиск максимальных элементов в массиве radiokarazinec Общие вопросы Delphi 1 26.12.2010 12:53