Advertisement
Guest User

Untitled

a guest
Jun 14th, 2019
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3. char str[] = "xyzAA123";
  4. const int len = 8;
  5. const int klucz = 55;
  6.                                                                 //rsi - klucz;
  7. int main(void)
  8. {
  9.         asm(
  10.  
  11.                 "mov %%rsi, %%rax \n "
  12.                 "mov $0, %%rdx \n "
  13.                 "mov $26, %%r9 \n "
  14.                 "div %%r9 \n "
  15.                 "mov $0, %%rax \n "
  16.  
  17.                 "mov $0, %%rbx \n"                               // Zerowanie rejestru RBX - licznika do pêtli.
  18.  
  19.                 "petla: \n"
  20.  
  21.                 "mov (%0, %%rbx, 1), %%al \n"
  22.  
  23.                 "cmp $97, %%al \n"
  24.                 "jb petla2 \n"
  25.                 "add %%dl, %%al \n"                              // Dodanie do kodu litery warto<9c>ci 3
  26.                 "cmp $122, %%al \n"
  27.                 "jg skok \n"
  28.                 "jmp petla2 \n"
  29.  
  30.                 "skok: \n"
  31.                 "sub $122, %%al \n"
  32.                 "add $96, %%al \n"
  33.  
  34.                 "petla2: \n"
  35.  
  36.                 "mov %%al, (%0, %%rbx, 1) \n"                    // Zapisanie zmienionej warto<9c>ci do stringa
  37.  
  38.                 "inc %%rbx \n"                                   // Zwiêkszenie licznika pêtli
  39.                 "cmp len, %%ebx \n"                              // Porównanie licznika pêtli ze sta³¹ "len"
  40.                                                                 // zadeklarowan¹ w kodzie C
  41.                 "jl petla \n"                                   // Powrót na pocz¹tek pêtli a¿ do wykonania operacji
  42.                                                                  // dla ka¿dego znaku ze stringa
  43.  
  44.                 :
  45.  
  46.                 :"r"(&str), "S"(klucz)                          // Lista parametrów wej<9c>ciowych
  47.  
  48.                 : "%rax", "%rbx","%rdx"                         // Rejestry których bêdziemy u¿ywaæ w kodzie Asemblerowym.
  49.                 );
  50.  
  51.                 printf("%s\n", str);
  52.  
  53.         return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement