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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2013, 18:23   #1
bloodykz
Пользователь
 
Аватар для bloodykz
 
Регистрация: 15.02.2012
Сообщений: 19
По умолчанию Работа с матрицами(Ассемблер)

Добрый день. Задача такая, Упорядочить по возрастанию элементы каждой строки матрицы размеров MxN. Нашел код , который, как я понял создает матрицу размером IxJ и упорядочивает в общем элементы по порядку.Если не так понял, поправьте. Как мне сделать чтобы упорядочивал элементы каждой строки по возрастанию? Компилирую в emul8086
Код:
.MODEL	small
 .data
 mes1	db	0ah,0dh,'Исходный массив — $',0ah,0dh
 ;некоторые сообщения
 mes2	db	0ah,0dh,'Отсортированный массив — $',0ah,0dh
 n	equ	9	;количество элементов в массиве,
                ;считая с 0
 mas	dw	2,7,4,0,1,9,3,6,5,8 ;исходный массив
 tmp	dw	0 ;переменные для работы с массивом
 i	dw	0
 j	dw	0
 .code
 main:
	mov	ax,@data
	mov	ds,ax
	xor	ax,ax
 ;вывод на экран исходного массива
	mov	ah,09h
	lea	dx,mes1
 	int	21h	;вывод сообщения mes1
	mov	cx,10
	mov	si,0
	show_primary:;вывод значения элементов
 ;исходного массива на экран
	mov	dx,mas[si]
	add	dl,30h
	mov	ah,02h
	int	21h
	add	si,2
	loop	show_primary
	mov	i,0			;инициализация i
 ;внутренний цикл по j
 internal:
	mov	j,9			;инициализация j
	jmp	cycl_j		;переход на тело цикла
 exchange:
	mov	bx,i		;bx=i
	shl	bx,1
	mov	ax,mas[bx]	;ax=mas[i]
	mov	bx,j		;bx=j
	shl	bx,1
	cmp	ax,mas[bx]	;mas[i] ? mas[j] — сравнение 
	jle	lesser		;если mas[i] меньше, 
	 ;то обмен не нужен и переход на продвижение
	 ;далее по массиву
 ;иначе tmp=mas[i], mas[i]=mas[j], mas[j]=tmp:
 ;tmp=mas[i]
	mov	bx,i		;bx=i
	shl	bx,1		;умножаем на 2, так как 
                        ;элементы — слова
	mov	tmp,ax		;tmp=mas[i]

 ;mas[i]=mas[j]
	mov	bx,j		;bx=j
	shl	bx,1		;умножаем на 2, так 
                        ;как элементы — слова
	mov	ax,mas[bx]	;ax=mas[j]
	mov	bx,i		;bx=i
	shl	bx,1		;умножаем на 2, так как как
                        ;элементы — слова
	mov	mas[bx],ax	;mas[i]=mas[j]

 ;mas[j]=tmp
	mov	bx,j		;bx=j
	shl	bx,1		;умножаем на 2, так как
                        ;элементы — слова
	mov	ax,tmp		;ax=tmp
	mov	mas[bx],ax	;mas[j]=tmp
 lesser:			;продвижение далее по
                        ;массиву во внутреннем цикле
	dec	j			;j--
;тело цикла по j
 cycl_j:
	mov	ax,j		;ax=j
	cmp	ax,i		;сравнить j ? i
	jg	exchange	;если j>i, то переход на обмен
 ;иначе на внешний цикл по i
	inc	i			;i++
	cmp	i,n		;сравнить i ? n — прошли до
                        ;конца массива
	jl	internal	;если i
 ;вывод отсортированного массива
	mov	ah,09h
	lea	dx,mes2
	int	21h
 prepare:
	mov	cx,10
	mov	si,0
	show:	;вывод значения элемента на экран
	mov	dx,mas[si]
	add	dl,30h
	mov	ah,02h
	int	21h
	add	si,2
	loop	show
< exit:
	mov	ax,4c00h	;стандартный выход
	int	21h
	end	main	;конец программы
bloodykz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами Vera_0709 Помощь студентам 1 28.12.2011 05:47
работа с матрицами в c++ Yunut Общие вопросы C/C++ 1 01.06.2011 00:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа с матрицами на Си artem7213 Общие вопросы C/C++ 5 21.04.2009 14:37