Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main INP R0, 2 //citim partea intrega a lui a
- INP R1, 2 //citim partea fractionara a lui a
- LDR R2, aaddr
- STR R0, [R2]
- ADD R2, #1
- STR R1, [R2]
- INP R0, 2 //citim partea intrega a lui b
- INP R1, 2 ////citim partea fractionara a lui b
- LDR R3, baddr
- STR R0, [R3]
- ADD R3, #1
- STR R1, [R3]
- //JMS scadere
- JMS citirec
- JMS chder
- HLT
- aaddr DAT 300
- N DAT 4
- cder DAT 160
- caddr DAT 200
- baddr DAT 302
- baddr1 DAT 303
- j DAT 350
- scadere PSH {LR}
- LDR R7, aaddr //incarc in R& partea intrega a lui A
- LDR R4, [R7]
- OUT R4, 4
- ADD R7, #1 //INCREMENTAM ADRESA
- LDR R5, [R7] //PARTEA ZECIMALA A LUI A
- OUT R5,4
- SUB R6, R1, R5
- OUT R6, 4
- CMP R6, #0
- BLT imprumut
- BRA store
- imprumut ADD R1, #10 //ADAUGAM UN 10 PENTRU IMPRUMUT
- SUB R0, #1 //SCADEM IMPRUMUTUL
- SUB R6, R1, R5
- store ADD R7, #4
- STR R6, [R7]//305 - PARTEA FRACTIONARA INTREAGA
- SUB R6, R0, R4
- SUB R7, #1
- STR R6, [R7]//304 - PARTEA INTREAGA
- POP {PC}
- RET
- citirec PSH {LR}
- LDR R0, N //incarcam din memorie pe N
- LDR R7, caddr
- loop INP R1, 2 //citim partea intreaga a elem din c
- STR R1, [R7]
- ADD R7, #1
- INP R1, 2 //citim partea zecimala
- STR R1, [R7]
- ADD R7, #1
- SUB R0, #1
- CMP R0, #0
- BGT loop
- POP {PC}
- RET
- chder PSH {LR}
- LDR R0, N
- SUB R0, #1
- MUL R0, #2
- LDR R7, cder
- ADD R7, #3 //cder[n-1]==0
- LDR R6, N
- MUL R6, #2
- SUB R6, #4
- ADD R6, caddr //de aici luam pentru cder[n-2]
- LDR R2, [R6] //aducem p intreaga
- ADD R6, #1
- LDR R3, [R6] //aducem p fractionara
- MUL R3, R0 //inmultim p fractionara cu 2*(n-1)
- MOV R5, R3
- MOD R5, #10
- STR R5, [R7] //store parte fr pentru cder(n-1)
- SUB R7, #1
- MOV R5, R3
- UDV R5, #10
- MUL R2, R0
- ADD R2, R5
- STR R2, [R7]
- LDR R0, N
- SUB R0, #3
- for1 MOV R1, R0
- ADD R1, #1 //j+1
- MUL R1, #2 //2*(j+1)
- //inmultirea
- LDR R3, [R6] //in R3 punem c(j+1) p fractionara
- MUL R3, R1 //inmultim p fr cu 2j+1
- MOV R5, R3 //mutam in R5 rezultatul
- MOD R5, #10 //facem restul impartirii
- MOV R4, R3 //mut rezultatul inmultirii in R4
- UDV R4, #10 //trebuie adunat la p intreaga!
- //partea intreaga
- SUB R6, #1 //zona de mem pt p intreaga
- LDR R3, [R6]
- MUL R3, R1
- ADD R3, R4 //inmultirea pentru partea intreaga
- //adunarea
- MOV R2, R7
- SUB R2, #1 //aducem partea fractionara de la cder[j+2]
- LDR R4, [R2] //aducem in R4 ce e in R2
- ADD R5, R4 //adunam in R5 ce e in cder[j+2] cu rezultatul de sus
- CMP R5, #10
- BGE maimare
- MOV R4, #0
- BRA nuemaimare
- maimare SUB R5, #10
- MOV R4, #1
- nuemaimare ADD R2, #4
- STR R5, [R2]
- SUB R2, #5 //locatia pt p intreaga
- LDR R5, [R2]
- ADD R5, R3
- ADD R5, R4
- ADD R2, #4
- STR R5, [R2]
- SUB R0, #1
- ADD R7, #2
- SUB R6, #1
- CMP R0, #0
- BGE for1
- POP {PC}
- RET
- void chder(float a, float b, float c[], float cder[], int n)
- {
- int j;
- float con;
- cder[n-1]=0.0; n-1 and n-2 are special cases.
- cder[n-2]=2*(n-1)*c[n-1];
- for (j=n-3;j>=0;j--)
- cder[j]=cder[j+2]+2*(j+1)*c[j+1]; Equation (5.9.2).
- con=2.0/(b-a);
- for (j=0;j<n;j++) Normalize to the interval b-a.
- cder[j] *= con;
- }
- //TREBUIE SA SALVAM FIECARE NR IN 2 LOCATII DE MEMORIE
- //LA INCEPUT, CAND CITIM A SI B TREBUIE SA VERIFICAM CATE ZECIMALE ARE FIECARE,
- SI SA LE ADUCEM LA ACELASI NR DE ZECIMALE (INMULTIM CU 10 PANA AJUNG LA ACELAS NR DE ZECIMALE)
- DACA B<A (PT CA TREBE SA FACEM B-A), INMULTIM CU 10 PARTEA FRACTIONARA A LUI B
- SI VOM SCADEA 1 DIN PARTEA INTREAGA A LUI B
- si vom suprascrie memoria doar cu un singur numar = B-A
- //C IL CITIM IN 2 LOCATII DE MEMORIE, DECI VOM MERGE PANA LA 2*N SI IL SALVAM IN MEMORIE
- cder[n-2]=2*(n-1)*c[n-1];
- 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
- SI AVEM IN 2 REGISTRII ADRESELE DE MEMORIE, UNA PENTRU VECTORUL CDER, UNA PENTRU C[N], ADRESE PE CARE LE VOM DECREMENTA/INCREMENTA
- con=2.0/(b-a);
- EX. 2/2.3=0.86 -> AVEM 1 ZECIMALA => INMULTIM CU 10 -> 20/23 -> 20<23 => 200/23 =
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement