Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2017, 11:21   #1
Evgesha200
Новичок
Джуниор
 
Регистрация: 04.05.2017
Сообщений: 1
По умолчанию Умножение беззнаковых двоичных чисел, не используя команду умножения - Assembler

пожалуйста, помогите сделать программу.
Задание такое: реализовать алгоритм умножения беззнаковых двоичных чисел не используя команду умножения.

Код:
model small
.stack 100h
.data
x db 0001b
y db 0001b
z db (?)
k db 0010b
.code
start:
	mov ax,@data
	mov ds,ax
	xor cx,cx
	mov ah,x
	mov al,y
	mov dh,k
	mov dl,z
 cmp al,dh
	jb l1
	je l2
	ja l3
l2: shl x,1
jmp l1
l3: shl ah,1
shl dh,1
cmp al,dh
jb l4
je l2
ja l3
l4: inc ah
     inc ah
jmp l1
l1: mov dl,ah
mov ah,4ch
int 21h
end start
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 04.05.2017 в 12:09.
Evgesha200 вне форума Ответить с цитированием
Старый 06.05.2017, 21:51   #2
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Если вопрос лишь в алгоритме - делайте обычное умножение в столбик.
FPaul вне форума Ответить с цитированием
Старый 07.05.2017, 05:25   #3
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Цитата:
Сообщение от FPaul Посмотреть сообщение
делайте обычное умножение в столбик.
Цитата:
Сообщение от Evgesha200 Посмотреть сообщение
не используя команду умножения.
Складывайте в цикле. (13 * 5 = 13 + 13 + 13 + 13 + 13)
Да и числа у Вас какие то странные.
Мановар вне форума Ответить с цитированием
Старый 09.05.2017, 10:25   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

в x,y сомножители, в z результат

x,y - WORD
z,z1,z2 - DWORD
Код:
  если x=0 или y=0 тогда z=0
  иначе
    z1=x
    z2=0
    пока y>1 цикл
      если y четное тогда
        z1 сдвинуть влево на 1 бит
        y сдвинуть вправо на 1 бит
      иначе
        z2=z2+z1
        y=y-1
    конец цикла
    z=z1+z2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа умножения двух двоичных чисел(Pascal) chit Помощь студентам 2 19.05.2014 16:33
автомат умножения двоичных чисел Lucky777 C# (си шарп) 1 01.12.2011 09:01
умножение двух двоичных чисел!!! 2008kedr2008 Общие вопросы C/C++ 1 12.05.2011 13:28