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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2011, 20:05   #1
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
Вопрос Ассемблер_сортировка массива

Здравствуйте. Подскажите пожалуйста как отсортировать массив по возрастанию.
Код:
mas db 13,2,7,6,8,11,0,4,14
.
Числа любые, но фиксировано 9 элементов. Я плохо ориентируюсь в яз. низкого уровня и до меня пока дошло только как найти min. Как получить mas_new, содержащий отсортированный mas не могу никак понять. Подскажите, спасибо.
pupilMartyr вне форума Ответить с цитированием
Старый 09.09.2011, 12:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как отсортировать массив по возрастанию.
да так же, как и в ЯП высокого уровня.
Берёте любой алгоритм сортировки (например, самый простой и столь любимый студентами, школьниками, да и не только ими - сортировка методом простого выбора (она же сортировка "пузырьком"):

Цитата:
{сортировка методом "пузырька" (методом простого выбора )

Сортировка методом простого выбора
Выбирается минимальный (самый "лёгкий"=наименьший) элемент массива
и меняется местами с первым элементом массива.
Затем процесс повторяется с оставшимися элементами и т. д. }
p.s. раз Вы умеете находить MIN элемент массива, то на 80% алгоритм уже у Вас в кармане!

p.p.s. Если нужно сформировать новый массив, а старый оставить без изменений, то это делается ещё проще:

цикл по X от нуля до N-1
находите минимальный элемент начиная с индекса X. записываете найденный элемент по смещению NewMas + X
конец цикла.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2011, 13:11   #3
fizteh
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 46
По умолчанию

Могу прислать исходники, когда-то писал сортировки на ASM
fizteh вне форума Ответить с цитированием
Старый 09.09.2011, 13:22   #4
fizteh
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 46
По умолчанию Исходник

Код:
TITLE Add and Subtract		    (AddSub.asm)

; This program adds and subtracts 32-bit integers.
; Last update: 2/1/02

     .686
	.model flat, stdcall
	.stack 4096
extrn c scanf:near
extrn c printf:near
extrn c exit:near
includelib\student\MASM_710\kernel32.lib
includelib\student\MASM_710\msvcrt.lib
.data
i	dword i
n	dword 0
b       dword 0
s       dword 0
x	dword 7,2,1,10,5,6
f	byte "%i ",0
.code


 _start:

        mov ecx,6
	mov esi,0
	l: 
        mov eax,x[esi]
        pusha
	push eax
	push offset f
	call printf
        add esp,8   
        popa 
        push 0
        add esi,4
        loop l

        mov ecx,6
        l1:
        mov n,ecx
        mov ecx,5
        mov esi,0
        mov ebx,0
        l2:
        add ebx,4
        mov edx,x[esi]
        cmp edx,x[ebx]
        jg nem


        mov eax,x[esi]
        mov edx,x[ebx]
        mov x[ebx],eax
        mov x[esi],edx

        nem:
        add esi,4
        loop l2
        
        mov ecx,n
        loop l5
        jmp l6
        l5:
        jmp l1
        l6:
        mov ecx,6
	mov esi,0
	l4: 
        mov eax,x[esi]
        pusha
	push eax
	push offset f
	call printf
        add esp,8   
        popa 
        push 0
        add esi,4
        loop l4

	call exit
 end _start
fizteh вне форума Ответить с цитированием
Старый 09.09.2011, 14:04   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
count	equ	9
mas	db	13,2,7,6,8,11,0,4,14
new_mas db	count dup(?)

...

	cld
	mov	cx,count
	lea	si,mas
	lea	di,new_mas
	rep	movsb
           mov     cx,count-1
	lea	si,new_mas
sort:
	push	cx
	push	si
	mov	di,si
	lodsb
f_min:
	cmp	al,[si]
	jna	no_min
	mov	al,[si]
	mov	di,si
no_min:
	inc	si
	loop	f_min
	pop	si
	xchg	al,[si]
	mov	[di],al
	inc	si
           pop     cx
	loop	sort
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 22:37
Произведение элементов массива в функции (передача массива в функцию) (Delphi) Toxa16 Помощь студентам 1 23.04.2011 04:42
Pascal: Составить программу генерирования массива B, состящего из отрицательных элементов массива a mrRastom Помощь студентам 2 15.01.2011 14:33
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44