Probleme umkehren einer Zeichenfolge in der Montage

Ich versuche das umkehren einer Zeichenfolge in der Montage.
Aber mein code scheint nicht korrekt zu funktionieren.
Ich habe eine newline-Schnur für bessere Lesbarkeit.

Ich bin mit linux und nasm als compiler.

Dachte ich, dass wenn ich nahm die Werte der adresspointers und schaltete Sie an der richtigen Stelle, der string würde schließlich Umgekehrt werden, und dann wieder normal.

Dies ist mein code:

section .data
    hello     db 'Hello world!'
    helloLen  equ $-hello
    derp db '=========',10
    derplen equ $-derp

section .text
    global main

main:
    mov eax,0
    mov ecx,helloLen

    reverse:
        ;move pointer
        mov ebx,hello
        add ebx,eax
        push eax

        ;move pointer
        mov eax,hello
        add eax,ecx
        push ecx

        ;switch bytes
        push ebx
        mov ebx,[ebx]
        mov [eax],ebx
        pop ebx
        mov eax,[eax]
        mov [ebx],eax

        ;print text
        mov eax,4
        mov ebx,1
        mov ecx,hello
        mov edx,helloLen
        int 80h

        ;Print newline
        mov eax,4
        mov ebx,1
        mov ecx,derp
        mov edx,derplen
        int 80h

        ;increment and decrement
        pop ecx
        dec ecx
        pop eax
        inc eax

        cmp eax,helloLen
    jne reverse

    end:
        mov eax,1
        mov ebx,0
        int 80h

Dies ist die Ausgabe die ich bekomme:

Hello world!Hell=====
Hello worldellol=====
Hello worlllo ol=====
Hello worlo w ol=====
Hello woo wow ol=====
Hello wooooow ol=====
Hello wooooow ol=====
Helloooooooow ol=====
Helloooooooow ol=====
Helooowooooow ol=====
Heoow wooooow ol=====
How o wooooow ol=====
  • Es gibt ein paar Dinge, die ich beachten rechts von der Fledermaus: 1) Wenn Sie die swap-Charaktere, sollten Sie das austauschen von bytes, nicht dwords. 2) ecx sollte helloLen-1. 3) Die Abbruchbedingung für den Algorithmus ist falsch; Sie werden am Ende tauschen jedes Zeichen zweimal. (Aufhören, wenn eax >= ecx)
InformationsquelleAutor Horse SMith | 2012-11-27
Schreibe einen Kommentar