Даны два числа в двоичном виде - 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 — Окончание программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д