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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2010, 17:00   #1
bookkc
Форумчанин
 
Регистрация: 16.05.2009
Сообщений: 199
По умолчанию Поиск элемента в двухмерном массиве (Assembler 86)

Нужна программа поиск елемента в двомерном масиве на Assembler 86

Помогите найти
bookkc вне форума Ответить с цитированием
Старый 26.11.2010, 18:14   #2
bookkc
Форумчанин
 
Регистрация: 16.05.2009
Сообщений: 199
По умолчанию

Код:
MASM
MODEL	small
STACK	256
.data
;матрица размером 2?5 – если ее не инициализировать,
;то для наглядности она может быть описана так:
;array	dw	2   DUP  (5 DUP (?))
;но мы ее инициализируем:
array	dw	1, 2, 3, 4, 5, 6, 7, 8, 9, 0
;логически это будет выглядеть так:
;array =	{1   	2}
;		{3	4}
;		{5	6}
;		{7	8}
;		{9	0}
	elem	dw	3	;элемент для поиска
failed	db	0ah, 0dh, ‘Нет такого элемента в массиве!’,’$’
success	db	0ah, 0dh, ‘Такой элемент в массиве присутствует! “, “$’
foundtime	db	?	;количество найденных элементов
fnd		db	“ раз(а)”, 0ah, 0dh, ‘$’
.code
	main :
			mov	ax, @data
			mov	ds, ax
			xor	ax,ax
			mov	si, 0	;si = столбцы в матрице
			mov	bx, 0	;bx = строки в матрице
			mov	cx, 5	;число для внешнего цикла (по строкам)
	external :			;внешний цикл по строкам
			mov	ax, array[bx][si]	;в  ax  первый элемент матрицы
			push	cx	;сохранение в стеке счетчика внешнего цикла
			mov	cx, 2	;число для внутреннего цикла (по столбцам)
			mov	si, 0
	internal :			;внутренний цикл по строкам
			inc	si	;перемещение на следующий элемент в строке
	;сравниваем содержимого текущего элемента в  ax  с искомым элементом
			cmp	ax, elem
	;если текущий совпал с искомым, то переход на here для обработки,
	;иначе – цикл продолжения поиска
			je	here
		;иначе – цикл по строке  cx = 2  раз
	here :
			jcxz	move_next	;просмотрели строку?
			inc	foundtime	;иначе – увеличиваем счетчик совпавших
	move_next :			;продвижение в матрице
			pop 	cx	;восстанавливаем  сх  из стека (5)
			add	bx, 1	;передвигаемся на следующую строку
				loop	external	;цикл (внешний)
			cmp	foundtime, 0h	;сравнение числа совпавших с 0
			ja	eql	;если больше 0, то переход
	not_equal :			;нет элементов, совпавших с искомым
			mov	ah, 09h	;вывод сообщения на экран
			mov	dx, offset  failed
			int	21h
			jmp	exit	;на выход
	eql :				;есть элементы, совпавшие с искомым
			mov	ah, 09h	;вывод сообщений на экран
		mov	dx, offset  success
		int	21h
		mov	ah, 02h	
		mov	dl, foundtime
		add	dl, 30h
		int	21h
		mov	ah, 09h
		mov	dx, offset  fnd
		int	21h
exit :				;выход
		mov	ax, 4c00h	;стандартное завершение программы
		int	21h
end	main			;конец программы
Вот нашел программу, только у меня рушается на 17,18 и 20 строчки на скриншоте
bookkc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск максимального значения элемента в массиве массивов целых на С++. jojola Общие вопросы C/C++ 2 24.03.2010 16:04
Поиск минимального и максимального элемента в двухмерном массиве. Dem6 Общие вопросы Delphi 10 30.11.2009 20:22
Поиск максимального отрицательного элемента в массиве Tomoa Microsoft Office Excel 6 27.11.2009 15:10
Поиск максимального элемента в массиве Alexus999 Помощь студентам 8 08.06.2009 19:47
Двоичный поиск элемента в массиве (Си под DOS) Zid@ne Общие вопросы C/C++ 7 24.12.2008 18:07