Hallo zusammen!
Ich hab folgendes Anliegen. Ich lerne gerade Assembler und habe versucht wie folgt eine Function zu schreiben, welche einen bool`schen Rückgabewert hat. Nach meinen Informationen werden die Rückgabewerte in Delphi im EAX bzw AX oder AL - Register zurückgegeben. False = 0, True = 1 oder?! Boolean ist ein 1Byte Datentyp, also müsste das AL-Register ausreichen. Jedoch funktioniert es mit keinem der 3 Varianten, dass der Rückgabewert korrekt zurückgeliefert wird
Nuja ich habe folgenden Code geschrieben. Die Routine läuft eigentl. so wie sie denk ich soll, bis auf die Tatsache das es scheint, dass diese Routine keinen Rückgabewert liefert.
Hat jemand eine Idee woran dies liegt? Falls irgendwas falsch ist, weisst mich bitte drauf hin
Hier der Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| function isINFifo(value: LongWord):Boolean; begin asm PUSH EDI PUSH ECX PUSH EBX
call getNumberOfElements MOV ECX, EAX MOV EAX, value lea edi, fifo repne scasd
Cmp ecx,0 JNE @@gefunden mov ebx, value cmp [edi-4],ebx je @@gefunden
@@nichtgefunden: mov ax,0 jmp @@ende @@gefunden: mov ax,1
@@ende:
POP EBX POP ECX POP EDI end; end; |
so far so long
mfg Morph
Moderiert von raziel: Code- durch Delphi-Tags ersetzt