Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include <stdio.h>
  2. //odwracanie stringów
  3. int main(){
  4.         char x[]="Dupa chuj wow";
  5.         int y;
  6.         asm volatile(
  7.             ".intel_syntax noprefix;"
  8.  
  9.             "mov eax,%1;"
  10.             "xor ebx,ebx;"
  11.  
  12.             "dlugosc:"
  13.                 "cmp [eax+ebx], BYTE PTR 0;"
  14.                 "je zero;"
  15.                 "inc ebx;"//dlugosc stringa
  16.                 "jmp dlugosc;"
  17.  
  18.             "zero:"
  19.             "sub ebx,1;"
  20.             "mov edx,eax;"
  21.             "add edx,ebx;" // edx -litery od poczatku
  22.  
  23.             "przestawianie_zdania:"
  24.                 "cmp %1,edx;"
  25.                 "jge koniec_przestawiania1;"
  26.                 "mov cl,[eax];" //swap liter
  27.                 "mov ch,[edx];"
  28.                 "mov [eax],ch;"
  29.                 "mov [edx],cl;"
  30.                 "inc eax;"
  31.                 "dec edx;"
  32.                 "jmp przestawianie_zdania;"
  33.  
  34.             "koniec_przestawiania1:"
  35.  
  36.             "mov ebx,%1;" // Adres litery co sprawdzamy
  37.             "mov eax,%1;" // Adres 1 litery
  38.             "mov edx, %1;" // Adres ostatniej litery
  39.  
  40.             "petla2:"
  41.                 "szukanie_spacji:"
  42.                     "cmp [ebx], BYTE PTR 32;"
  43.                     "je spacja_koniec;"
  44.                     "cmp [ebx], BYTE PTR 0;"
  45.                     "je spacja_koniec;"
  46.                     "inc ebx;"
  47.                     "inc edx;"
  48.                     "jmp szukanie_spacji;"
  49.                 "spacja_koniec:"
  50.                     "dec edx;"
  51.                 "odwracanie:"
  52.                     "cmp eax,edx;"
  53.                     "jge odwrocone;"
  54.                     "mov cl,[eax];"
  55.                     "mov ch,[edx];"
  56.                     "mov [eax],ch;"
  57.                     "mov [edx],cl;"
  58.                     "inc eax;"
  59.                     "dec edx;"
  60.                     "jmp odwracanie;"
  61.                 "odwrocone:"
  62.                     "cmp [ebx], BYTE PTR 0;"
  63.                     "je totalnyKoniec;"
  64.                     "inc ebx;"
  65.                     "mov edx,ebx;"
  66.                     "mov eax,ebx;"
  67.                     "jmp petla2;"
  68.             "totalnyKoniec:"
  69.  
  70.             ".att_syntax prefix;"
  71.             :"=r" (y)
  72.             :"r" (x)
  73.             :"eax","ebx","ecx","edx"
  74.         );
  75.         printf("%s \n ",x);
  76.         return 0;
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement