Даны два числа в двоичном виде - Assembler (223438)

Узнай цену своей работы

Формулировка задачи:

Помогите с задачкой на ассемблере. Даны два числа в двоичном виде. Первое число умножить на 4, второе разделить на 2. Результаты логически сложить. 0-ой и 7-ой разряды, в полученном значении, поменять местами.

Решение задачи: «Даны два числа в двоичном виде»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .data
  5. a db 00101000b
  6. b db 01100100b
  7.  
  8. .stack
  9. db 255 dup(?)
  10.  
  11. .code
  12. start:
  13. mov ax,@data
  14. mov ds,ax
  15.  
  16. mov al,a
  17. mov bl,b
  18.  
  19. shl al,2
  20. shr bl,1
  21.  
  22. or al,bl
  23.  
  24. mov bl,al
  25.  
  26. and bl,10000001b
  27. and al,01111110b
  28.  
  29. shl bx,1
  30. shl bh,7
  31. shl bl,5
  32. rol bx,1
  33.  
  34. or al,bl
  35.    
  36. mov ah,4Ch
  37. mov al,00h
  38. int 21h  
  39. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы