Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ASM real werte! (https://www.delphipraxis.net/53304-asm-real-werte.html)

Eichhoernchen 13. Sep 2005 21:08


ASM real werte!
 
Hallo,
ich hab mich heute mal rangesetzt und wollte in Delphi was mit dem Inline-Assembler machen, man muss dazu sagen ich hab keine Ahnung von ASM und daher nicht hauen wenn ich da totale kacke gemacht hab:

Delphi-Quellcode:
procedure mandelbrot(MaxIt : integer);
var x, y, n : integer;
    xc, yc, xzalt, yzalt, xz, yz, buff, buff2 : real;
Begin
 for x := 1 to Form1.Image1.Width-1 do
   Begin
     for y := 1 to Form1.Image1.Height-1 do
       Begin
        xc := x / 100 - 2.1;
        yc := y / 100 - 1.1;
        xzalt := 0;
        yzalt := 0;
        n := 0;
        while(n <= MaxIt) and (xzalt*xzalt+yzalt*yzalt < 4) do
          Begin
            asm
             INC n;
             MOV buff, xzalt;
             MOV ax,buff;
             IMUL buff;
             MOVE buff2, yzalt;
             MOV ax,buff2;
             IMUL buff2;
             SUB buff, buff2;
             ADD buff, xc;
             ADD xz, buff;
             MOV ax, 2;
             IMUL xzalt;
             MOV ax, xzalt;
             IMUL yzalt;
             ADD yzalt,yc;
             MOV yz, yzalt;
             MOV xzalt,xz;
             MOV yzalt, yz;
            end;
          end;
        if n >= MaxIt
          then Form1.Image1.Canvas.Pixels[x, y] := clblack
          else Form1.Image1.Canvas.Pixels[x, y] := clred;
       end;
   end;
end;

Ich bin mir jetzt nicht so sicher ob das stimmt, aber ich bekomme schon in der 2. ASM zeile nen Fehler, und zwar glaub ich liegt es daran das ich mit mov keine real variablen "zuweisen" kann. Wie geht das oder was mach ich falsch?

NicoDE 13. Sep 2005 21:11

Re: ASM real werte!
 
Zitat:

Zitat von Eichhoernchen
Wie geht das oder was mach ich falsch?

Du willst Fließkommazahlen als Ganzzahlen benutzen (geht nicht). Die darfst/solltest dich mit der Funktionsweise und den Befehlen der Fließkommaeinheit (FPU) beschäftigen (siehe Handbuch zum Prozessor).

BlackJack 13. Sep 2005 22:31

Re: ASM real werte!
 
hier eine Befehlsübersicht ("normale" Befehle, FPU und MMX): http://www.clipx.net/ng/iapx86/index.php

schau dir vor allem mal die befehle
FLD
FMUL
FADD
FSUB
FSTP
an.

und übrigens, bei ASM kannst du dir das ; nach jeder Zeile sparen (es sei denn du willst mehrere Instuktionen in einer Zeile unterbringen, dann müssen diese durch ; getrennt werden)

Eichhoernchen 14. Sep 2005 14:57

Re: ASM real werte!
 
danke BlackJoker die Seite ist echt klasse und die ; lass ich dann in Zukunft weg!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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