Поменять местами последние 2 и первые 2 бита - Assembler
Формулировка задачи:
Дано 16 битное слово поменять местами первые 2 и последние 2 бита (ab...cd на cd ... ab)
Так ли оно делается?Есть ли ошибки?
.model small .386 .stack 100h .data a db 1100000000010100 (2) C014 (16) mov ax,@data mov ds,ax mov ax,a xor bx,bx and ax,C000h mov bx,ax ; rol bx,2 ;bx= 000000000000000011 mov ax,a and ax,3; 000000000000000011 ror ax,2 or ax,bx ; ax= 110000000000000000 mov bx,ax mov ax,a and ax,3FFCh or ax,bx mov ax,bx mov ax,4c00h int 21h end
Решение задачи: «Поменять местами последние 2 и первые 2 бита»
textual
Листинг программы
.286 .model small .stack 100h .data a dw 1100000000010100b; =C014h b dw ? .code start: mov ax,@data mov ds,ax mov ax,a mov bx,ax and ax,3FFCh; очистили 2 первых и 2 последних бита rol bx,2 ;поменяли 2 первых с двумя последними and bx,0C003h; удалили лишние биты or ax,bx; вставили биты на место mov b,ax;сохранили результат mov ah,4Ch; вышли из программы int 21h start end
Объяснение кода листинга программы
- Объявлены две переменные a и b типа dw (слово), в которых будут храниться значения.
- Переменная a инициализируется значением 1100000000010100b, что в шестнадцатеричной системе равно C014h.
- Переменная b инициализируется неизвестным значением, которое будет меняться в процессе выполнения кода.
- Код начинается с переноса сегмента данных в регистр ds.
- Затем происходит загрузка значения переменной a в регистр ax.
- Значение регистра ax копируется в регистр bx.
- При помощи операции and со значением 3FFCh очищаются два первых и два последних бита значения в регистре bx.
- При помощи операции rol на два бита сдвигается значение в регистре bx.
- При помощи операции and с значением 0C003h удаляются лишние биты значения в регистре bx.
- При помощи операции or регистры ax и bx объединяются, и результат сохраняется в регистре ax.
- Результат копируется в переменную b.
- Выполняется команда int 21h, которая завершает работу программы.
- Команда start: служит для вызова основной функции программы.
- Команда end: указывает на то, что после выполнения этого действия программа завершится.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д