Programare in limbaj de asamblare - PowerPoint PPT Presentation

About This Presentation
Title:

Programare in limbaj de asamblare

Description:

Programare in limbaj de asamblare Instructiuni in virgula flotanta (continuare) Alte instructiuni ale coprocesorului matematic FINIT - initializare coprocesor aduce ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 11
Provided by: gyu5
Category:

less

Transcript and Presenter's Notes

Title: Programare in limbaj de asamblare


1
Programare in limbaj de asamblare
  • Instructiuni in virgula flotanta
  • (continuare)

2
Alte instructiuni ale coprocesorului matematic
  • FINIT - initializare coprocesor
  • aduce coprocesorul intr-o stare cunoscuta
  • reg. de control (CW) 37H
  • reg. de stare (SW) 0
  • FWAIT - forteaza procesorul x86 sa astepte
    terminarea instructiunii curente din coprocesor
  • evita executia in paralel a unor operatii care
    afecteaza aceleasi variabile

3
Operatii cu registrele speciale
  • FLDCW si FSTCW - incarcare si salvare registru
    de control
  • sintaxa fldcw mem_16 CWltmem_16
  • fstcw mem_16
    mem_16ltCW
  • FLDSW si FSTSW - incarcare si salvare registru de
    stare
  • sintaxa fldsw ax SWltAX
  • fstsw ax AXltSW
  • fldcw mem_16
    CWltmem_16
  • fstcw mem_16
    mem_16ltCW

4
Salvare si refacere stare coprocesor
  • FLDENV si FSTENV - incarca si salveaza mediul
    de lucru al coprocesorului
  • se transfera 14 octeti avand urmatorul format
  • reg. de control (CW) - 2 octeti
  • reg. de stare (SW) - 2 octeti
  • cuvantul atasat (tag) - 2 octeti
  • poantor de instructiuni - 20 biti
  • codul de instructiune 11 biti
  • poantor de date 20 biti
  • restul nefolositi

5
Operatii cu registrele speciale
  • FSAVE/FNSAVE si FRSTORE
  • salveaza si respectiv refac starea
    coprocesorului, adica registrele de control,
    stare si de date folosite pt. comutare de
    context
  • se transfera 94 octeti
  • 14 octeti pt. mediu
  • 80 octeti - continutul stivei ( ST(0) ... ST(7))
  • sintaxa fsave mem_94_oct
  • fnsave mem_94_oct
  • frstore mem_94_oct

6
Alte instructiuni
  • FINCSTP si FDECSTP - incrementare si decrementare
    poantor de stiva (modulo 8)
  • FNOP - no operation - pt. temporizare
  • FFREE - modifica tag-ul atasat unui registru,
    pentru a marca faptul ca registru este gol
  • sintaxa
  • ffree st(i) marcheaza reg. i ca fiind gol
  • FCLEX/FNCLEX - sterge toti bitii de exceptie,
    indicatorul Busy si eroarea de stiva

7
Instructiuni cu intregi
  • inainte de operatia aritmetica valoarea intreaga
    este convertita in virgula flotanta pe 80 biti
  • sintaxa
  • fiadd int fidiv int
  • fisub int fidivr int
  • fisubr int ficom int
  • fimul int ficomp int
  • int - intreg pe 16 sau 32 biti

8
Exemple
  • Calculul cotangentei
  • fld arc
  • fsincos
  • fdivr
  • fst cotangenta
  • Arccotangenta actg(x)atg(1/x)
  • fld1 pune 1 pe stiva
  • fld cotang
  • fpatan atan(st(1)/st(0))
  • fst arc

9
Exemple
  • Arcsinus asin(x) atan(sqrt(xx/(1-xx)))
  • fld sinus
  • fld st(0) Duplica x pe stiva
  • fmul calculeaza xx.
  • fld st(0) Duplica xx pe stiva.
  • fld1 Calculeaza 1-X2.
  • fsubr
  • fdiv Calculeaza X2/(1-X2).
  • fsqrt Calculeaza sqrt(x2/(1-X2)).
  • fld1 Calculeaza arctangent.
  • fpatan

10
Exemple
  • Logaritm in baza 10 din x
  • lg10(x)lg2(x)/lg2(10)
  • fld1
  • fld x
  • fyl2x Calculeaza 1lg(x).
  • fldl2t Incarca lg(10).
  • fdiv Calculeaza lg(x)/lg(10).
Write a Comment
User Comments (0)
About PowerShow.com