Advertisement
Guest User

Zadanie 101

a guest
Oct 15th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // 101 w rejestrze
  2.  
  3. #include <stdio.h>
  4.  
  5. int main(){
  6.     int x = 20;
  7.     int y;
  8.  
  9.     asm volatile(
  10.      ".intel_syntax noprefix;"
  11.      "mov eax,%1;"
  12.      "mov ecx,33;"
  13.      "xor ebx,ebx;"
  14.      "petla:"
  15.            "dec ebx;"
  16.            "jz koniec"
  17.            "shl eax,1;" // przesunięcie bitowe w lewo
  18.            "jc warunek;" // skok do warunku(jesli nie zero)
  19.      "warunek:"
  20.            "dec ebx;" // zmniejszenie ebx
  21.            "jz koniec;"
  22.            "shl eax,1;" // przesunięcie aby sprawdzić drugi bit
  23.            "jc warunek;" // jesli nie zero to wraca do warunku
  24.            "jnc warunek2;" // jesli zero to sprawdza 3 bit
  25.      "warunek2:"
  26.            "dec ebx;"
  27.            "jz koniec;"
  28.            "jnc petla;"
  29.            "inc ebx;"
  30.            "jc warunek;"
  31.      "koniec:"
  32.            "mov %0,ebx;"
  33.      ".att_syntax prefix;"
  34.      :"=r"(y)
  35.      :"r"(x)
  36.      :"eax","ecx"
  37.    );
  38.     printf("y = %d\n",y);
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement