![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Shichik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
есть задание по Ассемблеру: В битовой строке вырезать каждый 7ой бит.
как я понимаю если я введу '00', то это 30h30h, что в свою очередь 0011 0000 0011 0000 результат получится 0011 0000 0110 00? собственно нужна помощь в реализации этого алгоритма |
|||
|
||||
anwe |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Не понятно твое
И почему, если ты пишешь
По алгоритму: используй команду shrd. |
||||
|
|||||
Shichik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Народ, помогите с конкретным кодом по заданию, а то горю
Это сообщение отредактировал(а) Shichik - 8.12.2006, 14:28 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
Shichik,
если хочешь, чтобы помогли, сформулируй нормально вопрос -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Shichik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Оригинальное задание: " в битовой строке вырезать каждый седьмой бит"
как я понял мне нужно вводимую строку символов преобразовать в 2ый код, а потом уже вырезать 7ой ьит, только я не знаю как |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Затерай каждый седьмой бит.
|
|||
|
||||
Shichik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
я понимаю как все это сделать в теории, но вот как реализовать это на практике,я ума не иприложу, plz помогите
|
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
За не имением времени напишу лишь теоретически.
Берешь свободный 32-разрядный и байтовый регистры. В байтовый заносишь младший байт из строки. Из него вталкиваешь 6 бит в 32-разрядный. Потом один бит выталкиваешь "в воздух" (смешаешь на один). Далее оставшийся 1 бит вталкиваешь в 32-разрядный. Так делаешь 4 раза в цикле. Получится, что в 32-разрядном будут 4 незаполненных младших разряда. Выходишь из цикла, берешь очередной байт из строки, втолкнул 4 штуки. Полученные биты из 32-разрядного сбрасываешь в память (он теперь полный), сам регистр очищаешь. Доталкиваешь в него 2 бита из оставшихся 4-х в байтовом, затем 1 выталкиваешь из байтового, последний вталкиваешь в 32-разрядный. Далее опять сначала. Таким образом после второго прохода цикла 32-разрядный будет иметь незаполенный 1 младший бит. И поехал опять вталкивать. Для проверки конца строки, наверное, надо вводить счетчик. Организовать цикл в цикле не получится, так как каждый раз недозаполненых бит в 32-разрядном разное количество. И последнее, возможно, что в последний раз надо будет дотолкнуть 32-разрядный, чтобы его младший из втолкнутых был действительно младшим. Да! Только дошло. Я все описал для удаления 7- бита из 8. В принципе, если надо 7-й абсолютный, то есть последний, то немножечко проще (на одну команду/на один байт строки). А алгоритм такой же. |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |