Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. using namespace std;
  6.  
  7. int functvocale(char *, char*)
  8. {
  9. _asm
  10. {
  11. MOV EAX, [EBP + 8]//sirul de caractere
  12. XOR EDI, EDI//counter sir
  13. XOR ESI, ESI//numar vocale
  14. MOV EDX, [EBP + 12]//sir de vocale
  15. _parcsir:
  16. MOV BL, [EAX + EDI]//elementul curent din sir
  17. CMP BL, '\0' //daca elementul e null, se termina forul
  18. JE _endfunct
  19. push EDI//retinem counterul sirului nostru
  20. XOR EDI, EDI
  21. _parcvocale :
  22. MOV CL, [EDX + EDI]//elementul curent din sirul de vocale
  23. CMP CL, '\0'//daca elementul e null inseamna ca nu este vocala
  24. JE _novocala
  25. CMP BL, CL//compara elementul din sir cu elementul din sirul vocalelor
  26. JE _plusvocala//daca sunt egale va creste nr voc
  27. INC EDI//altfel creste i-ul parcurgerii sirul vocalelor
  28. JMP _parcvocale//parcurge mai departe sirul vocalelor
  29. _plusvocala :
  30. INC ESI//creste nr voc
  31. _novocala :
  32. pop EDI//scoate copia din stiva
  33. INC EDI//creste i-ul pentru sirul nostru
  34. JMP _parcsir//reia forul
  35. _endfunct :
  36. MOV EAX, ESI//muta in eax, numarul de vocale pentru return
  37. }
  38. }
  39. int main()
  40. {
  41. char vocale[] = "aeiouAEIOU";
  42. char s[30];
  43. //char vocale[15];
  44. int x = 0;
  45. //cin.get(vocale, 15);
  46. //cin.get();
  47. cin.get(s, 25);
  48. x = functvocale(s, vocale);
  49. cout << x << '\n';
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement