FPU, простое уравнение - Assembler

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

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

Нужно найти значение функции при x = 5.0: f(x) = sin(x) + ln(x) Желательно с комментариями.

Решение задачи: «FPU, простое уравнение»

textual
Листинг программы
fld x; st(0)=x
fsin; st(0)=sin(x) 
fldln2; st(0)=ln(2) st(1)=sin(x)
fld x; st(0)=x st(1)=ln(2) st(2)=sin(x)
fyl2x; st(0)=log2(x)*ln(2)=ln(x) st(1)=sin(x)
faddp st(1),st; st(0)=ln(x)+sin(x)

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

  1. fld x; st(0)=x — В этой инструкции FPU загружает значение переменной x и сохраняет его в регистре st(0).
  2. fsin; st(0)=sin(x) — Эта инструкция вычисляет синус значения в регистре st(0) и сохраняет результат обратно в этот регистр.
  3. fldln2; st(0)=ln(2) st(1)=sin(x) — Здесь FPU загружает значение ln(2) в регистр st(0) и значение sin(x) в регистр st(1).
  4. fld x; st(0)=x st(1)=ln(2) st(2)=sin(x) — В этой инструкции FPU загружает значение x в регистр st(0), ln(2) в регистр st(1) и sin(x) в регистр st(2).
  5. *fyl2x; st(0)=log2(x)ln(2)=ln(x) st(1)=sin(x)** — Эта инструкция вычисляет логарифм x по основанию ln(2) и сохраняет результат в регистр st(0). Также она вычисляет sin(x) и сохраняет результат в регистр st(1).
  6. faddp st(1),st; st(0)=ln(x)+sin(x) — Эта инструкция складывает значения в регистрах st(0) и st(1), сохраняя результат в регистре st(0). Таким образом, ln(x) и sin(x) складываются.

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

8   голосов , оценка 3.625 из 5
Похожие ответы