В числе x поменять пары двоичных разрядов в зеркальном порядке - Assembler

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

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

Например 01 11 11 10 10, должно получиться 10 10 11 11 01.

Решение задачи: «В числе x поменять пары двоичных разрядов в зеркальном порядке»

textual
Листинг программы
    mov dx,x
    xor bx,bx
@@01:   mov ax,dx
    and ax,3
    shl bx,2
    or  bx,ax
    shr dx,2
    or  dx,dx
    jnz @@01

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

  1. mov dx,x — в регистр dx записывается значение переменной x
  2. xor bx,bx — в регистр bx записывается ноль (начальное значение без знака)
  3. mov ax,dx — в регистр ax записывается значение из регистра dx
  4. and ax,3 - логическое И с тремя единицами (00000011) в регистре ax
  5. shl bx,2 - содержимое регистра bx сдвигается влево на два разряда с сохранением знака (удвоение значения)
  6. or bx,ax — результат операции (0x11) или'руется' с регистром ax
  7. shr dx,2 - содержимое регистра dx сдвигается вправо на два разряда с сохранением знака (уменьшение значения на два)
  8. or dx,dx — результат операции (0x11) или'руется' с регистром dx
  9. jnz @@01 - если значение в регистре dx не равно нулю, то происходит переход к метке @@01

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


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

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

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