Многобайтовое сложение и вычитание целых чисел - Assembler

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

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

Составьте программу, выполняющую многобайтовое сложение и вычитание целых чисел Сложение выполнить с использованием 32-разрядных регистров, вычитание без использования 32-разрядных регистров. A:="BF82D9569B425443H" B:="88ABCDCADDB78822H"

Решение задачи: «Многобайтовое сложение и вычитание целых чисел»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .stack 100h
  5.  
  6. .data
  7. A dq 0BF82D9569B425443h
  8. B dq 088ABCDCADDB78822h
  9. C db 9 dup(?)
  10.  
  11. .code
  12. start:
  13. mov ax,@data
  14. mov ds,ax
  15.  
  16. clc
  17. lea si,A
  18. lea di,B
  19. lea bx,C
  20. mov cx,4
  21. minus:
  22. mov dx,word ptr [si]
  23. mov ax,word ptr [di]
  24.  
  25. sbb dx,ax
  26.  
  27. lahf
  28.  
  29. mov word ptr [bx],dx
  30.  
  31. add bx,2
  32. add si,2
  33. add di,2
  34.  
  35. sahf
  36. loop minus
  37.  
  38. sbb byte ptr C+8,0
  39.  
  40. mov ah,4Ch
  41. int 21h
  42. end start

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

  1. Установка сегмента данных на сегмент, на который указывает переменная ax.
  2. Установка сегмента стека на 100h.
  3. Объявление переменных A, B и C.
  4. Начало выполнения кода с метки start.
  5. Переменная ax получает значение сегмента данных.
  6. Переменная ds получает значение сегмента данных.
  7. Очистка флага переноса ввода-вывода.
  8. Переменная si получает смещение строки A.
  9. Переменная di получает смещение строки B.
  10. Переменная bx получает смещение строки C.
  11. Переменная cx получает значение 4.
  12. Начало цикла с метки minus.
  13. Переменная dx получает значение из памяти по смещению si.
  14. Переменная ax получает значение из памяти по смещению di.
  15. Вычитание значения dx из ax с использованием флага переноса.
  16. Очистка флага переноса ввода-вывода.
  17. Запись значения dx в память по смещению bx.
  18. Увеличение bx на 2.
  19. Увеличение si на 2.
  20. Увеличение di на 2.
  21. Запись значения ah в память по смещению C+8.
  22. Ввод значения 4Ch в ah.
  23. Вызов прерывания 21h.
  24. Конец выполнения кода с метки start.

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


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

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

9   голосов , оценка 4.444 из 5

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

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

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