Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
#1

Не могу разобраться с битовыми операциями - Assembler

12.11.2016, 15:05. Просмотров 860. Ответов 18
Метки нет (Все метки)

Дано

00110100 00110111 .... в конце 00111000

что надо сделать, чтобы получить (ниже) 1ый байт (известен), 2ой байт 1 из 3

1ый байт 00110101

2й байт
01001011
01001000
01001010

подскажите какой это сдвиг? или умножение, деление? Что за операция проведена с битами? Буду очень признателен за помощь. В битах плохо разбираюсь.. Помогите чайнику.

Известно еще, что в операции по изменению битов могло принимать участие 0001 или 3 :-) А могло и не принимать..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2016, 15:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не могу разобраться с битовыми операциями (Assembler):

Приветствую, не могу разобраться с кодом программы и не могу сделать .obj файл
.model tiny; нужно будет получить исполняемый файл формата СОМ .code org 100h...

Не могу разобраться
Нашел в книге Калашникова "Ассемблер? Это просто!" пример, который до конца не...

Не могу разобраться в коде
Привет друзья. Вот помогли начертать программку, которая очищает экран и...

Не могу разобраться с программой.
Здравствуйте! Мне понадобилась помощь с ассемблером...уже несколько часов...

Не могу разобраться с логикой
Вот такое задание: Рассматривая заданный байт как набор логических значений ...

Вывод времени на экран. Не могу разобраться?
Есть готовая работающая программа, но никак не могу разобраться, как она...

18
nimazzzy
Заблокирован
12.11.2016, 15:48 #2
Я почти ничего не понял из написанного, что дано, и что получено.
Если из этих значений
Цитата Сообщение от garrygarry Посмотреть сообщение
01001011
01001000
получено 01001010, то это "и".
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 16:12  [ТС] #3
Есть строка состоящая из бит.

00110100 00110111 .... в конце строки 00111000

после проведенной операции (неведомо какой) первый байт стал таким 00110101 (8ой бит поменялся с 0 на 1),
второй байт может превратится в 01001011, либо в 01001000, либо в 01001010

Нужно понять, какая операция проводится с битами (исходные биты 00110100 00110111 .... в конце строки 00111000), чтобы получить 1 из 3 вариантов (можно и три варианта получить, если это возможно)


00110101 01001011
00110101 01001000
00110101 01001010


Если это И, то не могли бы чайнику обьяснить как это делается с длинной строкой бит? Буду сильно признателен!
0
Kukuxumushu
754 / 477 / 89
Регистрация: 13.06.2015
Сообщений: 1,632
Завершенные тесты: 2
12.11.2016, 16:13 #4
nimazzzy, это как???
01001011
&
01001000
=
01001000
1
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 16:30  [ТС] #5
Сам всю голову сломал..

Добавлено через 8 минут
Могли чтоть проделывать с битами при помощи 3 или 0001?
0
nimazzzy
Заблокирован
12.11.2016, 16:46 #6
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
nimazzzy, это как???
01001011
&
01001000
=
01001000
Именно так, ты угадал.

Добавлено через 4 минуты
Тьфу, ты ж, я второе число 2 раза посмотрел

Добавлено через 1 минуту
Тогда я теперь совсем не понимаю, что значит "2й байт" и три каких-то байта. Какое число получено из каких?
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 16:56  [ТС] #7
Было это

00110100 00110111 .... в конце 00111000

стало это

00110101 01001011

или это

00110101 01001000

или это

00110101 01001010

Добавлено через 8 минут
Хочется очень понять, что сделали с битами.. Помогите
0
Manowar
1552 / 484 / 164
Регистрация: 12.03.2016
Сообщений: 1,828
Завершенные тесты: 1
12.11.2016, 17:42 #8
garrygarry, что значит в конце?
я так понял
было 00110100 00110111 00111000
стало 00110101 01001011 00111000
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 17:51  [ТС] #9
да, все верно, только 00111000 можно не учитывать.. строка длинная, 00111000 в конце (думаю, вдруг сдвиги какие были, не похоже..)

просто нужно понять что делали...

было 00110100 00110111
стало 00110101 01001011

или было 00110100 00110111
стало 00110101 01001000


или было 00110100 00110111
00110101 01001010
0
Manowar
1552 / 484 / 164
Регистрация: 12.03.2016
Сообщений: 1,828
Завершенные тесты: 1
12.11.2016, 18:44 #10
было 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1
xor 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0
_______________________
стало 0 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 19:41  [ТС] #11
это не совсем то..
0
Manowar
1552 / 484 / 164
Регистрация: 12.03.2016
Сообщений: 1,828
Завершенные тесты: 1
12.11.2016, 19:44 #12
garrygarry, тогда объясни путью что надо
0
Jin X
❗❗ RTFM 👈
4007 / 1151 / 151
Регистрация: 14.12.2014
Сообщений: 2,292
Записей в блоге: 5
Завершенные тесты: 2
12.11.2016, 20:08 #13
garrygarry, что значит "стало так или так или так"? Почему или?
Нужно найти операцию, которая может вернуть одно из 3-х значений? (типа корень из 9 = 3 и -3)
Таких операций с битами нет. Или их будет 3 штуки

А чтобы получить, к примеру, 1010 из 0101, то тут вариантов много: можно сделать not, можно сделать shl 1, можно сделать xor 1111, можно сделать and 0 or 1010, можно imul ax,ax,2 (задав 0101 в ax) и т.д.

Как сказал мановар, есть универсальная операция - xor. С её помощью можно получить любое число из любого.
Т.е. A xor B = C. Если есть A и C, то легко найти и B = A xor C.

Если надо в 2 операции, то можно то же самое сделать через and + or, т.е. (A and B1) or B2 = C. Здесь ищем так: B1 = A and C, B2 = B1 xor C.

Как вариант...
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
12.11.2016, 20:56  [ТС] #14
Спасибо, буду пытаться.. Отпишу результат или снова обращусь

Добавлено через 1 минуту
Хотел еще спросить? А сдвиг битовый что такое? Имеется в виду битовый сдвиг в огромном количестве битов
0
Jin X
❗❗ RTFM 👈
4007 / 1151 / 151
Регистрация: 14.12.2014
Сообщений: 2,292
Записей в блоге: 5
Завершенные тесты: 2
13.11.2016, 11:14 #15
Это именно то и есть. Именно сдвиг, точнее не скажешь
0011010011101001 сдвигаем влево на 1, получаем
0110100111010010 (пустоту заполняем нулями, как правило), ещё сдвигаем на 3:
0100111010010000, сдвигаем ещё на 5 влево:
1101001000000000, сдвигаем вправо на 9:
0000000001101001.
0
garrygarry
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 9
13.11.2016, 14:22  [ТС] #16
А после 9 на скока делать сдвиг?
0
Jin X
❗❗ RTFM 👈
4007 / 1151 / 151
Регистрация: 14.12.2014
Сообщений: 2,292
Записей в блоге: 5
Завершенные тесты: 2
13.11.2016, 20:05 #17
В каком смысле? "На скока делать сдвиг", чтобы получить... что?
Это просто примеры для понимания как работает сдвиг.
0
Ethereal
3309 / 1449 / 190
Регистрация: 17.02.2013
Сообщений: 2,337
14.11.2016, 04:46 #18
Да успокойтесь вы. Я объясню чего хочет ТС.

У него есть длинная строка байт. Из нее он вам показывает только первых два и последний. Больше не покажет ибо страшный секрет. В строке что-то зашифровано. Какой характер имеет зашифрованная информация ТС тоже не скажет ибо опять таки страшный секрет. Что конкретно должно получится после расшифровки ТС не знает. Он знает только какой должен получится первый байт и с точностью до трех вариантов какой второй. Отсюда у ТС-а вопрос : какой алгоритм шифрования был использован и как расшифровать ? ТС полагает с чужих слов, что алгоритм простой, но и это не факт.
Прониклись ?

Добавлено через 7 минут
Вышенаписанное я уяснил из общения с ТС на том форуме куда "ушли" Mikl.
0
nimazzzy
14.11.2016, 15:31     Не могу разобраться с битовыми операциями
  #19

Не по теме:

Ethereal, да, эт я понял после этого сообщения №7 :)

0
14.11.2016, 15:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2016, 15:31
Привет! Вот еще темы с ответами:

не могу разобраться с отладчиком ( Turbo debugger )
Добрый день господа! Начал изучать ассемблер и не могу разобраться с...

Не могу разобраться с назначением некоторых инструкций и несколькими мелочами
Скачал мануал: www.intel.com/Assets/PDF/Manual/msc4.pdf На 20-21 странице...

Не могу разобраться куда CBW поставить нужно и как убрать остаток
Вот уравнение (a^2/a+b) - (b^2/a^2+b) Пусть а=2 ,а b=4 Преподаватель...

Добрий вечер !Напишите мне кто-нибудь пожалуйста эту программу с комментариями, чтобы я смогла разобраться, потому что никак не могу понять этот язык
создать файл записей (фамилия клиента, паспортные данные, № счета, сумма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru