Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Q2i=N5i/4-N6i
- ; Q2i=(N5i-N6i)*2
- ; Q2 = ( sum( i = 1 to N ) of Q2i ) / N + K.
- N equ 3 ; Kol-vo chisel v massive, >= 10.
- K equ 0 ; Proizvol'naya konstanta.
- dseg at 30h ; Segment dannih.
- N5: ds 2 ; Adres elementa i v n5.
- N6: ds 2 ; Adres elementa i v n6.
- Sum: ds 2 ; Summa.
- Remainder: ds 2 ; Ostatok.
- Remainder4: ds 1 ; Ostatok.pri del na 4
- sum_rem: ds 2 ; Sum ostatok pri del na 4
- DivResult: ds 2 ; Resultat deleniya.
- xseg ; Segment vneshney pamyati.
- Q2: ds 2 ; Finalnyi rezultat.
- cseg ; Segment koda.
- jmp start ; Perehod na start.
- org 40h
- N5Arr: dw 41,42,9
- N6Arr: dw 5,4,4
- start:
- mov r2,#N ; Schetchik iteraciy.
- ; Zanesti znacheniya massivov:
- mov N5,#High(N5Arr)
- mov N5+1,#Low(N5Arr)
- mov N6,#High(N6Arr)
- mov N6+1,#Low(N6Arr)
- mov sum,#0h ; Obnulenie summy.
- mov sum+1,#0h
- division4:
- ; Perenosim N5i v r3r4
- mov dph,N5 ; Zanesti adres v registr kosvennoy adresacii.
- mov dpl,N5+1
- clr a ; Ochistit' a.
- movc a,@a+dptr ; Peresylka iz pamyati programmy.
- mov r3,a ; Zanesenie v r3.
- clr a ; Ochistit' a.
- inc dptr ; Uvelichit' znachenie ukazatelya.
- movc a,@a+dptr ; Peresylka iz pamyati programmy.
- mov r4,a ; Zanesenie v r4.
- clr a ; Ochistit' a.
- inc dptr ; Uvelichit' znachenie ukazatelya.
- mov N5,dph ; Peredvinut' ukazatel na massiv.
- mov N5+1,dpl
- ; Perenosim N6i v r5r6
- mov dph,n6 ; Zanesti adres v registr kosvennoy adresacii.
- mov dpl,n6+1
- clr a ; Ochistit' a.
- movc a,@a+dptr ; Peresylka iz pamyati programmy.
- mov r5,a ; Zanesenie v r5.
- clr a ; Ochistit' a.
- inc dptr ; Uvelichit' znachenie ukazatelya.
- movc a,@a+dptr ; Peresylka iz pamyati programmy.
- mov r6,a ; Zanesenie v r6.
- clr a ; Ochistit' a.
- inc dptr ; Uvelichit' znahenie ukazatelya.
- mov N6,dph ; Peredvinut' ukazatel na massiv.
- mov N6+1,dpl
- clr c
- mov a,r3
- rrc a
- mov r3,a
- mov a,r4
- rrc a
- mov r4,a
- clr a
- addc a,#0
- mov Remainder4,a
- clr c
- mov a,r3
- rrc a
- mov r3,a
- mov a,r4
- rrc a
- mov r4,a
- mov b,#2
- clr a
- addc a,#0
- mul ab
- add a,Remainder4
- mov Remainder4,a
- ;mov r7,a
- ;mov a,sum_rem
- ;add a,r7
- ;mov sum_rem,a
- subtraction:
- ; Vichytanie mladshego baita i zanesenie rezul'tata v r4.
- clr c ; Ochistka flaga perenosa.
- mov a,r4 ; Kopirovanie v akkumulyator.
- subb a,r6 ; Vichytanie.
- mov r4,a ; Sohranenie rezul'tata.
- ; Vichytanie starshego baita i zaema i zanesenie rezul'tata v r3.
- mov a,r3 ; Kopirovanie v akkumulyator.
- subb a,r5 ; Vichytanie.
- mov r3,a ; Sohranenie rezul'tata.
- jnc nosubrem
- ;13.75-14 = -0.25
- ;100 = 4
- ;75 = 3
- ;50 = 2
- ;25 = 1
- ;this is for this
- clr c
- mov a,#4h
- mov r7,Remainder4
- subb a,r7
- mov Remainder4,a
- ;srazu vichitaem ego iz obshego ostatka potomuchto otric chislo
- clr c
- mov r7,Remainder4
- mov a,Remainder
- subb a,r7
- mov Remainder,a
- mov r7,a
- mov a,#0
- mov Remainder4,a
- ;SLUCHAY ESLI OSTATOK OTRIC
- mov a,r7
- anl a,#80h
- jz poloshostatok
- ;vichit 1 iz summ
- clr c
- mov a,sum+1
- subb a,#1
- mov sum+1,a
- mov a,sum
- subb a,#0
- mov sum,a
- ;obnov tek ostatok
- clr c
- mov a,Remainder
- add a,#4
- mov Remainder,a
- poloshostatok:
- ;mov Remainder,a
- mov a,r4
- add a,#1
- mov r4,a
- mov a,r3
- addc a,#0
- mov r3,a
- nosubrem:
- clr c
- mov a,Remainder
- addc a,Remainder4
- mov Remainder,a
- subb a,#4
- anl a,#80h
- jnz noaddrem
- mov a,r4
- add a,#1
- mov r4,a
- mov a,r3
- addc a,#0
- mov r3,a
- clr c
- mov a,Remainder
- subb a,#4
- mov Remainder,a
- noaddrem:
- ; Summirovanie rezul'tata s Q2.
- mov a,r4 ; Perenos mladhsego baita.
- add a,sum+1 ; Summa s mladshim baitom.
- mov sum+1,a ; Vozvrat rezul'tata.
- mov a,r3 ; Perenos starhego baita.
- addc a,sum ; Summa so starshim baitom.
- mov sum,a ; Vozvrat rezul'tata.
- clr c
- mov a,r2
- subb a,#1
- mov r2,a
- jz endsub
- jmp division4 ; Provarka okonchaniya cikla.
- endsub:
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement