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?