Dseg at 100 Xseg at 0 Cseg at 0 //macro multiplying multi MACRO Mov a,r1 Mov b,r4 Mul ab Mov r1,a //r1 - Low Mov r5,b //r5 - buffer Mov a,r2 Mov b,r4 Mul ab clr c Add a,r5 //r2 <- r1 (perenos) Mov r2,a //r2 - Medium Mov a,r3 Addc a,b Mov r3,a //r3 - High ENDM //macro summing sum macro clr c Mov a,r1 Add a,r4 Mov r1,a Mov a,r2 Addc a,#0 Mov r2,a Mov a,r3 Addc a,#0 Mov r3,a ENDM Jmp start //dividing podprogramma division: Mov r6,#16 Cikl: clr c Mov b,r3 //r3 - High delimoe Mov a,r4 Rr a //делитель делится на 2 для сравнения Anl a,#0x7f Xch a,b Subb a,b Jc belzero Abovezero: //((S<<1)-A)>0 clr c Mov a,r1 Rl a Mov b,a //Saving C (r2 <- r1) Anl a,#0xfe Mov r1,a Mov a,b Anl a,#0x01 Mov b,a Mov a,r2 Rl a Mov r7,a //Saving C (r3 <- r2) Anl a,#0xfe Add a,b Mov r2,a Mov a,r7 Anl a,#0x01 Mov b,a Mov a,r3 Rl a Anl a,#0xfe Add a,b Mov r3,a //Number doubled Mov b,r4 //Doing [(S<<1)]-A+1 Subb a,b Mov r3,a Mov a,r1 Inc a Mov r1,a jmp fincikl belzero: //((S<<1)-A)<0 clr c Mov a,r1 Rl a Mov b,a //Saving C (r2 <- r1) Anl a,#0xfe Mov r1,a Mov a,b Anl a,#0x01 Mov b,a Mov a,r2 Rl a Mov r7,a //Saving C (r3 <- r2) Anl a,#0xfe Add a,b Mov r2,a Mov a,r7 Anl a,#0x01 Mov b,a Mov a,r3 Rl a Anl a,#0xfe Add a,b Mov r3,a //Number doubled fincikl: Djnz r6,cikl clr a Mov r3,a ret //Program body start:clr a clr c Mov b,a Mov r1,a Mov r2,a Mov r3,a Mov r4,a Mov r5,a Mov r6,a Mov r7,a Mov p3,#0 Mov r0,#0 //maincikl counter maincycle: Mov r1,#62 //r1, r2, r3 - mnogimoe Mov a,r0 Mov r4,a //r4 - mnogitel' multi multi Mov r4,#100 lcall division //62*x*x/100 Mov a,r2 Mov r1,a Mov a,r3 Mov r2,a clr a Mov r3,a mov r4,#11 lcall division //62*x*x/100/2835 Mov r4,#6 sum //(1700/315)[~6] + (62*x*x/100/2835) Mov a,r0 Mov r4,a multi multi Mov r4,#100 lcall division lcall division Mov r4,#13 sum Movx a,@dptr Mov r4,a multi multi Mov r4,#100 lcall division lcall division //((2*100/15)+(x*x*((17*100/315)+62*x*x/100/2835))/100/100) Mov r4,#34 sum Mov a,r0 Mov r4,a multi multi Mov r4,#100 lcall division lcall division Mov r4,#100 sum Mov a,r0 Mov r4,a multi Mov r4,#100 lcall division Mov P3,r1 Mov a,r0 Inc a Mov r0,a clr c Subb a,#100 jz final jmp maincycle final: jmp start end