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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2016, 21:41   #1
Swatq
Пользователь
 
Регистрация: 16.05.2016
Сообщений: 13
По умолчанию Сортировка массива пузырьковым методом

Здравствуйте! Извините за наглость, просто в университете задали задачу, а в ассемблере не слишком шарю, больше веб разработкой занимаюсь Помогите выполнить задачу:
Написать программу сортировки массива пузырьковым методом, элементы массива ввести с клавиатуры (количество элементов 16), отсортированный массив записать в файл. На экран вывести наибольшие и наименьшие елемпенты массива.
Swatq вне форума Ответить с цитированием
Старый 17.05.2016, 05:15   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Swatq, наработки есть какие-нибудь? На чём остановился?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 17.05.2016, 13:18   #3
Swatq
Пользователь
 
Регистрация: 16.05.2016
Сообщений: 13
По умолчанию

есть вот такой код, нужно в нем вводить элементы массива с клавиатуры, сортировать пузырем, отсортированный массив записать в файл, и вывести на экран наибольшее и наименьшее значения.
но я не знаю как это сделать так вообще не шарю в ассемблере.
Код:
org 100h
jmp start
 
array   db  'c a 1 b 2 e E 2 0 d 6 w 4 ','$'
len     =   ($ - array)-1     ;
fName   db  'array.txt',0      ; имя файла
 
start:                        ;
       mov   ah,9             ; покажем массив на экране
       mov   dx,array         ;
       int   21h              ;
 
       mov   ah,3Ch           ; создать файл!
       mov   dx,fName         ;
       mov   cx,20h           ;
       int   21h              ;
       xchg  ax,bx            ;
       mov   ah,40h           ; запись в файл!
       mov   cx,len           ;
       mov   dx,array         ;
       int   21h              ;
       mov   ah,3Eh           ; закрыть файл!
       int   21h              ;
;-----------------------------------------------------------------------
       mov   cx,len           ; сортировка массива -------------------//
       dec   cx               ;
       mov   si,array         ;
       mov   di,si            ;
sort:  push  cx di si         ;
       xor   bx,bx            ; флаг перестановок
flag:  lodsw                  ;
       cmp   ah,al            ;
       jae   @@1              ;
       inc   bx               ;
       xchg  ah,al            ;
@@1:   stosw                  ;
       dec   si               ;
       dec   di               ;
       loop  flag             ;
       pop   si di cx         ;
       or    bx,bx            ; перестановки были?
       jnz   sort             ;
;-----------------------------------------------------------------------
       mov   al,10            ; выводим отсортированный массив на экран
       int   29h              ;
       mov   ah,9             ;
       mov   dx,array         ;
       int   21h              ;
 
exit:
       xor   ax,ax            ;
       int   16h              ;
       int   20h              ;
Swatq вне форума Ответить с цитированием
Старый 17.05.2016, 13:27   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Ну.., всё-же правильно. Только сперва отсортируй, а потом записывай в файл:

Код:
;== FASM code =======================
org 100h
jmp start

mes0   db   13,10,' ARRAY:  $'
mes1   db   13,10,'SORTED:  $'
buff   db   16 dup(0)
fName  db   'array.txt',0

start:
;------ Заполняем буфер данными -------------------------------------
       mov   dx,mes0             ;
       call  message             ;
       mov   cx,16               ; всего элементов
       mov   di,buff             ;
       mov   ah,1                ;
@1:    int   21h                 ;
       stosb                     ; запись в ES:DI
       loop  @1                  ;

;------ Сортировка массива ------------------------------------------
       mov   dx,mes1             ;
       call  message             ;
sort:  mov   si,buff             ; источник,
       mov   di,si               ;     ..он-же приёмник
       mov   cx,16               ;
       xor   bx,bx               ; флаг перестановок
next:  lodsw                     ; берём 2-соседнии элемента
       cmp   ah,al               ; сравниваем их
       jae   miss                ;
       xchg  ah,al               ; перестановка если меньше
       inc   bx                  ; флаг +1
miss:  stosw                     ; перезапись элементов
       dec   si                  ; шаг назад
       dec   di                  ;
       loop  next                ; мотаем 16 раз..
       or    bx,bx               ; перестановки были?
       jnz   sort                ; да - начинаем всё сначала

;------ Выводим отсортированный массив на экран ---------------------
       mov   cx,16               ;
       mov   si,buff             ;
print: lodsb                     ;
       int   29h                 ;
       loop  print               ;

;------ Запись массива в файл ---------------------------------------
       mov   ah,3Ch              ; создать файл!
       mov   cx,20h              ; атрибут
       mov   dx,fName            ;
       int   21h                 ;
       xchg  bx,ax               ; отправляем дескриптор в BX
       mov   ah,40h              ; запись в файл!
       mov   cx,16               ; кол-во байт для записи
       mov   dx,buff             ; буфер с данными
       int   21h                 ;
       mov   ah,3Eh              ; закрыть файл!
       int   21h                 ;

exit:  xor   ax,ax               ; выход..
       int   16h                 ;
       int   20h                 ;

;ннннннннннннннннн П Р О Ц Е Д У Р Ы нннннннннннннннннннннннннннннннннннн
;------------------------------------------------------------------------
message:                      ;
      mov   ah,9              ; вывод строки на экран
      int   21h               ;
ret                           ;
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 17.05.2016, 14:00   #5
Swatq
Пользователь
 
Регистрация: 16.05.2016
Сообщений: 13
По умолчанию

Большое спасибо! А как вывести наибольший и наименьший элементы массива?
Swatq вне форума Ответить с цитированием
Старый 17.05.2016, 16:09   #6
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Бери в отсортированном массиве первый и последний элементы. Я вывел его весь..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 17.05.2016, 17:27   #7
Swatq
Пользователь
 
Регистрация: 16.05.2016
Сообщений: 13
По умолчанию

а благодарю, понял.
Swatq вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cортировка массива пузырьковым методом Оксана33 Общие вопросы по Java, Java SE, Kotlin 6 26.09.2015 07:25
Сортировка методом включением массива СИ DimaNIKul Помощь студентам 0 12.05.2013 14:42
Сортировка массива методом пузырька SashaBogush Помощь студентам 0 11.08.2012 15:08
Сортировать список пузырьковым методом Lunatik Помощь студентам 3 13.05.2009 13:30