Advertisement
iuliaa

Untitled

Nov 15th, 2020
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. main INP R0, 2 //citim partea intrega a lui a
  2. INP R1, 2 //citim partea fractionara a lui a
  3. LDR R2, aaddr
  4. STR R0, [R2]
  5. ADD R2, #1
  6. STR R1, [R2]
  7. INP R0, 2 //citim partea intrega a lui b
  8. INP R1, 2 ////citim partea fractionara a lui b
  9. LDR R3, baddr
  10. STR R0, [R3]
  11. ADD R3, #1
  12. STR R1, [R3]
  13. //JMS scadere
  14. JMS citirec
  15.  
  16. JMS chder
  17. HLT
  18. aaddr DAT 300
  19. N DAT 4
  20. cder DAT 150
  21. caddr DAT 200
  22. baddr DAT 302
  23. baddr1 DAT 303
  24. j DAT 350
  25. scadere PSH {LR}
  26. LDR R7, aaddr //incarc in R& partea intrega a lui A
  27. LDR R4, [R7]
  28. OUT R4, 4
  29. ADD R7, #1 //INCREMENTAM ADRESA
  30. LDR R5, [R7] //PARTEA ZECIMALA A LUI A
  31. OUT R5,4
  32. SUB R6, R1, R5
  33. OUT R6, 4
  34. CMP R6, #0
  35. BLT imprumut
  36. BRA store
  37. imprumut ADD R1, #10 //ADAUGAM UN 10 PENTRU IMPRUMUT
  38. SUB R0, #1 //SCADEM IMPRUMUTUL
  39. SUB R6, R1, R5
  40. store ADD R7, #4
  41. STR R6, [R7]//305 - PARTEA FRACTIONARA INTREAGA
  42. SUB R6, R0, R4
  43. SUB R7, #1
  44. STR R6, [R7]//304 - PARTEA INTREAGA
  45. POP {PC}
  46. RET
  47. citirec PSH {LR}
  48. LDR R0, N //incarcam din memorie pe N
  49. LDR R7, caddr
  50. loop INP R1, 2 //citim partea intreaga a elem din c
  51. STR R1, [R7]
  52. ADD R7, #1
  53. INP R1, 2 //citim partea zecimala
  54. STR R1, [R7]
  55. ADD R7, #1
  56. SUB R0, #1
  57. CMP R0, #0
  58. BGT loop
  59. POP {PC}
  60. RET
  61.  
  62. chder PSH {LR}
  63. LDR R0, N
  64. SUB R0, #1
  65. MUL R0, #2
  66. LDR R7, cder
  67. ADD R7, #3 //cder[n-1]==0
  68. LDR R6, N
  69. MUL R6, #2
  70. SUB R6, #4
  71. ADD R6, caddr //de aici luam pentru cder[n-2]
  72. LDR R2, [R6] //aducem p intreaga
  73. ADD R6, #1
  74. LDR R3, [R6] //aducem p fractionara
  75. MUL R3, R0 //inmultim p fractionara cu 2*(n-1)
  76. MOV R5, R3
  77. MOD R5, #10
  78. STR R5, [R7] //store parte fr pentru cder(n-1)
  79. SUB R7, #1
  80. MOV R5, R3
  81. UDV R5, #10
  82. MUL R2, R0
  83. ADD R2, R5
  84. STR R2, [R7]
  85. LDR R0, N
  86. SUB R0, #3
  87. for1
  88.  
  89. SUB R0, #1
  90. CMP R0, #0
  91. BGE for1
  92. POP {PC}
  93. RET
  94.  
  95. //TREBUIE SA SALVAM FIECARE NR IN 2 LOCATII DE MEMORIE
  96. //LA INCEPUT, CAND CITIM A SI B TREBUIE SA VERIFICAM CATE ZECIMALE ARE FIECARE,
  97. SI SA LE ADUCEM LA ACELASI NR DE ZECIMALE (INMULTIM CU 10 PANA AJUNG LA ACELAS NR DE ZECIMALE)
  98. DACA B<A (PT CA TREBE SA FACEM B-A), INMULTIM CU 10 PARTEA FRACTIONARA A LUI B
  99. SI VOM SCADEA 1 DIN PARTEA INTREAGA A LUI B
  100. si vom suprascrie memoria doar cu un singur numar = B-A
  101. //C IL CITIM IN 2 LOCATII DE MEMORIE, DECI VOM MERGE PANA LA 2*N SI IL SALVAM IN MEMORIE
  102. cder[n-2]=2*(n-1)*c[n-1];
  103. LA LINIA ASTA ADUNAM REPETAT C[N-1], DE 2*(N-1) ORI SI VERIFICAM TOT TIMPUL NR DE ZECIMALE, IN CAZ CA AVEM β€žCARRY” SA IL PUNEM IN PARTEA INTREGA
  104. SI AVEM IN 2 REGISTRII ADRESELE DE MEMORIE, UNA PENTRU VECTORUL CDER, UNA PENTRU C[N], ADRESE PE CARE LE VOM DECREMENTA/INCREMENTA
  105. con=2.0/(b-a);
  106. EX. 2/2.3=0.86 -> AVEM 1 ZECIMALA => INMULTIM CU 10 -> 20/23 -> 20<23 => 200/23 =
  107.  
  108.  
  109.  
  110. void chder(float a, float b, float c[], float cder[], int n)
  111. {
  112. int j;
  113. float con;
  114. cder[n-1]=0.0; n-1 and n-2 are special cases.
  115. cder[n-2]=2*(n-1)*c[n-1];
  116. for (j=n-3;j>=0;j--)
  117. cder[j]=cder[j+2]+2*(j+1)*c[j+1]; Equation (5.9.2).
  118. con=2.0/(b-a);
  119. for (j=0;j<n;j++) Normalize to the interval b-a.
  120. cder[j] *= con;
  121. }
  122.  
  123.  
  124.  
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement