Как взять значение определенного бита из байта? и как организовать такое в цикля для каждого бита? - Assembler

Узнай цену своей работы

Формулировка задачи:

FASM моя первая задача - вычислить n-e число фибоначчи бинарное возведение в степень допустим у меня T= 10101010 b мне надо

взять значение

последнего

бита

(0), и выполнить инструкцию для него (инструкция 0 и инструкция 1, для 0 и 1 соответственно). после проделать то же самое с предпоследним битом, и тд.. КАК это сделать? (что ставить на места ???)
cmp (???,0) 
je instruction_0
cmp (???,1)
je instruction_1
.....
.instruction_1
....
.instruction_2

Решение задачи: «Как взять значение определенного бита из байта? и как организовать такое в цикля для каждого бита?»

textual
Листинг программы
    mov cx,8; количество бит в байте
     mov al,T
a0: shr al,1; сдвигаем Т на 1 разряд
     jc instruction_1; если в последнем разряде была единица, то следующей инструкцией будет instruction_1
instruction_2: ....;если в последнем разряде был ноль
     jmp a1
instruction_1: ....
a1: loop a0

Объяснение кода листинга программы

  1. Сохраняем количество бит в переменной cx
  2. Сохраняем значение байта в переменной al, на которую будем влиять
  3. Сдвигаем значение al на 1 разряд вправо, получая старший бит
  4. Если флаг переноса jc равен 1, то выполняем следующую инструкцию instruction_1, иначе выполняем instruction_2
  5. Выполняем необходимые действия в блоке instruction_2
  6. Выполняем необходимые действия в блоке instruction_1
  7. **Возвращаемся к началу цикла a0 и повторяем все действия заново до тех пор, пока не будет выполнено условие цикла loop a0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы