Advertisement
MosTzz

Palindrom

Jan 23rd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5.  
  6. /*
  7. int rev = 0;
  8. int nn = n;
  9. while(n > 0){
  10. rev = rev* 10 + n%10;
  11. n/=10;
  12. }
  13. if(nn == rev){
  14. return 1;
  15. }
  16. return 0;
  17. */
  18. int palindrom(int n) {
  19. int retVal = 0;
  20. int zece = 10; //Mul si div suporta ca operanzi doar registrii sau adrese de memorie. Momentan vom folosi o variabila in loc de o valore "hardcodata".
  21. //Pe viitor vom vedea cum putem folosi memoria pentru a salva valoarea unui registru si pentru a o incarca inapoi.
  22. _asm {
  23. //Completati
  24. mov ebx, n //In ebx vom patra valorea lui n pe care o vom imparti repetat la 10.
  25. mov ecx, 0 //In ecx vom calcula numarul inversat.
  26. start_while:
  27. cmp ebx, 0
  28. je end_while
  29. //Inmultim ce avem calculat pana acum cu 10. (rev = rev * 10)
  30. mov eax, ecx
  31. xor edx, edx
  32. mul zece
  33. mov ecx, eax
  34. //Impartim numarul la 10. Restul il vom aduna la numarul inversat, iar catul il vom folosi pentru a actualiza valoarea lui ebx
  35. mov eax, ebx
  36. xor edx, edx // Pentru ca lucram cu registrii pe 32 bits, impartirea va fi de fapt (edx:eax)/10 => trebuie sa setam edx 0.
  37. div zece
  38. mov ebx, eax //Catul. n = n / 10;
  39. add ecx, edx //Restul. // rev += n % 10;
  40. jmp start_while
  41. end_while :
  42. cmp n, ecx
  43. jne diferite
  44. mov retVal, 1
  45. jmp end_if
  46. diferite :
  47. mov retVal, 0
  48. end_if :
  49. }
  50. return retVal;
  51. }
  52.  
  53. int main()
  54. {
  55. int a;
  56. cout << "a= ";
  57. cin >> a;
  58. int retVal = palindrom(a);
  59. cout << retVal << '\n';
  60. if (retVal == 1) {
  61. cout << "Numarul este palindrom\n";
  62. }
  63. else {
  64. cout << "Numarul nu este palindrom\n";
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement