Вычисление выражения по формуле. - Assembler (223199)
Формулировка задачи:
Здравствуйте, необходимо написать программу вычисления выражение.Здесь Алгебраическая сумма i=от 1 до 2. Пример y=(a^2+2*a+c)*i, где a,c-любые числа. Написать нужно будет в цикле
Решение задачи: «Вычисление выражения по формуле.»
textual
Листинг программы
- .model small
- .stack 100h
- .data
- a db 3
- c db 4
- i dw 2
- sum dd 0
- .code
- .486
- begin:
- mov ax, @data
- mov ds, ax
- mov al, a
- imul al ; ax = a^2
- mov bx, ax ; bx = a^2
- mov al, a ; al = a
- cbw ; ax = a
- shl ax, 1 ; ax = 2a
- add bx, ax ; bx = a^2 + 2a
- mov al, c ; al = c
- cbw ; ax = c
- add bx, ax ; ax = a^2 + 2a + c
- mov cx, i ;
- m1:
- mov ax, bx ; bx = значение нашего выражения
- imul cx ; умножаем на i
- shl edx, 8 ; сдвигаем старшую часть произведения на 8.
- mov dx, ax ; помещаем младшую часть в dx
- add sum, edx ; sum = sum + edx
- loop m1
- mov ah, 4ch
- int 21h
- end begin
Объяснение кода листинга программы
- Код начинается с описания сегментов данных и кода, а также инициализации флага конца кадра (EOF) в 0.
- Переменные a и c инициализированы значениями 3 и 4 соответственно.
- Переменная i инициализирована значением 2.
- Переменная sum инициализирована значением 0.
- Код выполняет преобразование регистровых переменных в сегмент данных и обратно, чтобы обеспечить доступ к переменным a и c.
- Код выполняет вычисление значения a в квадрате, помещая результат в регистр bx.
- Код выполняет вычисление значения a в квадрате, помещая результат в регистр ax.
- Код выполняет вычисление значения a в квадрате, помещая результат в регистр bx.
- Код выполняет сложение bx и ax, чтобы получить значение a в квадрате + 2a.
- Код выполняет преобразование регистра al в слово (cbw), чтобы поместить значение a в регистры ax и bx.
- Код выполняет сдвиг значения ax на 1, чтобы получить 2a.
- Код выполняет сложение bx и ax, чтобы получить значение a в квадрате + 2a + c.
- Код выполняет инициализацию цикла m1, который будет выполняться i раз.
- Внутри цикла m1, код выполняет вычисление значения выражения, помещая результат в регистр bx.
- Код выполняет умножение значения bx на i и помещает результат в регистр edx.
- Код выполняет сдвиг значения edx на 8, чтобы поместить старшую часть произведения в старший регистр.
- Код выполняет сложение младшего регистра dx и edx, чтобы получить сумму, которую затем помещают в переменную sum.
- Код выполняет цикл m1 i раз.
- Код выполняет завершающую обработку, очищая регистры и выходя из программы.
- Код возвращает управление операционной системе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д