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

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


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

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

Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 0
∙ повысить рейтинг »
cain52
Статус: 3-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1777
Дата выхода:07.12.2020, 15:15
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:86 / 25
Вопросов / ответов:1 / 1

Консультация # 199729: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Задан массив байт. Определить суммы четных и нечетных элементов массива. Если абсолютные значения сумм не равны, то каждый второй элемент увеличить на единицу. Вывести результаты работы программы на экран в двоичном коде. Написать требуется на платформе ДОС. ...

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

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Задан массив байт. Определить суммы четных и нечетных элементов массива. Если абсолютные значения сумм не равны, то каждый второй элемент увеличить на единицу. Вывести результаты работы программы на экран в двоичном коде.
Написать требуется на платформе ДОС.

Дата отправки: 27.11.2020, 15:12
Вопрос задал: AlexAnonim (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


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

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

Код TASM:

model	tiny,pascal
locals	@@
code
org	100h
sizeMas	equ	20
sizeNum	equ	4
begin:	lea	dx,dbMas
	mov	cx,sizeMas
	cld
	call	OutMas,dx,cx
	Call	SummMas,dx,cx
	jz	@@01
	call	SetMas,dx,cx
@@01:	call	OutMas,dx,cx
	xor	ax,ax
	int	16h
	ret
OutMas	proc	a:word,b:word
uses	ax,cx,si
	mov	al,10
	int	29h
	mov	al,13
	int	29h
	mov	si,a
	mov	cx,b
	xor	ax,ax
@@01:	lodsb
	call	OutNum,ax
	loop	@@01
	ret
OutMas	endp
OutNum	proc	a:word
uses	ax,bx,cx,dx
	mov	ax,a
	xor	cx,cx
	mov	bl,10
@@01:	neg	al
	js	@@01
@@02:	xor	ah,ah
	div	bl
	inc	cx
	xchg	ah,al
	or	al,'0'
	push	ax
	xchg	ah,al
	or	al,al
	jnz	@@02
	mov	ax,a
	and	al,80h
	mov	al,' '
	jz	@@03
	mov	al,'-'
@@03:	inc	cx
	push	ax
	mov	al,' '
	cmp	cx,sizeNum
	jnz	@@03
@@04:	pop	ax
	int	29h
	loop	@@04
	ret
OutNum	endp
SummMas	proc	a:word,b:word
uses	ax,bx,dx,cx,si
	xor	dx,dx
	xor	bx,bx
	mov	si,a
	mov	cx,b
	xor	ah,ah
@@01:	lodsb
	test	al,01
	jnz	@@02
	add	dx,ax
	jmp	@@03
@@02:	add	bx,ax
@@03:	loop	@@01
@@04:	neg	bx
	js	@@04
@@05:	neg	dx
	js	@@05
	mov	ax,bx
	sub	ax,dx
	ret
SummMas	endp
SetMas	proc	a:word,b:word
uses	ax,bx,cx,si,di
	mov	si,a
	mov	di,a
	mov	cx,b
	xor	bx,bx
@@01:	lodsb
	add	ax,bx
	stosb
	xor	bx,1
	loop	@@01
	ret
SetMas	endp
dbMas	label	byte
i	=	-10
	rept	sizemas
	db	i
	i	=i+1
	endm	
end	begin

Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 30.11.2020, 14:55

5
нет комментария
-----
Дата оценки: 30.11.2020, 17:08

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

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


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

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

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


В избранное