WMmail.ru - сервис почтовых рассылок

воскресенье, 24 сентября 2017 г.

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

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

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

Лучшие эксперты в разделе

quirck
Статус: 1-й класс
Рейтинг: 29
• повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
• повысить рейтинг »
Evgen aka Chuma
Статус: 5-й класс
Рейтинг: 0
• повысить рейтинг »

• Assembler

Номер выпуска:1655
Дата выхода:24.09.2017, 11:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:44 / 16
Вопросов / ответов:1 / 1

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

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

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

Имеется задача. Даны 3 квадратные матрицы различных размерностей. Для каждой из них заменить нулями все ее четные элементы, расположенные на главной диагонали или выше нее. Подсчитать количество таких замен.
Имеется код TASM(очень корявый, возможно неработающий), но программа нужна на NASM

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


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

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

Писал в FASM, компилировал NASM:

Код (Assembler) :: выделить код
org	100h  	mov	cx,3  	mov	di,ddArray  	mov	si,dwSize  @@01:	call	inputMatrix  	add	si,2  	loop	@@01  	mov	cx,3  	mov	di,ddArray  	mov	si,dwSize  @@02:	call	jobMatrix  	add	si,2  	loop	@@02  	mov	cx,3  	mov	di,ddArray  	mov	si,dwSize  @@03:	call	outputMatrix  	add	si,2  	loop	@@03  	xor	ax,ax  	int	16h  	ret  inputMatrix:  	inc	byte[dbMatrixSize]  	inc	byte[dbMatrixNumber]  	push	cx  IM0:	mov	ah,9  	mov	dx,dbEnterSize  	int	21h  	call	inputNumber  	or	ax,ax  	jz	IM0  	mov	[si],ax  	mov	cx,[si]  IM1:	push	cx  	call	convertNumber  	mov	[dwRowIn],ax  	mov	cx,[si]  IM2:	call	convertNumber  	mov	[dwColIn],ax  	mov	ah,9  	mov	dx,dbEnterNumber  	int	21h  	call	inputNumber  	stosd  	loop	IM2  	pop	cx  	loop	IM1  	pop	cx  	ret  jobMatrix:  	push	cx  	mov	cx,[si]  JM1:	mov	bx,cx  	mov	cx,[si]  JM2:	cmp	bx,cx  	jb	JM3  	mov	eax,[di]  	test	eax,1  	jnz	JM3  	xor	eax,eax  	mov	[di],eax  JM3:	add	di,4  	loop	JM2  	mov	cx,bx  	loop	JM1  	pop	cx  	ret  outputMatrix:  	push	cx  	inc	byte[dbMatrixName]  	xor	cx,cx  	call	convertNumber  	mov	[dwRowOut],ax  	mov	[dwColOut],ax  	mov	ah,9  	mov	dx,dbOutputMatrix  	int	21h  	mov	cx,[si]  OM1:	push	cx  	mov	al,10  	int	29h  	mov	al,13  	int	29h  	mov	cx,[si]  OM2:	mov	eax,[di]  	call	outputNumber  	add	di,4  	loop	OM2  	pop	cx  	loop	OM1  	pop	cx  	ret  inputNumber:  	push	di  	xor	edi,edi  	mov	ebx,10  IN1:	xor	ax,ax  	int	16h  	cmp	al,13  	jz	IN2  	cmp	al,'0'  	jb	IN1  	cmp	al,'9'  	ja	IN2  	int	29h  	and	eax,0Fh  	xchg	edi,eax  	xor	edx,edx  	mul	ebx  	add	edi,eax  	jmp	IN1  IN2:	mov	eax,edi  	pop	di  	ret  outputNumber:  	push	cx  	mov	ebx,10  	xor	cx,cx  ON1:	xor	edx,edx  	div	ebx  	push	dx  	inc	cx  	or	eax,eax  	jnz	ON1  	mov	al,' '-30h  ON2:	push	ax  	inc	cx  	cmp	cx,6  	jb	ON2  ON3:	pop	ax  	add	al,30h  	int	29h  	loop	ON3  	pop	cx  	ret  convertNumber:  	mov	ax,[si]  	sub	ax,cx  	aam  	add	ax,3031h  	xchg	al,ah  	ret  dbEnterSize	db	10,13,'Enter matrix '  dbMatrixSize	db	'@ size:$'  dbOutputMatrix	db	10,10,13,'Output matrix '  dbMatrixName	db	'@['  dwRowOut	dw	0  		db	','  dwColOut	dw	0  		db	']:$'  dbEnterNumber	db	10,13,'Enter value '  dbMatrixNumber	db	'@['  dwRowIn 	dw	0  		db	','  dwColIn 	dw	0  		db	']:$'  dwSize	dw	0,0,0;3 dup(?)  ddArray dd	0

Единственное, на что ругался NASM, это не инициализированные переменные, пришлось "?" заменить на "0".

Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 19.09.2017, 16:16
Прикреплённый файл: посмотреть » [52.7 кб]

5
Быстро и четко, что нужно объяснят. Огромное спасибо
-----
Дата оценки: 20.09.2017, 18:31

Рейтинг ответа:

НЕ одобряю +1 одобряю!


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

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

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


 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать Все выпуски рассылки
 
Если выпуск не отображается, вы можете прочесть его на сайте

Это сообщение было отправлено на admin10383.deep@blogger.com потому, что вы подписались на рассылку comp.prog.assembler на subscribe.ru.
Чтобы гарантировать получение писем от нас — добавьте наш адрес в адресную книгу.

Вы можете отказаться от получения писем.

Архив рассылки Поддержка подписчиков

Комментариев нет:

Отправить комментарий