Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Манипулирование битами

Автор: Лена 12.04.2009 22:45

Определить разность между количеством единичных и нулевых битов в старшем и количеством единичных и нулевых битов в младшем байте слова.

Автор: volvo 12.04.2009 23:31

Лена, в чем проблема? Не знаешь, как работать с битами? Очень просто: запоминаешь нужное тебе значение в регистре (скажем, в 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, тогда ты получишь количество единичных бит в старшем байте слова, для него опять находишь нужную тебе разность... Вот и все, собственно...

Автор: Лена 13.04.2009 0:13

Спасибо большое. smile.gif