Вычислить выражение X=((d^3)/c)-(39*(c^2)*((a-b)^3))/((a^2)*b+2a) - Assembler
Формулировка задачи:
Как запрограммировать на assembler такое выражение
X=((d^3)/c)-(39*(c^2)*((a-b)^3))/((a^2)*b+2a)
a=4;b=2;c=5;d=10;
Решение задачи: «Вычислить выражение X=((d^3)/c)-(39*(c^2)*((a-b)^3))/((a^2)*b+2a)»
textual
Листинг программы
%TITLE "Prog 7-4" ;X=d^3/c-(39*c^2*(a-b)^3)/(a^2*b+2*a) IDEAL MODEL small STACK 256 DATASEG exCode DB 0 a DB 4 b DB 2 c DB 5 d DB 10 x DW ? k1 DB 39 k2 DB 2 CODESEG Start: mov ax,@data mov ds,ax xor ax,ax xor cx,cx mov al,[c] mov bl ,[a] mul [c] ;c^2 mul [k1];39*c^2 mov cl,[a];cl=a sub cl,[b];cl=a-b mul cx ;;39*c^2*(a-b) mul cx ;39*c^2*(a-b)*(a-b) mul cx ;39*c^2*(a-b)*(a-b)*(a-b) push ax push dx xor ax,ax xor al,bl ;al=a mul [k2];ax=a*2 mov bl,al;bl=a*2 xor ax,ax xor al,[a];al=a mul al;ax=a^2 mul [b];ax=a^2*b add bx,ax;bx=a^2*b+a*2 pop dx pop ax ;ax=39*c^2*(a-b)*(a-b)*(a-b) div bx;ax=(39*c^2*(a-b)*(a-b)*(a-b))/(a^2*b+a*2) mov bx,ax xor ax,ax mov al,[d] mul [d] mul [d] ;d^3 div [c] ; d^3/c sub ax,bx ;d^3/c-(39*c^2*(a-b)*(a-b)*(a-b))/(a^2*b+a*2) mov [x],ax Exit: mov ax,4C00h int 21h END Start
Объяснение кода листинга программы
Код выполняет следующие действия:
- Задает значения переменных a, b, c, d и инициализирует регистры ax и bx нулевыми значениями.
- Вычисляет значение c^2, умножая c на c.
- Вычисляет значение 39c^2(a-b)^3, последовательно умножая 39, c, (a-b), (a-b)^2, (a-b)^3.
- Вычисляет значение a^2b+2a, умножая a на a, затем на b, затем на 2.
- Вычисляет значение d^3, последовательно умножая d, d, d.
- Вычисляет значение d^3/c.
- Вычитает из d^3/c значение (39c^2(a-b)^3)/(a^2b+2a), которое было вычислено на третьем шаге.
- Сохраняет результат в переменную x.
- В конце программы выводит на экран число 4C00h, что соответствует надписи
Prog 7-4
. Переменные: - a - 4
- b - 2
- c - 5
- d - 10
- x - ? (результат вычисления)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д