Вычислить выражение - Assembler (223269)

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

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

Здравствуйте, можете помочь с задачей?????? Нужно на ассемблере вычислить выражение y=(〖5a〗^2-d^3)/(e^2+x^2)

Решение задачи: «Вычислить выражение»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
a       dw      5
d       dw      -7
e       dw      12
x       dw      -6
y       dw      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     ax,     e
        imul    ax
        mov     cx,     ax
        mov     ax,     x
        imul    ax
        add     cx,     ax
 
        mov     ax,     d
        imul    d
        imul    d
        mov     si,     dx
        mov     di,     ax
        mov     ax,     5
        imul    a
        imul    ax
        sub     ax,     di
        sbb     dx,     si
        idiv    cx
        mov     y,      ax
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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

  1. Объявлены переменные на сегменте данных: a, d, e, x, y. Значения переменных: a=5, d=-7, e=12, x=-6, y еще не определена.
  2. Загрузка сегмента данных в регистр ax.
  3. Переменная e умножается на ax (e=12*5=60).
  4. Результат умножения (60) добавляется к переменной cx (x=60).
  5. Переменная d умножается на ax (d=(-7)*5=-35).
  6. Результат умножения (-35) добавляется к переменной cx (x=-35+60=25).
  7. Переменная d снова умножается на ax (d=(-7)*25=-175).
  8. Результат умножения (-175) добавляется к переменной dx (dx=-175).
  9. Переменная a умножается на ax (a=5*5=25).
  10. Результат умножения (25) вычитается из переменной ax (ax=25-(-175)=200).
  11. Результат вычитания (200) сохраняется в переменной dx (dx=200).
  12. Переменная cx делятся на переменные ax и dx (x=25/200=0,5).
  13. Переменная y инициализируется значением переменной ax (y=0,5).
  14. Запись в стандартный вывод сообщения Press any key to continue....
  15. Код завершается.

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

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