Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 356
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »
Козлова Ольга Александровна
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1598
Дата выхода:18.04.2016, 14:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:18 / 7
Вопросов / ответов:1 / 1

Консультация # 189181: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Скоро курсовая я не знаю как че делать в ассемблере Найти произведение матриц произвольного размера(должна проводиться проверка на возможность умножение(необез)) Прошу программу написать на начальном уровне,заранее спасибо(программу писать в TASM)...

Консультация # 189181:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Скоро курсовая я не знаю как че делать в ассемблере

Найти произведение матриц произвольного размера(должна проводиться проверка на возможность умножение(необез))

Прошу программу написать на начальном уровне,заранее спасибо(программу писать в TASM)

Дата отправки: 13.04.2016, 11:52
Вопрос задал: radik (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, radik!

Смотрите приложение:

Код (Assembler) :: выделить код
model	small,pascal
;задаем размеры матриц
szRowA	equ	4
szColA	equ	3
szRowB	equ	szColA
szColB	equ	5
szRowC	equ	szRowA
szColC	equ	szColB
code
186
start:	mov	ax,@data
	mov	ds,ax;адресуем сегменты
	mov	es,ax
;выводим обе матрицы
	call	outMatrix,offset A,szRowA,szColA
	call	outMatrix,offset B,szRowB,szColB
;начинаем умножение матриц
	mov	cx,szRowC;szRowA
	xor	si,si
	xor	bx,bx
;цикл по строкам матрицы С
@@01:	push	cx
	mov	cx,szColC;szColB
	xor	di,di
;цикл по столбцам матрицы С
@@02:	call	CalcMatrix;считаемм
;записываем значение
	mov	C[bx],ax
	add	bx,2;следующий элемент матрицы С
	add	di,2;сдедующий столбец матрицы В
	loop	@@02
	pop	cx
	add	si,2*szColA;следующая строка матрицы А
	loop	@@01
	call	outMatrix,offset C,szRowC,szColC
	mov	ah,4Ch
	int	21h
;п/программа вывода матрицы
outMatrix	proc	x:word,y:word,z:word
uses	ax,cx,di
	mov	di,x
	mov	cx,y
;цикл по строкам
om1:	push	cx
	mov	cx,z
;цикл по столбцам
om2:	mov	ax,[di];читаем число
	call	outNumber,ax,6;выводим
	add	di,2;следующий
	loop	om2
;переходим на другую строку экрана
	mov	al,10
	int	29h
	mov	al,13
	int	29h
	pop	cx
	loop	om1
;разделитель между матрицами
	mov	al,10
	int	29h
	mov	al,13
	int	29h
	ret
outMatrix	endp
;п/программа вывода одного числа с выравниваем
outNumber	proc	x:word,y:word
uses	ax,cx,dx,si
	mov	si,10;система счисления
	xor	cx,cx;счетчик цифр
oN1:	xor	dx,dx
	div	si;получаем младший разряд
	push	dx;запоминаем его в стеке
	inc	cx;увеличиваем сетчик
	or	ax,ax;пока не ноль
	jnz	oN1
;разделяющие пробелы
	mov	ax,' '-'0'
oN2:	push	ax
	inc	cx
	cmp	cx,y
	jb	oN2
;извлекаем число со стека
oN3:	pop	ax
	add	al,'0';переводим в символ
	int	29h;выводим
	loop	oN3
	ret
outNumber	endp
;п/программа подсчета одного элемента
CalcMatrix	proc
uses	bx,cx,dx,si,di
	;считаем один элемент матрицы С
	mov	cx,szColA
	xor	bx,bx
@@03:	mov	ax,A[si];число матрицы А
	xor	dx,dx
	mul	B[di];умножаем на число из В
	add	si,2;к следующему столбцу
	add	di,2*szColB;к следующщей строке
	add	bx,ax;суммируем
	loop	@@03
	mov	ax,bx
	ret
Calcmatrix	endp
data
dat	=	1
A	label	word
	rept	szRowA
		rept	szColA
		dw	dat
		dat	=	1+dat mod 10
		endm
	endm
;dat	=	1
B	label	word
	rept	szRowB
		rept	szColB
		dw	dat
		dat	=	1+dat mod 10
		endm
	endm
dwRow	dw	?
C	dw	szRowC*szColC dup(?)
stack	256
	end	start

Матрицы генерируются макросами.
ps:вопросы задавайте в мини-форуме.
Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 15.04.2016, 16:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное