Einzelnen Beitrag anzeigen

anku

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

Problem bei der Anwendung von des div Operators (Assembler)

  Alt 20. Sep 2003, 20: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