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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 19:35   #1
magistr011
 
Регистрация: 21.03.2011
Сообщений: 5
По умолчанию "Актуально" Произведение чисел через битовые операции (задача не решаема)

-Программа реализуется как ассемблерная вставка в языке высшего уровня (Паскаль, С++ и т.д.).

Заданы два числа <=15. Найти их произведение и с помощью битовых операций записать оба множителя и их произведение одно за другим в ячейку памяти размером в два байта без пропуска битов.

Программу написал на Builder C++ (вернее не всю а только запросы переменных и вывод в окно...) Теперь на асме надо сделать следующее...

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

Небольшая наработка есть, но я запутался (((

mov ebx,[a]; //в еbx множитель
shl еbx,30h; //сдвигаю влево на 12 бит
mov eax,[b]; //в еax второй множитель
or ebx,eax; //в ebx ложу оба множителя
mov dword ptr [с],ebx; //сохраняю в ebx по адресу "с"
imul [b]; // Умножаю
mov word ptr [с+1],ax; // сохраняю произведение по адресу "с+1"

но когда вывожу "с" в отдельное окно, там всякая бредятина получается, но не например 1515225 (если 15*15=225)

да и это с пропусками битов получится, т.к. я незнаю, адрес конца первого множителя...

Я думаю надо сделать поиск конца числа по адресу и сразу за этим числом по адресу ложить следующее число, попробовать с помощью процедур и меток...
Например: процедура нахождения адреса конца введённого числа -> прыг на ввод следующего числа -> опять процедура нахождения адреса конца числа...

Подскажите пожалуйста как тут быть, если кто может код написать, прошу, можно без расшифровки...

Спасибо...

Последний раз редактировалось magistr011; 04.11.2011 в 17:20.
magistr011 вне форума Ответить с цитированием
Старый 04.11.2011, 09:30   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

http://www.google.com.ua/search?q=Ум...пользуя+сдвиги
Вторая ссылка
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 04.11.2011, 17:08   #3
magistr011
 
Регистрация: 21.03.2011
Сообщений: 5
Плохо

Цитата:
Сообщение от alexcoder Посмотреть сообщение
Ссыль в гугл - это не ответ ((( Лучше бы молчал... Ты думаешь я не штурмовал поисковики???
magistr011 вне форума Ответить с цитированием
Старый 04.11.2011, 17:57   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Код:
shl еbx,30h; //сдвигаю влево на 12 бит
вам самому не кажется что в этой строчке что-то не так ?
Код:
imul [b]; // Умножаю
что именно у вас тут умножается на [b] ?
alexcoder, тут скорее про упакованные числа числа идет речь, а не об умножении.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 04.11.2011 в 17:59.
Goodwin98 вне форума Ответить с цитированием
Старый 04.11.2011, 18:56   #5
magistr011
 
Регистрация: 21.03.2011
Сообщений: 5
По умолчанию

shl еbx,10h; //сдвигаю влево на 4 бит

а на [b] там умножается бред какой-то, судя по тому, что у меня ничего не получается до сих пор(((
magistr011 вне форума Ответить с цитированием
Старый 05.11.2011, 11:54   #6
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
shl еbx,10h; //сдвигаю влево на 4 бит
0o. поясните ?
Цитата:
а на [b] там умножается бред какой-то, судя по тому, что у меня ничего не получается до сих пор(((
так может стоит умножать то, что вам нужно, а не какой-то бред ?

Пользуйтесь отладчиком и смотрите что происходит после каждой команды и то ли это что вы задумывали.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 05.11.2011 в 11:56.
Goodwin98 вне форума Ответить с цитированием
Старый 07.11.2011, 16:34   #7
magistr011
 
Регистрация: 21.03.2011
Сообщений: 5
По умолчанию

Всем спасибо, сам дошёл, всё получилось...
Тема закрыта.
magistr011 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции C++ MarchZM Помощь студентам 0 30.05.2011 18:18
Битовые операции(с++) Lazy maximka Помощь студентам 2 23.12.2010 18:55
Битовые операции _-Re@l-_ Свободное общение 12 11.07.2010 15:31
Битовые операции СИ savra Помощь студентам 0 10.03.2010 19:31
Битовые операции zetrix Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 15.12.2006 11:08