Variablen?!



  • Hab diese Tabelle gefunden (soll Variablentypen von Pascal und ihre Gegenstücke in Assembler zeigen).

    byte.........BYTE (8 Bit)
    word.........WORD (16 Bit)
    shortint.....BYTE (8 Bit)
    integer......WORD (16 Bit)
    real.........FWORD (48 Bit)
    single.......DWORD (32 Bit)
    double.......QWORD (64 Bit)
    comp.........QWORD (64 Bit)
    pointer......DWORD (32 Bit)

    Leider bringt mich das nicht weiter, da ich nicht weis wie man mit denen umgeht. Kann mir jemand helfen oder ein Tut empfehlen, denn in den Tuts die ich hate, sind die auf sowas nicht eingegangen!

    mfg A-lex



  • Kann mir jemand helfen? Wie mache ich jezt klar, dass ich ein double haben will und nicht was anderes, den in den datentyp können ja vieles reinpassen!

    mfg A-lex



  • A-lex schrieb:

    Wie mache ich jezt klar, dass ich ein double haben will und nicht was anderes, den in den datentyp können ja vieles reinpassen!

    Zuweisung einer Fliesskommazahl funktioniert in den meisten Assemblern folgendermassen (hier am Beispiel von TASM) :

    dataseg ;irgendein initialisiertes Datensegment...
    MyDouble dq 1.2 ;1,2 - 8Byte QWord
    

    Fertig ist deine mit dem Wert 1,2 vorinitialisierte 8Byte real-Variable (long-real).

    Hth, ansonsten weiss ich nicht, was du meinst...
    Eine feste Zuweisung des Typs "double" zu einer Variable ist ja wie bereits gesagt nicht moeglich.



  • Kann man mit der Variable normal rechnen z.B. 1.2 - 30.9?

    mfg A-lex



  • Ja. 😕



  • Wie!!



  • Krieg' dich mal wieder ein... 🙄
    Kleines Beispiel unter Verwendung der FPU - wieder TASM:

    IDEAL
    P586
    model tiny ;DOS .com
    
    dataseg
    MyFloat dq 1.2 ;long-real
    
    codeseg
    org 100h
    start:
    ;FPU initialisieren
    finit
    wait
    ;real laden
    fld [qword ptr ds:MyFloat]
    ;real auf st(0) addieren
    fadd [qword ptr ds:MyFloat]
    ;real in Speicher schreiben und Stack leeren
    fstp [qword ptr ds:MyFloat]
    ;beenden
    ret
    End Start
    

    Wenn du mehr ueber die FPU lernen willst, kauf' dir ein gutes Asm-Buch. => BoardSuche - wurden schon oefters welche vorgeschlagen.
    Alternativ schauen, wie dein Compiler das macht - wurde auch schon einmal vorgeschlagen.
    Mit google habe ich das hier gefunden. Sieht ganz brauchbar aus.
    Ansonsten darfst du natuerlich auch selbst dein Glueck mit google versuchen. 😉



  • a-lex: Schau Dir mal die Fliesskomma-Befehle des Prozessors an.

    FADD z.B. addiert zwei Fliesskommazahlen. Du kannst Dir das IA-32 Referenzhandbuch als PDF-Datei direkt bei Intel runterladen. Geh mal auf deren Webseite zu Mikroprozessoren, such Dir einen aus, und dann zu technische Dokumentation, Referenzhandbuecher usw.

    Mit FLD kannst Du z.B. eine Variable in ein Fliesskomma-Register laden.



  • Kann man eine Konstante der FPU übergeben??

    mfg A-lex



  • nur einige sehr häufig benutzte konstanten, zb:

    fldz ; lädt die 0 nach st(0)
    fld1 ; lädt die 1.0 in st(0)
    fldpi ; lädt die zahl [latex]\pi[/latex] in st(0)
    

    all das, wofür es keinen befehl gibt, musst du in einer speicherstelle abspeichern und dann die speicherstelle laden:

    blubb dd 0.15391623
    ...
    ...
    ...
    fld dword ptr [blubb]
    

Anmelden zum Antworten