AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem bei der Anwendung von des div Operators (Assembler)
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei der Anwendung von des div Operators (Assembler)

Ein Thema von anku · begonnen am 20. Sep 2003 · letzter Beitrag vom 20. Sep 2003
 
anku

Registriert seit: 13. Sep 2003
51 Beiträge
 
#1

Problem bei der Anwendung von des div Operators (Assembler)

  Alt 20. Sep 2003, 19:56
Hi,

ich versuche gerade mir (Inline) Assembler bei zu bringen und hab nun ein Problem bei der Verwendung des 'div' Operators. Mein kleines Programm soll einfach testen ob eine Zahl Prim ist oder nicht.
Am besten erstmal ein bissel Source. Ich hab ihn soweit ich es selbst verstehe Kommentiert

Delphi-Quellcode:
procedure Test4Prim( Value: Integer);
var Primat: Integer;
begin
        asm

                mov eax, Value // Value => eax
                mov ecx, 2 // Teiler => ecx
                mov edx, 1 // edx initielisieren, damit edx <> 0
        @Loop:
                cmp eax, ecx // Teiler und Zahl vergleichen

                je @Prim // if eax = ecx then Prim

                push eax // eax Sichern

                div ecx // eax durch ecx teilen (??) hier bricht er ab..

                inc ecx // Inc( Teiler bzw ecx, 1)

                cmp edx, 0
                pop eax // eax wiederherstellen, da durch Division überschrieben

                jnz @Loop // if RestDerDivision (edx) <> 0 then goto Loop ( ZeroFlag nicht gesetzt)
                jz @NotPrim // if RestDerDivision (edx) = 0 then goto NotPrim ( es ist keine Primzahl)

        @Prim:
                mov Primat, 1 // Primat auf 1 setzen, wird für die Ausgabe abgefragt
                jmp @Exit // gehe sofort nach Exit

        @NotPrim:
                mov Primat, 0 // Primat auf 0 setzen, wird für die Ausgabe benötigt
        @Exit:
                nop // Tu garnix IMHO die beste Anweisung, sollte es auch im Berufsleben geben :)

        end;
        if Primat = 1 then Writeln('Das war eine Primzahl')
        else Writeln('Das war keine Primzahl');
end;
an der Stelle
div ecx // eax durch ecx teilen (??) bricht das Programm einfach ab.. der Debuger meldet nix..

Kann mir jemand sagen was ich anders machen muss? Kann man womöglich nicht durch das ECX Register teilen?
Vielen Dank schonmal für eure Hilfe

MfG
anku
  Mit Zitat antworten Zitat
 


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 02:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz