Advertisement
AntonioVillanueva

Voyalles C++ ASM

Jan 29th, 2016
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.         char chaine[]={"aeiou"};
  6.          //   char chaine[]={'a','e','i','o','u','e'};
  7.         unsigned char num_voyalles(0);
  8.        
  9.         asm(
  10.         "xor %[num],%[num] \n\t"
  11.         "lea %[chaine],%%rcx \n\t" /* cible une chaine de chars */
  12.        
  13.         "\n init :\n\t"
  14.        
  15.         "cmpb $0,(%%rcx) \n\t"/*il est arrive à la fin ?*/      
  16.         "jz fin \n\t"
  17.        
  18.         "cmpb $'a',(%%rcx) \n\t"/* a */
  19.         "jz augmenter \n\t"
  20.        
  21.         "cmpb $'e',(%%rcx) \n\t"/* e */
  22.         "jz augmenter \n\t"
  23.        
  24.         "cmpb $'i',(%%rcx) \n\t"/* i */
  25.         "jz augmenter \n\t"
  26.        
  27.         "cmpb $'o',(%%rcx) \n\t"/* o */
  28.         "jz augmenter \n\t"
  29.        
  30.         "cmpb $'u',(%%rcx) \n\t"/* u */
  31.         "jz augmenter \n\t"
  32.        
  33.         "inc %%rcx \n\t"/* incremente l'index de la chaine */
  34.         "jmp init \n\t"/* saute  au debut */
  35.        
  36.  
  37.         "\n augmenter: \n\t"/* aeiou trouve incremente num */
  38.         "inc %[num] \n\t"
  39.         "inc %%rcx \n\t"/* incremente l'index de la chaine */
  40.         "jmp init \n\t "/* saute au debut */
  41.        
  42.         "fin: \n\t"
  43.        
  44.         :[num] "=g"(num_voyalles) /* output */
  45.         :[chaine]"m"(chaine) /* input */
  46.         :
  47.         );
  48.        
  49.         cout <<"num de voyalles "<<(int) num_voyalles <<endl;
  50. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement