Даны два числа в двоичном виде - Assembler (223438)
Формулировка задачи:
Помогите с задачкой на ассемблере.
Даны два числа в двоичном виде. Первое число умножить на 4, второе разделить на 2. Результаты логически сложить. 0-ой и 7-ой разряды, в полученном значении, поменять местами.
Решение задачи: «Даны два числа в двоичном виде»
textual
Листинг программы
.model small .386 .data a db 00101000b b db 01100100b .stack db 255 dup(?) .code start: mov ax,@data mov ds,ax mov al,a mov bl,b shl al,2 shr bl,1 or al,bl mov bl,al and bl,10000001b and al,01111110b shl bx,1 shl bh,7 shl bl,5 rol bx,1 or al,bl mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
- .model small — Указывает модель сегментной памяти для программы
- .386 — Указывает, что нужно использовать 32-битные регистры
- .data — Определяет сегмент данных
- a db 00101000b — Задает значение переменной a в двоичном виде
- b db 01100100b — Задает значение переменной b в двоичном виде
- .stack — Определяет сегмент стека
- db 255 dup(?) — Формирует стек размером 255 байт
- .code — Определяет сегмент кода
- start: — Определяет точку входа в программу
- mov ax,@data — Переносит сегмент данных в регистр ax
- mov ds,ax — Устанавливает сегмент данных в качестве текущего сегмента
- mov al,a — Переносит значение переменной a в регистр al
- mov bl,b — Переносит значение переменной b в регистр bl
- shl al,2 — Сдвигает значение регистра al на 2 позиции вправо
- shr bl,1 — Сдвигает значение регистра bl на 1 позицию вправо
- or al,bl — Совершает побитовое ИЛИ между значениями регистра al и bl
- mov bl,al — Переносит значение регистра al в регистр bl
- and bl,10000001b — Применяет побитовую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ между значением регистра bl и 10000001b
- and al,01111110b — Применяет побитовую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ между значением регистра al и 01111110b
- shl bx,1 — Сдвигает значение регистра bx на 1 позицию вправо
- shl bh,7 — Сдвигает значение регистра bh на 7 позиций вправо
- shl bl,5 — Сдвигает значение регистра bl на 5 позиций вправо
- rol bx,1 — Сдвигает значение регистра bx на 1 позицию влево с инвертированием
- or al,bl — Совершает побитовое ИЛИ между значениями регистра al и bl
- mov ah,4Ch — Переносит значение регистра ah в регистр ah, используемый для вызова функции
- mov al,00h — Переносит значение регистра al в регистр al, используемый для вызова функции
- int 21h — Вызывает функцию с номером 21 (вывод сообщения)
- end start — Окончание программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д