12.11.2019, 21:20 [+3 UTC]
в нашей команде: 3 963 чел. | участники онлайн: 10 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
04.11.2019, 16:30

Последний вопрос:
12.11.2019, 20:52
Всего: 150927

Последний ответ:
12.11.2019, 20:12
Всего: 259389

Последняя рассылка:
12.11.2019, 13:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
16.12.2010, 23:56 »
Марина
Спасибо Вам огромное! [вопрос № 181285, ответ № 264799]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

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

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 1149
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 454
solowey
Статус: Бакалавр
Рейтинг: 234

Перейти к консультации №:
 

Консультация онлайн # 144391
Раздел: • Assembler
Автор вопроса: Pave-drygoi
Отправлена: 19.09.2008, 14:22
Поступило ответов: 1

Добрый день, необходимо решить две задачи на assembler(tasm):
1.Написать программу нахождения максимального числа из двух положительных целых чисел и умножения максимального числа само на себя 5 раз.
2.Найти сумму первых 20 натуральных четных чисел.
Как это реализовать и сделать?

Состояние: Консультация закрыта

Здравствуйте, Pave-drygoi!

Первая задача:

model tiny
codeseg
org 100h
;переходим в текстовый режим
begin:		mov	ax,3
		int	10h
;готовимся к циклу
		mov	cx,5
;проверяем числа
		mov	bl,numberA
		cmp	bl,numberB
		jg	isMaximum
;загружаем максимальное
		mov	bl,numberB
;готовимся к умножению
isMaximum:	mov	ax,1
		xor	bh,bh
;в цикле умножаем
isMul:		mul	bx
		loop	isMul
;десятичная система
		mov	di,10
;получаем цифры числа
isDiv:		xor	dx,dx
		div	di
		push	dx
		inc	cx
		or	ax,ax
		jnz	isDiv
;выводим цифры в нужном порядке
isOut:		pop	ax
		or	al,30h
		int	29h
		loop	isOut
		xor	ax,ax
		int	16h
		ret
numberA		db	2
numberB		db	3
		end	begin


Вторая задача:
model tiny
codeseg
org 100h
;
begin:		mov	ax,3
		int	10h
;готовимся к суммированию
		mov	cx,20
		xor	si,si
		xor	di,di
		cld
;само сумирование
isSumm:		lodsw
		add	di,si
		loop	isSumm
;готовимся к выводу
		mov	ax,di
		mov	di,10
;получаем цифры числа
isDiv:		xor	dx,dx
		div	di
		push	dx
		inc	cx
		or	ax,ax
		jnz	isDiv
;выводим число в нужном порядке
isOut:		pop	ax
		or	al,30h
		int	29h
		loop	isOut
		xor	ax,ax
		int	16h
		ret
		end	begin


В задаче 2 использована строковая команда lodsw , она считывает одно слово по адресу ds:si(на это не обращаем внимание) и увеличивает si на 2(именно эта возможность этой команды интересна сейчас), итого в этом регистре будут только четные натуральные числа.
Удачи!


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

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

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 144391

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

ID: 31795

# 1

= общий = | 19.09.2008, 14:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

числа размером байт, слово или двойное слово?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

# 2

= общий = | 19.09.2008, 15:42

числа размером байт в обоих задачах

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

# 3

= общий = | 21.09.2008, 13:38

интересная команда,а как например в этой же ситуации(задача2) сделать что бы выбирались например нечетные числа

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

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

ID: 31795

# 4

= общий = | 22.09.2008, 11:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Дабавьте строки:
xor si,si
inc si; переходим на не четное

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.33738 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35