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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2017, 19:06   #1
dimwow
Пользователь
 
Регистрация: 26.09.2016
Сообщений: 17
Восклицание [ASSEMBLER]: Даны два числа в двоичном виде, логически их перемножить и в результирующем значении поменять 7-ой разряд с 1-ым, 5-ый со 2-ым.

Даны два числа в двоичном виде, логически их перемножить и в результирующем значении поменять 7-ой разряд с 1-ым, 5-ый со 2-ым.

Число №1 - 10110101 (Вроде бы - B5)
Число №2 - 00110111 (Вроде бы - 37)

Нужен правильный код! Пробовал сам, никак не получается сделать, а в четверг экзамен и меня попросту не допустят если не выполню это задание

Еще нужны состояния регистров, но это я уже сам сделаю!
Хотелось бы только размер исполняемого файла узнать... Скорее всего 18 байт, но это не точно т.к. я начинающий нубик :D

Кому не сложно пожалуйста отзовитесь!)
Заранее благодарю от всей души

Последний раз редактировалось Вадим Мошев; 14.02.2017 в 21:32.
dimwow вне форума Ответить с цитированием
Старый 14.02.2017, 19:35   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Ну раз пробовал, то показывай код. Нет, может тут кому-то нечего делать и у него асм (коих много версий, кстати) наготове, но больше шансов что укажут ошибки в твоём коде.
И что за 18 байт? Там ведь одни заголовки на пару сотен байт, обычно.
GreenWizard вне форума Ответить с цитированием
Старый 14.02.2017, 20:10   #3
dimwow
Пользователь
 
Регистрация: 26.09.2016
Сообщений: 17
По умолчанию

Код показать не получится т.к. тетрадь с кодом в колледже! (Sorry).
Работу проводил в "debug". Да и весь мой код состоял в том что я поместил числа в регистры и логически их перемножил, а с заменой разрядов была сильная заморочка!
Могу сказать лишь это - 7 разряд на 7 позиций вправо, остальные разряды в нули.
Потом - 1 разряд на 7 позиций влево, остальные разряды в нули.
Потом - Сложить все три числа.
Как-то так... Я не знаю правильно ли это, но я думаю что нужно делать так, а сам к сожалению не могу!((

Последний раз редактировалось dimwow; 14.02.2017 в 20:20.
dimwow вне форума Ответить с цитированием
Старый 14.02.2017, 21:10   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Какого процессра-то ассемблер ? Их тысячи - у каждого камня - свой По любому если перевести двоичный в десятичный, это не В5 и 37 (как в 2-10 ), а 183 и 55 .

Последний раз редактировалось digitalis; 14.02.2017 в 21:20.
digitalis вне форума Ответить с цитированием
Старый 14.02.2017, 21:12   #5
dimwow
Пользователь
 
Регистрация: 26.09.2016
Сообщений: 17
По умолчанию

Извини, не совсем понимаю твой вопрос (Я тупой ), но Assembler 6.22 x86
Может быть это нужно было!?
dimwow вне форума Ответить с цитированием
Старый 14.02.2017, 22:16   #6
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..если в дебуге пишешь, то наверняка под проц x86.
Логическое умножение имеет силу, если множитель кратен двум.
То-есть, если число сдвинуть на 1-бит влево, то получишь умножение на 2.
Если сдвинуть на 2-бита, то получишь умножение на 4, и т.д.
Поэтому не понятно.. Может тебе нужно обычное умножение через инструкцию MUL???

А поменять биты не проблема. Сбрасывай все, кроме нужных и всё.
Определись с умножением..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 14.02.2017, 23:15   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Вообще-то логическое умножение ( в отличие от подробно выше описанного логического сдвига ) - это конъюнкция или, грубо говоря, "ЛОГИЧЕСКОЕ И".
dimwow, с ассемблером х86 последний раз имел дело лет 20 тому, так что sorry . Хошь - на AVRAsm наваяю, потом перепрешь на х86 ?

Последний раз редактировалось digitalis; 14.02.2017 в 23:21.
digitalis вне форума Ответить с цитированием
Старый 15.02.2017, 10:12   #8
dimwow
Пользователь
 
Регистрация: 26.09.2016
Сообщений: 17
По умолчанию

Так, ладно... Логическое умножение выполняется командой "ADD"!? Если да, то код будет таков:
Mov ah,b5 (если первое число - b5)
Mov bh,37 (если второе число - 37)
Add ah,bh
А дальше идут команды сдвига (которые я не знаю).
dimwow вне форума Ответить с цитированием
Старый 15.02.2017, 10:17   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от dimwow Посмотреть сообщение
Так, ладно... Логическое умножение выполняется командой "ADD"!?
ADD - это сложение, и то не логическое.
Тебе нужен AND

Код:
ИЛИ – логическое сложение (дизъюнкция)  – OR;
И   – логическое умножение (конъюнкция) – AND;
НЕ  – логическое отрицание (инверсия)   – NOT.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 15.02.2017, 10:20   #10
dimwow
Пользователь
 
Регистрация: 26.09.2016
Сообщений: 17
По умолчанию

Ой да, простите!
AND. А как разряды поменять... Это точно проблема!
dimwow вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
e = (a-c)2+2*a*c/k - Assembler vudg Помощь студентам 0 10.01.2013 11:03
Assembler+C Farrel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 09.04.2011 22:55
Assembler banano Фриланс 1 17.05.2010 15:44
assembler AJIUM Помощь студентам 20 18.03.2010 18:30