AGB  ·  Datenschutz  ·  Impressum  







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

ASM real werte!

Ein Thema von Eichhoernchen · begonnen am 13. Sep 2005 · letzter Beitrag vom 14. Sep 2005
Antwort Antwort
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#1

ASM real werte!

  Alt 13. Sep 2005, 21:08
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?
Jan
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: ASM real werte!

  Alt 13. Sep 2005, 21:11
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).
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#3

Re: ASM real werte!

  Alt 13. Sep 2005, 22:31
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)
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ASM real werte!

  Alt 14. Sep 2005, 14:57
danke BlackJoker die Seite ist echt klasse und die ; lass ich dann in Zukunft weg!
Jan
  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 17:04 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