Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- //odwracanie stringów
- int main(){
- char x[]="Dupa chuj wow";
- int y;
- asm volatile(
- ".intel_syntax noprefix;"
- "mov eax,%1;"
- "xor ebx,ebx;"
- "dlugosc:"
- "cmp [eax+ebx], BYTE PTR 0;"
- "je zero;"
- "inc ebx;"//dlugosc stringa
- "jmp dlugosc;"
- "zero:"
- "sub ebx,1;"
- "mov edx,eax;"
- "add edx,ebx;" // edx -litery od poczatku
- "przestawianie_zdania:"
- "cmp %1,edx;"
- "jge koniec_przestawiania1;"
- "mov cl,[eax];" //swap liter
- "mov ch,[edx];"
- "mov [eax],ch;"
- "mov [edx],cl;"
- "inc eax;"
- "dec edx;"
- "jmp przestawianie_zdania;"
- "koniec_przestawiania1:"
- "mov ebx,%1;" // Adres litery co sprawdzamy
- "mov eax,%1;" // Adres 1 litery
- "mov edx, %1;" // Adres ostatniej litery
- "petla2:"
- "szukanie_spacji:"
- "cmp [ebx], BYTE PTR 32;"
- "je spacja_koniec;"
- "cmp [ebx], BYTE PTR 0;"
- "je spacja_koniec;"
- "inc ebx;"
- "inc edx;"
- "jmp szukanie_spacji;"
- "spacja_koniec:"
- "dec edx;"
- "odwracanie:"
- "cmp eax,edx;"
- "jge odwrocone;"
- "mov cl,[eax];"
- "mov ch,[edx];"
- "mov [eax],ch;"
- "mov [edx],cl;"
- "inc eax;"
- "dec edx;"
- "jmp odwracanie;"
- "odwrocone:"
- "cmp [ebx], BYTE PTR 0;"
- "je totalnyKoniec;"
- "inc ebx;"
- "mov edx,ebx;"
- "mov eax,ebx;"
- "jmp petla2;"
- "totalnyKoniec:"
- ".att_syntax prefix;"
- :"=r" (y)
- :"r" (x)
- :"eax","ebx","ecx","edx"
- );
- printf("%s \n ",x);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement