Помощь - Поиск - Пользователи - Календарь
Полная версия: Манипулирование битами
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
Лена
Определить разность между количеством единичных и нулевых битов в старшем и количеством единичных и нулевых битов в младшем байте слова.
volvo
Лена, в чем проблема? Не знаешь, как работать с битами? Очень просто: запоминаешь нужное тебе значение в регистре (скажем, в BX) в цикле, 8 раз проверяешь значение BX на четность, и если четное, то увеличиваешь счетчик единичных бит. Количество нулевых бит будет равно 8 - (количество_единичных). Разность сама найдешь? Набросок:

	mov bx, my_data ; my_data - то слово, которое ты должна проверить
mov cx, 8
cycle_1:
test bx, 1
jz not_one
inc low_byte ; переменная low_byte хранит количество единичных бит.
; Не забудь обнулить перед циклом
not_one:
shr bx, 1
loop cycle_1


То же самое делаешь еще раз прямо не изменяя содержимого BX, тогда ты получишь количество единичных бит в старшем байте слова, для него опять находишь нужную тебе разность... Вот и все, собственно...
Лена
Спасибо большое. smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.