|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.02.2017, 19:06 | #1 |
Пользователь
Регистрация: 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. |
14.02.2017, 19:35 | #2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
Ну раз пробовал, то показывай код. Нет, может тут кому-то нечего делать и у него асм (коих много версий, кстати) наготове, но больше шансов что укажут ошибки в твоём коде.
И что за 18 байт? Там ведь одни заголовки на пару сотен байт, обычно. |
14.02.2017, 20:10 | #3 |
Пользователь
Регистрация: 26.09.2016
Сообщений: 17
|
Код показать не получится т.к. тетрадь с кодом в колледже! (Sorry).
Работу проводил в "debug". Да и весь мой код состоял в том что я поместил числа в регистры и логически их перемножил, а с заменой разрядов была сильная заморочка! Могу сказать лишь это - 7 разряд на 7 позиций вправо, остальные разряды в нули. Потом - 1 разряд на 7 позиций влево, остальные разряды в нули. Потом - Сложить все три числа. Как-то так... Я не знаю правильно ли это, но я думаю что нужно делать так, а сам к сожалению не могу!(( Последний раз редактировалось dimwow; 14.02.2017 в 20:20. |
14.02.2017, 21:10 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,534
|
Какого процессра-то ассемблер ? Их тысячи - у каждого камня - свой По любому если перевести двоичный в десятичный, это не В5 и 37 (как в 2-10 ), а 183 и 55 .
Последний раз редактировалось digitalis; 14.02.2017 в 21:20. |
14.02.2017, 21:12 | #5 |
Пользователь
Регистрация: 26.09.2016
Сообщений: 17
|
Извини, не совсем понимаю твой вопрос (Я тупой ), но Assembler 6.22 x86
Может быть это нужно было!? |
14.02.2017, 22:16 | #6 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..если в дебуге пишешь, то наверняка под проц x86.
Логическое умножение имеет силу, если множитель кратен двум. То-есть, если число сдвинуть на 1-бит влево, то получишь умножение на 2. Если сдвинуть на 2-бита, то получишь умножение на 4, и т.д. Поэтому не понятно.. Может тебе нужно обычное умножение через инструкцию MUL??? А поменять биты не проблема. Сбрасывай все, кроме нужных и всё. Определись с умножением..
Нашедшего выход - затаптывают первым..
|
14.02.2017, 23:15 | #7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,534
|
Вообще-то логическое умножение ( в отличие от подробно выше описанного логического сдвига ) - это конъюнкция или, грубо говоря, "ЛОГИЧЕСКОЕ И".
dimwow, с ассемблером х86 последний раз имел дело лет 20 тому, так что sorry . Хошь - на AVRAsm наваяю, потом перепрешь на х86 ? Последний раз редактировалось digitalis; 14.02.2017 в 23:21. |
15.02.2017, 10:12 | #8 |
Пользователь
Регистрация: 26.09.2016
Сообщений: 17
|
Так, ладно... Логическое умножение выполняется командой "ADD"!? Если да, то код будет таков:
Mov ah,b5 (если первое число - b5) Mov bh,37 (если второе число - 37) Add ah,bh А дальше идут команды сдвига (которые я не знаю). |
15.02.2017, 10:17 | #9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
ADD - это сложение, и то не логическое.
Тебе нужен AND Код:
Нашедшего выход - затаптывают первым..
|
15.02.2017, 10:20 | #10 |
Пользователь
Регистрация: 26.09.2016
Сообщений: 17
|
Ой да, простите!
AND. А как разряды поменять... Это точно проблема! |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |