На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Сортировка массива
    Привет всем!!!Помогите пожалуйста написать программу, вот условие:
    Расположить отрицательные элементы в заданном векторе по убыванию; элементы вектора двухбайтовые.
    есть код, но только в нём по убыванию положительные числа
    ExpandedWrap disabled
      #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

    Заранее благодарен!!!
      Как-то так попробуйте: (местами неоптимально и на 100% проверял, увы :blush: )
      ExpandedWrap disabled
        #make_COM#
        include 'emu8086.inc'
        ORG 100h
        .data
        mas dw 1,-1800,12,13,-560,14,65,-430    ;три числа (-1800;-560;-430) надо упорядочить
         
        ;X       dw   0
        .code
            mov cx, 1
            mov si, 1
            xor bx, bx ; ибо будем работать только с отрицательными, - быстрый "ноль" пригодится
        cycl1:
            mov ax, mas[si] ; локальный главарь "банды"
            cmp ax, bx      ; сравним с нулём
            jae netAtamana   ; mas[si]>=0, а такие неинтересны.
        ; вот! нашлось место для атамана
            mov cx, si      ;место для атамана
            mov si, 7       ; начинаем искать с дальних уголков
         
            mov ax, mas[si]  ; локальный главарь "банды"
            cmp ax, bx ; сравним с нулём
            jae neInteresen  ; mas[si]>=0, а такие неинтересны.
        ; итак, наш mas[si]<0, а такие и сортируем! Поищем с кем...
            mov di, si
        nano_cycl3:
            dec di ; di = di - 1
            cmp cx, di
            jb  neInteresen ; дошли до "начала"-места.
            cmp mas[di], bx    ; сравним с нулём
            jae nano_cycl3     ; mas[di]>=0, а такие неинтересны.
        ; итак, наш mas[di]<0, а такие - кандидаты! Сравним с главарём...
            cmp mas[di], ax
            jbe nano_cycl3     ; плохой [вернее, не лучший] кандидат
        ; ура, нашли нового!
            xchg mas[di], ax   ; бывшего главаря на [di]-место, [di] - в атаманы.
            xchg mas[si], ax   ; главаря в книгу атаманов
            mov si, di         ; теперь главарь тут
            jmp nano_cycl3     ; отправимся на новые поиски
        neInteresen:
        netAtamana:
            inc si             ; может следующий атаман там будет ?
            cmp si, 7
            jb  cycl1          ; да, ещё есть место
         
            CALL    PTHIS
        DB 13, 10, 'Otsortirovanniy massiv: ', 0
            mov cx,8        
            mov si,0
        cycl4:
            mov ax, 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
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0406 ]   [ 15 queries used ]   [ Generated: 6.10.24, 10:07 GMT ]