AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

assembler

Ein Thema von JJFCNC · begonnen am 20. Mai 2021 · letzter Beitrag vom 20. Mai 2021
Antwort Antwort
JJFCNC

Registriert seit: 2. Feb 2021
3 Beiträge
 
Delphi 10.4 Sydney
 
#1

assembler

  Alt 20. Mai 2021, 18:03
hi guy's

ich kann machen was ich will, die Abfrage: THEN_b
funktioniert nicht.

Weiß jemand einen Rat ?

Delphi-Quellcode:
              asm
                INC nZaehler
                JMP @start
              @start:
                FLD apX
                FMUL Rate
                FST sum_asm
                FLD apMin
                FCOM ST(1)
                JNA @THEN_a // wenn nicht größer
                JMP @ELSE_a
              @THEN_a:
                FLD apMin
                FSTP apX
                JMP @END_a
              @ELSE_a:
                FLD apX
                FMUL Rate
                FSTP apX
                JMP @END_a
              @END_a:
                FLD Summe
                FADD apX
                FST sum_asm
                FLD H
                FCOM ST(1)
                JNB @THEN_b // wenn nicht kleiner
                JMP @END_b
              @THEN_b:
                FLD H
                FSUB Summe
                FSTP apX
                JMP @END_b
              @END_b:
                FLD apX
                FMUL halbe_asm
                FADD D_ist
                FSTP D_Ist
                FLD Summe
                FADD apX
                FSTP Summe
              end;
Andreas
  Mit Zitat antworten Zitat
JJFCNC

Registriert seit: 2. Feb 2021
3 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: assembler

  Alt 20. Mai 2021, 18:12
habe debugger hardcopy erstellt.
siehe Anlage.
Miniaturansicht angehängter Grafiken
bildschirmfoto-2021-05-20-um-18.10.14.png  
Andreas
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#3

AW: assembler

  Alt 20. Mai 2021, 19:24
Ich nehme an du willst FCOM auswerten.
Falls ja, solltest du dir mal den Befehl genauer ansehen.
Der ändert ja keine Statusflags der ALU, folglich machen die conditional jumps auch keinen Sinn.

Arbeite persönlich nicht mit der FPU. Müsste das auch selbst nachlesen. Nur funktionieren kann es nicht, so viel ist sicher.

Da das vermutlich ja eh nur Übungskarakter hat, solltest du dich inhaltlich etwas damit beschäftigen.
Oder lass es einfach den Compiler machen und betrachte den Maschinencode den er erstellt.
Da kannst vermutlich viel lernen.

Edit:
Hier schaue ich nach: https://www.felixcloutier.com/x86/index.html
FPU: http://website.masmforum.com/tutorials/fptute/

Geändert von markus888 (20. Mai 2021 um 19:27 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.058 Beiträge
 
Delphi XE2 Professional
 
#4

AW: assembler

  Alt 20. Mai 2021, 23:52
FCOM setzt nur die Flags C0, C2, C3 im FPU-Status-Word, nicht aber das EFlags-Register, welches von Jxx ausgewertet wird.
Verwende anstatt FCOMI oder FUCOMI

Aus Intel® 64 and IA-32 Architectures Software Developer’s Manual

FCOM/FCOMP/FCOMPP—Compare Floating Point Values
Description
Compares the contents of register ST(0) and source value and sets condition code
flags C0, C2, and C3 in the FPU status word according to the results (see the table
below). The source operand can be a data register or a memory location. If no source
operand is given, the value in ST(0) is compared with the value in ST(1). The sign of
zero is ignored, so that –0.0 is equal to +0.0.

FCOMI/FCOMIP/ FUCOMI/FUCOMIP—Compare Floating Point Values and Set EFLAGS
Description
Performs an unordered comparison of the contents of registers ST(0) and ST(i) and
sets the status flags ZF, PF, and CF in the EFLAGS register according to the results
(see the table below). The sign of zero is ignored for comparisons, so that –0.0 is
equal to +0.0.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz