Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- char str[] = "xyzAA123";
- const int len = 8;
- const int klucz = 55;
- //rsi - klucz;
- int main(void)
- {
- asm(
- "mov %%rsi, %%rax \n "
- "mov $0, %%rdx \n "
- "mov $26, %%r9 \n "
- "div %%r9 \n "
- "mov $0, %%rax \n "
- "mov $0, %%rbx \n" // Zerowanie rejestru RBX - licznika do pêtli.
- "petla: \n"
- "mov (%0, %%rbx, 1), %%al \n"
- "cmp $97, %%al \n"
- "jb petla2 \n"
- "add %%dl, %%al \n" // Dodanie do kodu litery warto<9c>ci 3
- "cmp $122, %%al \n"
- "jg skok \n"
- "jmp petla2 \n"
- "skok: \n"
- "sub $122, %%al \n"
- "add $96, %%al \n"
- "petla2: \n"
- "mov %%al, (%0, %%rbx, 1) \n" // Zapisanie zmienionej warto<9c>ci do stringa
- "inc %%rbx \n" // Zwiêkszenie licznika pêtli
- "cmp len, %%ebx \n" // Porównanie licznika pêtli ze sta³¹ "len"
- // zadeklarowan¹ w kodzie C
- "jl petla \n" // Powrót na pocz¹tek pêtli a¿ do wykonania operacji
- // dla ka¿dego znaku ze stringa
- :
- :"r"(&str), "S"(klucz) // Lista parametrów wej<9c>ciowych
- : "%rax", "%rbx","%rdx" // Rejestry których bêdziemy u¿ywaæ w kodzie Asemblerowym.
- );
- printf("%s\n", str);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement