String i tablica byte'ów w asm

2012-03-19 21:55
0

Witam. Muszę napisać wstawki w asemblerze zamieniającą w pamięci dwa stringi i sumującą wszystkie elementy trzyelementowej tablicy byteów. Nie mogę korzystać z pętli.

{$ASMMODE INTEL}

var
    napis1 : string[4];
    napis2 : string[4];

begin
    readln(napis1);
    readln(napis2);

    asm
        mov edi, offset napis1
        mov esi, offset napis2
        inc edi
        inc esi

        mov eax, [edi]
        mov ebx, [esi]
        mov [edi], ebx
        mov [esi], eax

        mov eax, [edi+1]
        mov ebx, [esi+1]
        mov [edi+1], ebx
        mov [esi+1], eax

        mov eax, [edi+2]
        mov ebx, [esi+2] 
        mov [edi+2], ebx
        mov [esi+2], eax

        mov eax, [edi+3]
        mov ebx, [esi+3]
                mov [edi+3], ebx
                mov [esi+3], eax
        end;

        writeln(napis1);
        writeln(napis2);
        readln();
end.

wyświetla mi baba i abab, kiedy wpisuję aaaa i bbbb

{$ASMMODE INTEL}

var
    tablic : array[1..3] of byte;
    wynik : longint;

begin
    read(tablic[1]);
    read(tablic[2]);
    read(tablic[3]);

    asm
        mov edi, offset tablic

        mov eax, [edi]
        add eax, [edi+1]
        add eax, [edi+2]
        mov wynik, eax
    end;

    writeln(wynik);
    readln();
end.

Nic mi nie wyświetla - program się po prostu kończy.

Co robię źle?

edytowany 1x, ostatnio: madmike, 2012-03-19 22:06

Pozostało 580 znaków

2012-03-19 22:30
-123

Co robię źle?

Czytasz to wszystko jako DWORDy kiedy ci chodzi o BYTE.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0