Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.12 KB | None | 0 0
  1. Kompilacja: gcc kalk.c kalk.s -m32 -g -o Calc
  2.  
  3. =================================================
  4. Plik s===========================================
  5. =================================================
  6. .section .text
  7.  
  8. .globl suma
  9. suma:
  10. # prolog - nowa ramka stosu
  11. push %ebp
  12. movl %esp, %ebp
  13. # laduj a do st(0)
  14. fldl 8(%ebp)
  15. #laduj b do st(0), w st(1) jest b
  16. fldl 16(%ebp)
  17. # dodaj st(0) + st(1) -> st(0)
  18. faddp
  19. # wynik w st(0)
  20. # przywracamy stos
  21. mov %ebp, %esp
  22. pop %ebp
  23. # powrot
  24. ret
  25.  
  26. .globl roznica
  27. roznica:
  28. push %ebp
  29. movl %esp, %ebp
  30. fldl 16(%ebp)
  31. fldl 8(%ebp)
  32. fsubp
  33. mov %ebp, %esp
  34. pop %ebp
  35. ret
  36.  
  37. .globl mnozenie
  38. mnozenie:
  39. push %ebp
  40. movl %esp, %ebp
  41. fldl 16(%ebp)
  42. fldl 8(%ebp)
  43. fmulp
  44. mov %ebp, %esp
  45. pop %ebp
  46. ret
  47.  
  48. .globl dzielenie
  49. dzielenie:
  50. push %ebp
  51. movl %esp, %ebp
  52. fldl 16(%ebp)
  53. fldl 8(%ebp)
  54. fdivp
  55. mov %ebp, %esp
  56. pop %ebp
  57. ret
  58.  
  59. .globl pierwiastek
  60. pierwiastek:
  61. push %ebp
  62. movl %esp, %ebp
  63. fldl 8(%ebp)
  64. fsqrt
  65. mov %ebp, %esp
  66. pop %ebp
  67. ret
  68.  
  69. .globl sinus
  70. sinus:
  71. push %ebp
  72. movl %esp, %ebp
  73. fldl 8(%ebp)
  74. fsin
  75. mov %ebp, %esp
  76. pop %ebp
  77. ret
  78.  
  79. .globl cosinus
  80. cosinus:
  81. push %ebp
  82. movl %esp, %ebp
  83. fldl 8(%ebp)
  84. fcos
  85. mov %ebp, %esp
  86. pop %ebp
  87. ret
  88.  
  89. .globl tangens
  90. tangens:
  91. push %ebp
  92. movl %esp, %ebp
  93. fldl 8(%ebp)
  94. fptan
  95. mov %ebp, %esp
  96. pop %ebp
  97. ret
  98.  
  99. .globl round_num
  100. round_num:
  101. push %ebp
  102. movl %esp, %ebp
  103. fldl 8(%ebp)
  104. frndint
  105. mov %ebp, %esp
  106. pop %ebp
  107. ret
  108.  
  109. =================================================
  110. Plik c===========================================
  111. =================================================
  112.  
  113. #include <stdio.h>
  114. #include <stdlib.h>
  115.  
  116. //Def funkcji
  117. double suma(double a, double b);
  118. double roznica(double a, double b);
  119. double mnozenie(double a, double b);
  120. double dzielenie(double a, double b);
  121. double pierwiastek(double a);
  122. double sinus(double a);
  123. double cosinus(double a);
  124. double tangens(double a);
  125. double round_num(double a);
  126.  
  127. //Zmienne
  128. double a,b,wynik_suma, wynik_roznica, wynik_mnozenie, wynik_dzielenie, wynik_pierwiastek, wynik_sinus;
  129.  
  130. int main() {
  131.  
  132.   int running = 1;
  133.   int menu;
  134.  
  135.   while(running) {
  136.     printf("===Menu===\n");
  137.     printf("1) Dodawanie\n");
  138.     printf("2) Odejmowanie\n");
  139.     printf("3) Mnożenie\n");
  140.     printf("4) Dzielenie\n");
  141.     printf("5) Pierwiastkowanie\n");
  142.     printf("6) Sinus liczby\n");
  143.     printf("7) Cosinus liczby\n");
  144.     printf("8) Tangens liczby\n");
  145.     printf("9) Zaokgrąglenie liczby\n");
  146.     printf("Twoj wybor: ");
  147.     scanf("%d",&menu);
  148.  
  149.     switch(menu){
  150.  
  151.       case 1:
  152.       printf("Podaj wartośc liczby A: ");
  153.       scanf("%lf",&a);
  154.       printf("Podaj wartośc liczby B: ");
  155.       scanf("%lf",&b);
  156.       printf(" %f + %f = %f\n",a,b,suma(b,a));
  157.       break;
  158.  
  159.       case 2:
  160.       printf("Podaj wartośc liczby A: ");
  161.       scanf("%lf",&a);
  162.       printf("Podaj wartośc liczby B: ");
  163.       scanf("%lf",&b);
  164.       printf(" %f - %f = %f\n",a,b,roznica(b,a));
  165.       break;
  166.  
  167.       case 3:
  168.       printf("Podaj wartośc liczby A: ");
  169.       scanf("%lf",&a);
  170.       printf("Podaj wartośc liczby B: ");
  171.       scanf("%lf",&b);
  172.       printf(" %f * %f = %f\n",a,b,mnozenie(b,a));
  173.       break;
  174.  
  175.       case 4:
  176.       printf("Podaj wartośc liczby A: ");
  177.       scanf("%lf",&a);
  178.       printf("Podaj wartośc liczby B: ");
  179.       scanf("%lf",&b);
  180.       printf(" %f / %f = %f\n",a,b,dzielenie(b,a));
  181.       break;
  182.  
  183.       case 5:
  184.       printf("Podaj wartośc liczby: ");
  185.       scanf("%lf",&a);
  186.       printf(" sqrt(%f) = %f\n",a,pierwiastek(b));
  187.       break;
  188.  
  189.       case 6:
  190.       printf("Podaj wartośc liczby: ");
  191.       scanf("%lf",&a);
  192.       printf(" sin(%f) = %f\n",a,sinus(b));
  193.       break;
  194.  
  195.       case 7:
  196.       printf("Podaj wartośc liczby: ");
  197.       scanf("%lf",&a);
  198.       printf(" cos(%f) = %f\n",a,cosinus(b));
  199.       break;
  200.  
  201.       case 8:
  202.       printf("Podaj wartośc liczby: ");
  203.       scanf("%lf",&a);
  204.       printf(" tan(%f) = %f\n",a,tangens(b));
  205.       break;
  206.  
  207.       case 9:
  208.       printf("Podaj wartośc liczby: ");
  209.       scanf("%lf",&a);
  210.       printf(" %f ~= %f\n",a,round_num(b));
  211.       break;
  212.  
  213.       printf("Wpisz znak aby przejsc do menu:");
  214.       scanf("%d",&menu);
  215.     }
  216.  
  217.   }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement