Advertisement
Guest User

Untitled

a guest
May 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char text[512];
  5. int textlen;
  6. int key;
  7.  
  8. int main(){
  9.  
  10. printf("Podaj tekst: \n");
  11. scanf("%s", text);
  12.  
  13. textlen=strlen(text);
  14.  
  15. printf("Podaj klucz: \n");
  16. scanf("%d", &key);
  17.  
  18.     asm (
  19.    
  20.     "mov $0, %%r8 \n"   // licznik
  21.     "mov $26, %%r9 \n"  // tyle duzych liter
  22.     "mov %1, %%eax \n"
  23.  
  24.     "loop: \n"
  25.  
  26.     "mov (%0, %%r8, 1), %%bl \n" // %0 to alias rejestru w ktorym
  27.             // znajduje sie wskaznik na poczatek tekstu
  28.    
  29.     "cmp $65, %%bl \n" // sprawdzamy czy duza litera
  30.     "jl next \n"
  31.     "cmp $90, %%bl \n"
  32.     "ja next \n"
  33.     "cmp $26, %%eax \n" // sprawdzamy klucz
  34.     "ja modkey \n"
  35.  
  36.     "adding: \n"      // szyfrujemy litere
  37.     "add %%al, %%bl \n"
  38.     "cmp $90, %%bl \n"// sprawdzamy czy nie wykracza poza 'Z'
  39.     "ja bigkey \n"
  40.     "mov %%bl, (%0, %%r8, 1) \n" // wstawiam zaszyfrowana litere
  41.                      // do tekstu wynikowego
  42.     "jmp next \n"
  43.  
  44.     "next: \n"
  45.     "inc %%r8 \n"
  46.     "cmp textlen, %%r8 \n"
  47.     "je end \n"
  48.     "cmp textlen, %%r8 \n"
  49.     "jl loop \n"
  50.  
  51.     "modkey: \n" // tu sie wywala przy dzieleniu :(
  52.     "mov $0, %%rdx \n"
  53.     "div %%r9 \n"
  54.     "mov %%dl, %%al \n"
  55.     "jmp adding \n"
  56.  
  57.     "bigkey: \n" // jak znak wykracza poza 'Z'
  58.     "sub $26, %%bl \n"
  59.     "mov %%bl, (%0, %%r8, 1) \n"
  60.     "jmp next \n"
  61.    
  62.     "end: \n"
  63.     ://parametry wyjsciowe - brak
  64.     :"r"(&text), "r"(key) //parametr wejsciowy
  65.     :"%rax", "%rbx", "%rdx", "%r8", "%r9" //tych rejestrow uzywam
  66. );
  67.  
  68. printf("Zaszyfrowany tekst: %s\n",text);
  69.  
  70. return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement