Вычислить выражение 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

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

Код выполняет следующие действия:

  1. Задает значения переменных a, b, c, d и инициализирует регистры ax и bx нулевыми значениями.
  2. Вычисляет значение c^2, умножая c на c.
  3. Вычисляет значение 39c^2(a-b)^3, последовательно умножая 39, c, (a-b), (a-b)^2, (a-b)^3.
  4. Вычисляет значение a^2b+2a, умножая a на a, затем на b, затем на 2.
  5. Вычисляет значение d^3, последовательно умножая d, d, d.
  6. Вычисляет значение d^3/c.
  7. Вычитает из d^3/c значение (39c^2(a-b)^3)/(a^2b+2a), которое было вычислено на третьем шаге.
  8. Сохраняет результат в переменную x.
  9. В конце программы выводит на экран число 4C00h, что соответствует надписи Prog 7-4. Переменные:
  10. a - 4
  11. b - 2
  12. c - 5
  13. d - 10
  14. x - ? (результат вычисления)

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

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