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

Обсуждение

давно
Старший Модератор
31795
6196
19.09.2008, 14:44
общий
числа размером байт, слово или двойное слово?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
19.09.2008, 15:42
общий
числа размером байт в обоих задачах
давно
Старший Модератор
31795
6196
19.09.2008, 16:25
общий
это ответ
Здравствуйте, 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(именно эта возможность этой команды интересна сейчас), итого в этом регистре будут только четные натуральные числа.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
21.09.2008, 13:38
общий
интересная команда,а как например в этой же ситуации(задача2) сделать что бы выбирались например нечетные числа
давно
Старший Модератор
31795
6196
22.09.2008, 11:50
общий
Дабавьте строки:
xor si,si
inc si; переходим на не четное
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа