String i tablica byte'ów w asm

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?

1

Co robię źle?

Czytasz to wszystko jako DWORDy kiedy ci chodzi o BYTE.

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