Даны два числа в двоичном виде - 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

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

  1. .model small — Указывает модель сегментной памяти для программы
  2. .386 — Указывает, что нужно использовать 32-битные регистры
  3. .data — Определяет сегмент данных
  4. a db 00101000b — Задает значение переменной a в двоичном виде
  5. b db 01100100b — Задает значение переменной b в двоичном виде
  6. .stack — Определяет сегмент стека
  7. db 255 dup(?) — Формирует стек размером 255 байт
  8. .code — Определяет сегмент кода
  9. start: — Определяет точку входа в программу
  10. mov ax,@data — Переносит сегмент данных в регистр ax
  11. mov ds,ax — Устанавливает сегмент данных в качестве текущего сегмента
  12. mov al,a — Переносит значение переменной a в регистр al
  13. mov bl,b — Переносит значение переменной b в регистр bl
  14. shl al,2 — Сдвигает значение регистра al на 2 позиции вправо
  15. shr bl,1 — Сдвигает значение регистра bl на 1 позицию вправо
  16. or al,bl — Совершает побитовое ИЛИ между значениями регистра al и bl
  17. mov bl,al — Переносит значение регистра al в регистр bl
  18. and bl,10000001b — Применяет побитовую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ между значением регистра bl и 10000001b
  19. and al,01111110b — Применяет побитовую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ между значением регистра al и 01111110b
  20. shl bx,1 — Сдвигает значение регистра bx на 1 позицию вправо
  21. shl bh,7 — Сдвигает значение регистра bh на 7 позиций вправо
  22. shl bl,5 — Сдвигает значение регистра bl на 5 позиций вправо
  23. rol bx,1 — Сдвигает значение регистра bx на 1 позицию влево с инвертированием
  24. or al,bl — Совершает побитовое ИЛИ между значениями регистра al и bl
  25. mov ah,4Ch — Переносит значение регистра ah в регистр ah, используемый для вызова функции
  26. mov al,00h — Переносит значение регистра al в регистр al, используемый для вызова функции
  27. int 21h — Вызывает функцию с номером 21 (вывод сообщения)
  28. end start — Окончание программы

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


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

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

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