Вычисление выражения по формуле. - Assembler (223199)

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

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

Здравствуйте, необходимо написать программу вычисления выражение.Здесь Алгебраическая сумма i=от 1 до 2. Пример y=(a^2+2*a+c)*i, где a,c-любые числа. Написать нужно будет в цикле

Решение задачи: «Вычисление выражения по формуле.»

textual
Листинг программы
  1. .model small
  2. .stack 100h
  3. .data
  4. a db 3
  5. c db 4
  6. i dw 2
  7. sum dd 0
  8. .code
  9. .486
  10. begin:
  11. mov ax, @data
  12. mov ds, ax
  13.  
  14. mov al, a
  15. imul al ; ax = a^2
  16. mov bx, ax ; bx = a^2
  17. mov al, a ; al = a
  18. cbw ; ax = a
  19. shl ax, 1 ; ax = 2a
  20. add bx, ax ; bx = a^2 + 2a
  21. mov al, c ; al = c
  22. cbw ; ax = c
  23. add bx, ax ; ax = a^2 + 2a + c
  24.  
  25. mov cx, i ;
  26. m1:
  27.     mov ax, bx ; bx = значение нашего выражения
  28.     imul cx ; умножаем на i
  29.     shl edx, 8 ; сдвигаем старшую часть произведения на 8.
  30.     mov dx, ax ; помещаем младшую часть в dx
  31.     add sum, edx ; sum = sum + edx
  32. loop m1
  33.  
  34.  
  35. mov ah, 4ch
  36. int 21h
  37. end begin

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

  1. Код начинается с описания сегментов данных и кода, а также инициализации флага конца кадра (EOF) в 0.
  2. Переменные a и c инициализированы значениями 3 и 4 соответственно.
  3. Переменная i инициализирована значением 2.
  4. Переменная sum инициализирована значением 0.
  5. Код выполняет преобразование регистровых переменных в сегмент данных и обратно, чтобы обеспечить доступ к переменным a и c.
  6. Код выполняет вычисление значения a в квадрате, помещая результат в регистр bx.
  7. Код выполняет вычисление значения a в квадрате, помещая результат в регистр ax.
  8. Код выполняет вычисление значения a в квадрате, помещая результат в регистр bx.
  9. Код выполняет сложение bx и ax, чтобы получить значение a в квадрате + 2a.
  10. Код выполняет преобразование регистра al в слово (cbw), чтобы поместить значение a в регистры ax и bx.
  11. Код выполняет сдвиг значения ax на 1, чтобы получить 2a.
  12. Код выполняет сложение bx и ax, чтобы получить значение a в квадрате + 2a + c.
  13. Код выполняет инициализацию цикла m1, который будет выполняться i раз.
  14. Внутри цикла m1, код выполняет вычисление значения выражения, помещая результат в регистр bx.
  15. Код выполняет умножение значения bx на i и помещает результат в регистр edx.
  16. Код выполняет сдвиг значения edx на 8, чтобы поместить старшую часть произведения в старший регистр.
  17. Код выполняет сложение младшего регистра dx и edx, чтобы получить сумму, которую затем помещают в переменную sum.
  18. Код выполняет цикл m1 i раз.
  19. Код выполняет завершающую обработку, очищая регистры и выходя из программы.
  20. Код возвращает управление операционной системе.

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


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

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

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

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

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

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