Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Kurze ASM Hilfe zu JNB


Flamefire - Fr 08.02.08 16:39
Titel: Kurze ASM Hilfe zu JNB
Was ganeu macht der code?

Quelltext
1:
2:
3:
4:
5:
6:
0074A1D8                        > \8B7C24 70                 MOV EDI,[ESP+70]
0074A1DC                        .  BE 08000000               MOV ESI,8
0074A1E1                        .  39B424 84000000           CMP [ESP+84],ESI
0074A1E8                        .  73 04                     JNB SHORT 0074A1EE
0074A1EA                        .  8D7C24 70                 LEA EDI,[ESP+70]
0074A1EE                        >  68 2077C000               PUSH 00C07720

Er läd also den Wert von ESP+$70 in EDI und vergleicht den wert von ESP+$84 mit 8
Wenn der Vergleich fehlschlägt nimmt er stattdessden die addresse von ESP+$70
Wann springt das JNB nun?
Bei größer/gleich oder bei kleiner?
Vielen Dank


Marc. - Fr 08.02.08 16:57

Jump if not below. ;) Springe, wenn ESP+$84 größer ESI. Wenn ich micht nicht gerade ganz Irre. :P
Bei "nicht kleiner gleich" hieß es JNBE. e wie equal.

cu


Allesquarks - Fr 08.02.08 17:06

Deine Übersetzungen sind richtig nur die Negationen nicht not below=greater or equal und
not below or equal = greater


Flamefire - Sa 09.02.08 14:51

also wäre die delphi übersetzung davon

Delphi-Quelltext
1:
2:
If(PCardinal(ESP+$84)^<8then EDI:=ESP+$70
else EDI:=PCardinal(ESP+$70)^;

Richtig?


Mitmischer 1703 - Sa 09.02.08 16:11

Was ist das überhaupt für eine Sprache? :shock:


Flamefire - Sa 09.02.08 16:21

das letze von mit ne mischung aus ASM und delphi ^^