В числе 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
Объяснение кода листинга программы
- mov dx,x — в регистр dx записывается значение переменной x
- xor bx,bx — в регистр bx записывается ноль (начальное значение без знака)
- mov ax,dx — в регистр ax записывается значение из регистра dx
- and ax,3 - логическое И с тремя единицами (00000011) в регистре ax
- shl bx,2 - содержимое регистра bx сдвигается влево на два разряда с сохранением знака (удвоение значения)
- or bx,ax — результат операции (0x11) или'руется' с регистром ax
- shr dx,2 - содержимое регистра dx сдвигается вправо на два разряда с сохранением знака (уменьшение значения на два)
- or dx,dx — результат операции (0x11) или'руется' с регистром dx
- jnz @@01 - если значение в регистре dx не равно нулю, то происходит переход к метке @@01
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д