Trzecia komorka

0

Witam! Jak odczytac lub poprawnie zapisać na komorke ECX wynik? Bo aktualnie nic nie wyswietla

program Project1;

      {$APPTYPE CONSOLE}
uses
  SysUtils;
      

  Var
  napis:string[3];
  napis2:string[3];
  wynik:string[6];

begin
    writeln('Podaj napis');
   readln(napis) ;
    writeln('Podaj napis2') ;
   readln(napis2);

  asm
        mov EAX,  offset napis
        mov EBX, offset napis2
        mov ECX, offset wynik

        inc EAX
        inc EBX
        inc ECX

         mov DL, [EAX]
         mov [ECX],DL


  end;
  writeln(napis);
  writeln(napis2);
  writeln(wynik);
  readln;
end.
 
0
  1. powinieneś użyć rejestrów ESI EDI jako tych, które wskazują na elementy napisów.
  2. z tego co pamiętam z Pascala (w Delphi może być nieco inaczej) to komórka napisu o indeksie 0 zawiera rozmiar/długość napisu.
  3. po co się katujesz assemblerem?
0
  1. No ok ;)
  2. Dlatego omijam komorke zerową inc ECX
  3. Bo kiedys trzeba xD Czemu pytasz ?
0
killan napisał(a):
  1. Dlatego omijam komorke zerową inc ECX
    Nie możesz tak po prostu jej ominąć. Musisz w wyniku ustawić długość stringa. Ale robienie takich rzeczy w assemblerze to głupota.
0

jak byłem szczylem też wziąłem się za assemblera. Wiedza jak działa procesor czasami się przydaje.
A poprawiłbym to tak (jeśli jeszcze dobrze pamiętam jak to się robi):

program Project1;
 
      {$APPTYPE CONSOLE}
uses
  SysUtils;
 
 
  Var
  napis:string[3];
  napis2:string[3];
  wynik:string[6];
 
begin
    writeln('Podaj napis');
   readln(napis) ;
    writeln('Podaj napis2') ;
   readln(napis2);
  asm
        mov ESI,  offset napis
        mov EDX, offset napis2
        mov EDI, offset wynik
        mov AL, [ESI]
        xor ECX,EXC
        mov CL, AL
        mov BL, [EDX]
        add AL,BL
        mov [EDI], AL
        INC EDI
        INC ESI
        rep movsb
        mov ESI, EDX
        mov CL, BL
        inc ESI
        rep movsb
  end;
  writeln(napis);
  writeln(napis2);
  writeln(wynik);
  readln;
end.
0

Bo kiedys trzeba xD Czemu pytasz ?

No ale na litość boską, nie mieszaj Asma z Pascalem podczas nauki podstaw Assemblera :F
A już na pewno grzebanie po rzeczach, które są prawie-że-nieudokumentowane nie jest dobre na początek.

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