String rückwärts kopieren



  • greetz 🙂

    ich habe die Aufgabe den String "This is the source string" in target rückwärts zu kopieren. Also gnirts.... etc. Ich habs mal so probiert:

    daten:
    source BYTE "This is the source string", 0
    target BYTE SIZEOF source DUP(0)
    
    	mov ecx, SIZEOF source
    	mov esi, OFFSET source
    	add esi, sizeof source
    	mov eax, OFFSET target
    l2:
    	mov al, [esi]
    	mov [eax], al
    	DEC esi
    	INC eax
    	loop l2
    

    Aber laut dem Debugger stimmt da irgendwas nicht. Ich kann es zwar assemblieren aber im daten segment sieht das ganz anders aus.



  • Die Lösung würde mich auch interessieren.
    Würde perfekt in den PrettyOS Rechner passen.

    Cheers, Lukas



  • Was fuer einen Assembler verwendest du?
    So oder so kann ich mir nicht vorstellen, dass dir "SIZEOF" die Laenge eines Strings liefert.
    Wenn du aber beruecksichtigst, dass die Strings spaeter genau in der Reihenfolge im Speicher landen, wie du sie hier anlegst, kannst du die Laenge einfach aus der Diffirenz der beiden Label-Adressen berechnen. Sonst bleibt dir immer noch einfaches Abzaehlen der Zeichen und direkt die Konstante hinschreiben.

    Als naechstes lies dir mal EAX ... AX in den ASM FAQ durch und schau dir deinen Code nochmal gruendlich an. Da sollte dir dann was auffallen. 😉



  • sizeof gibt die bytes zurück und hier ist byte ja = anzahl.
    Was sollte mir denn da auffallen? ich brauch für bytes nur al



  • achja masm benutze ich



  • Ok, scheinst recht zu haben mit sizeof.

    Beim Lesen des verlinkten Threads sollte dir auffallen, warum dein Code nicht funktioniert. Wenn das nicht der Fall war, kannst du den Thread eigentlich nur nicht (gruendlich genug) gelesen haben, oder dir ist entgangen, dass du eax schon zum Adressieren benutzt.



  • oh man ich Dummbeutel 👎
    Dankeschön für die Hilfe


Anmelden zum Antworten