;已知:a=-123.4;b=0.7577;c=56.34;d=1.276; ;它们分别存放在30H、33H、36H、39H开始的连续四个浮点单元中。 ;用BCD码浮点数表示时,分别为a=831234H;b=007577H;c=025634H;d=011276H。 ; 计算 y = Ln √ | Sin (ab/c+d) | ;求解过程:通过调用BTOF子程序,将各变量转换成二进制浮点操作数,再进行各种运算, ;最后调用FTOB子程序,还原成十进制形式,供输出使用。程序如下: FLAG DATA 23H ;浮点运算标志 PFA BIT FLAG.7 PFB BIT FLAG.6 PFC BIT FLAG.5 PFD BIT FLAG.4 DTA EQU 30H ;操作数a存放单元首址 DTB DATA 33H ;操作数b存放单元首址 DTC DATA 36H ;操作数c存放单元首址 DTD DATA 39H ;操作数d存放单元首址 Y DATA 3CH ;运算结果y存放单元首址 ORG 0000H LJMP MAIN ORG 000bH LJMP t0serv ORG 002bH LJMP t2serv ORG 0030H MAIN: setb tr0 SETB TR1 setb 0C8H.2 setb 0a8h.5 MOV TMOD,#21H setb ea setb et0 SETB P1.6 MOV SP,#07H MOV DTA,#83H ;a=-123.4 MOV DTA+1,#12H MOV DTA+2,#34H MOV DTB,#00H ;b=0.7577 MOV DTB+1,#75H MOV DTB+2,#77H MOV DTC,#02H ;c=56.34 MOV DTC+1,#56H MOV DTC+2,#34H MOV DTD,#01H ;d=1.276 MOV DTD+1,#12H MOV DTD+2,#76H LCALL TEST STOP: LJMP STOP ;运行结果,Y=804915H,即y=-0.4915,比较精确的结果应该是-0.491437。 TEST: MOV R0,#DTA ;指向BCD码 LCALL BTOF ;将其转换成二进制浮点操作数 MOV R0,#DTB ;指向BCD码浮点操作数b LCALL BTOF ;将其转换成二进制浮点操作数 MOV R0,#DTC ;指向BCD码浮点操作数c LCALL BTOF ;将其转换成二进制浮点操作数 MOV R0,#DTD ;指向BCD码浮点操作数d LCALL BTOF ;将其转换成二进制浮点操作数 MOV R1,#DTA ;将a复制到结果存放单元Y中 MOV R0,#Y ;R0保持指向结果存放单元Y LCALL FMOV ; MOV R1,#DTB ;指向二进制浮点操作数b LCALL FMUL ;进行浮点乘法运算 MOV R1,#DTC ;指向二进制浮点操作数c LCALL FDIV ;进行浮点除法运算 MOV R1,#DTD ;指向二进制浮点操作数d LCALL FADD ;进行浮点加法运算 LCALL FSIN ;进行浮点正弦运算 LCALL FABS ;进行浮点绝对值运算 LCALL FSQR ;进行浮点开平方运算 LCALL FLN ;进行浮点对数运算 LCALL FTOB ;将结果转换成BCD码浮点数 RET ;以下为浮点子程序库 FSDT: LCALL MVR0 LCALL RLN LJMP MOV0 FADD: CLR F0 SJMP AS FSUB: SETB F0 AS: LCALL MVR1 MOV C,F0 RRC A XRL A,@R1 MOV C,ACC.7 ASN: MOV PFB,C XRL A,@R0 RLC A MOV F0,C LCALL MVR0 LCALL AS1 MOV0: INC R0 INC R0 MOV A,R4 MOV @R0,A DEC R0 MOV A,R3 MOV @R0,A DEC R0 MOV A,R2 MOV C,PFA MOV ACC.7,C MOV @R0,A CLR ACC.7 CLR OV CJNE A,#3FH,MV01 SETB OV MV01: MOV A,@R0 RET MVR0: MOV A,@R0 MOV C,ACC.7 MOV PFA,C MOV C,ACC.6 MOV ACC.7,C MOV R2,A INC R0 MOV A,@R0 MOV R3,A INC R0 MOV A,@R0 MOV R4,A DEC R0 DEC R0 RET MVR1: MOV A,@R1 MOV C,ACC.7 MOV PFB,C MOV C,ACC.6 MOV ACC.7,C MOV R5,A INC R1 MOV A,@R1 MOV R6,A INC R1 MOV A,@R1 MOV R7,A DEC R1 DEC R1 RET AS1: MOV A,R6 ORL A,R7 JZ AS2 MOV A,R3 ORL A,R4 JNZ EQ1 MOV A,R6 MOV R3,A MOV A,R7 MOV R4,A MOV A,R5 MOV R2,A MOV C,PFB MOV PFA,C AS2: RET EQ1: MOV A,R2 XRL A,R5 JZ AS4 JB ACC.7,EQ3 MOV A,R2 CLR C SUBB A,R5 JC EQ4 EQ2: CLR C MOV A,R6 RRC A MOV R6,A MOV A,R7 RRC A MOV R7,A INC R5 ORL A,R6 JNZ EQ1 MOV A,R2 MOV R5,A SJMP AS4 EQ3: MOV A,R2 JNB ACC.7,EQ2 EQ4: CLR C LCALL RR1 ORL A,R3 JNZ EQ1 MOV A,R5 MOV R2,A AS4: JB F0,AS5 MOV A,R4 ADD A,R7 MOV R4,A MOV A,R3 ADDC A,R6 MOV R3,A JNC AS2 LJMP RR1 AS5: CLR C MOV A,R4 SUBB A,R7 MOV B,A MOV A,R3 SUBB A,R6 JC AS6 MOV R4,B MOV R3,A LJMP RLN AS6: CPL PFA CLR C MOV A,R7 SUBB A,R4 MOV R4,A MOV A,R6 SUBB A,R3 MOV R3,A RLN: MOV A,R3 ORL A,R4 JNZ RLN1 MOV R2,#0C1H RET RLN1: MOV A,R3 JB ACC.7,RLN2 CLR C LCALL RL1 SJMP RLN RLN2: CLR OV RET RL1: MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A DEC R2 CJNE R2,#0C0H,RL1E CLR A MOV R3,A MOV R4,A MOV R2,#0C1H RL1E: CLR OV RET RR1: MOV A,R3 RRC A MOV R3,A MOV A,R4 RRC A MOV R4,A INC R2 CLR OV CJNE R2,#40H,RR1E MOV R2,#3FH SETB OV RR1E: RET FMUL: LCALL MVR0 MOV A,@R0 XRL A,@R1 RLC A MOV PFA,C LCALL MUL0 LJMP MOV0 MUL0: LCALL MVR1 MUL1: MOV A,R3 ORL A,R4 JZ MUL6 MOV A,R6 ORL A,R7 JZ MUL5 MOV A,R7 MOV B,R4 MUL AB MOV A,B XCH A,R7 MOV B,R3 MUL AB ADD A,R7 MOV R7,A CLR A ADDC A,B XCH A,R4 MOV B,R6 MUL AB ADD A,R7 MOV R7,A MOV A,B ADDC A,R4 MOV R4,A CLR A RLC A XCH A,R3 MOV B,R6 MUL AB ADD A,R4 MOV R4,A MOV A,B ADDC A,R3 MOV R3,A JB ACC.7,MUL2 MOV A,R7 RLC A MOV R7,A LCALL RL1 MUL2: MOV A,R7 JNB ACC.7,MUL3 INC R4 MOV A,R4 JNZ MUL3 INC R3 MOV A,R3 JNZ MUL3 MOV R3,#80H INC R2 MUL3: MOV A,R2 ADD A,R5 MD: MOV R2,A JB ACC.7,MUL4 JNB ACC.6,MUL6 MOV R2,#3FH SETB OV RET MUL4: JB ACC.6,MUL6 MUL5: CLR A MOV R3,A MOV R4,A MOV R2,#41H MUL6: CLR OV RET FDIV: INC R0 MOV A,@R0 INC R0 ORL A,@R0 DEC R0 DEC R0 JNZ DIV1 MOV @R0,#41H CLR OV RET DIV1: INC R1 MOV A,@R1 INC R1 ORL A,@R1 DEC R1 DEC R1 JNZ DIV2 SETB OV RET DIV2: LCALL MVR0 MOV A,@R0 XRL A,@R1 RLC A MOV PFA,C LCALL MVR1 LCALL DIV3 LJMP MOV0 DIV3: CLR C MOV A,R4 SUBB A,R7 MOV A,R3 SUBB A,R6 JC DIV4 LCALL RR1 SJMP DIV3 DIV4: CLR A XCH A,R0 PUSH ACC CLR A XCH A,R1 PUSH ACC MOV A,R2 PUSH ACC MOV B,#10H DIV5: CLR C MOV A,R1 RLC A MOV R1,A MOV A,R0 RLC A MOV R0,A MOV A,R4 RLC A MOV R4,A XCH A,R3 RLC A XCH A,R3 MOV F0,C CLR C SUBB A,R7 MOV R2,A MOV A,R3 SUBB A,R6 ANL C,/F0 JC DIV6 MOV R3,A MOV A,R2 MOV R4,A INC R1 DIV6: DJNZ B,DIV5 MOV A,R6 CLR C RRC A SUBB A,R3 CLR A ADDC A,R1 MOV R4,A CLR A ADDC A,R0 MOV R3,A POP ACC MOV R2,A POP ACC MOV R1,A POP ACC MOV R0,A MOV A,R2 CLR C SUBB A,R5 LCALL MD LJMP RLN FCLR: INC R0 INC R0 CLR A MOV @R0,A DEC R0 MOV @R0,A DEC R0 MOV @R0,#41H RET FZER: INC R0 INC R0 MOV A,@R0 DEC R0 ORL A,@R0 DEC R0 JNZ ZERO MOV @R0,#41H ZERO: RET FMOV: INC R0 INC R0 INC R1 INC R1 MOV A,@R1 MOV @R0,A DEC R0 DEC R1 MOV A,@R1 MOV @R0,A DEC R0 DEC R1 MOV A,@R1 MOV @R0,A RET FPUS: POP ACC MOV R2,A POP ACC MOV R3,A MOV A,@R0 PUSH ACC INC R0 MOV A,@R0 PUSH ACC INC R0 MOV A,@R0 PUSH ACC DEC R0 DEC R0 MOV A,R3 PUSH ACC MOV A,R2 PUSH ACC RET FPOP: POP ACC MOV R2,A POP ACC MOV R3,A INC R0 INC R0 POP ACC MOV @R0,A DEC R0 POP ACC MOV @R0,A DEC R0 POP ACC MOV @R0,A MOV A,R3 PUSH ACC MOV A,R2 PUSH ACC RET FCMP: MOV A,@R0 XRL A,@R1 JNB ACC.7,CMP2 MOV A,@R0 RLC A MOV A,#0FFH RET CMP2: MOV A,@R1 MOV C,ACC.6 MOV ACC.7,C MOV B,A MOV A,@R0 MOV C,ACC.7 MOV F0,C MOV C,ACC.6 MOV ACC.7,C CLR C SUBB A,B JZ CMP6 RLC A JNB F0,CMP5 CPL C CMP5: MOV A,#0FFH RET CMP6: INC R0 INC R0 INC R1 INC R1 CLR C MOV A,@R0 SUBB A,@R1 MOV B,A DEC R0 DEC R1 MOV A,@R0 SUBB A,@R1 DEC R0 DEC R1 ORL A,B JZ CMP7 JNB F0,CMP7 CPL C CMP7: RET FABS: MOV A,@R0 CLR ACC.7 MOV @R0,A RET FSGN: INC R0 MOV A,@R0 INC R0 ORL A,@R0 DEC R0 DEC R0 JNZ SGN RET SGN: MOV A,@R0 RLC A MOV A,#1 JNC SGN1 MOV A,#0FFH SGN1: RET FINT: LCALL MVR0 LCALL INT LJMP MOV0 INT: MOV A,R3 ORL A,R4 JNZ INTA CLR PFA MOV R2,#41H RET INTA: MOV A,R2 JZ INTB JB ACC.7,INTB CLR C SUBB A,#10H JC INTD RET INTB: CLR A MOV R4,A MOV C,PFA RRC A MOV R3,A RL A MOV R2,A JNZ INTC MOV R2,#41H INTC: RET INTD: CLR F0 INTE: CLR C LCALL RR1 ORL C,F0 MOV F0,C CJNE R2,#10H,INTE JNB F0,INTF JNB PFA,INTF INC R4 MOV A,R4 JNZ INTF INC R3 INTF: LJMP RLN FRCP: MOV A,@R0 MOV C,ACC.7 MOV PFA,C MOV C,ACC.6 MOV ACC.7,C MOV R5,A INC R0 MOV A,@R0 MOV R6,A INC R0 MOV A,@R0 MOV R7,A DEC R0 DEC R0 ORL A,R6 JNZ RCP SETB OV RET RCP: MOV A,R6 JB ACC.7,RCP2 CLR C MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A DEC R5 SJMP RCP RCP2: MOV R2,#1 MOV R3,#80H MOV R4,#0 LCALL DIV3 LJMP MOV0 FSQU: MOV A,R0 XCH A,R1 PUSH ACC LCALL FMUL POP ACC MOV R1,A RET FSQR: MOV A,@R0 JNB ACC.7,SQR SETB OV RET SQR: INC R0 INC R0 MOV A,@R0 DEC R0 ORL A,@R0 DEC R0 JNZ SQ MOV @R0,#41H CLR OV RET SQ: MOV A,@R0 MOV C,ACC.6 MOV ACC.7,C INC A CLR C RRC A MOV @R0,A INC R0 JC SQR0 MOV A,@R0 RRC A MOV @R0,A INC R0 MOV A,@R0 RRC A MOV @R0,A DEC R0 SQR0: MOV A,@R0 JZ SQR9 MOV R2,A INC R0 MOV A,@R0 MOV R3,A MOV A,R2 ADD A,#57H JC SQR2 ADD A,#45H JC SQR1 ADD A,#24H MOV B,#0E3H MOV R4,#80H SJMP SQR3 SQR1: MOV B,#0B2H MOV R4,#0A0H SJMP SQR3 SQR2: MOV B,#8DH MOV R4,#0D0H SQR3: MUL AB MOV A,B ADD A,R4 MOV R4,A MOV B,A MUL AB XCH A,R3 CLR C SUBB A,R3 MOV R3,A MOV A,B XCH A,R2 SUBB A,R2 MOV R2,A SQR4: SETB C MOV A,R4 RLC A MOV R6,A CLR A RLC A MOV R5,A MOV A,R3 SUBB A,R6 MOV B,A MOV A,R2 SUBB A,R5 JC SQR5 INC R4 MOV R2,A MOV R3,B SJMP SQR4 SQR5: MOV A,R4 XCH A,R2 RRC A MOV F0,C MOV A,R3 MOV R5,A MOV R4,#8 SQR6: CLR C MOV A,R3 RLC A MOV R3,A CLR C MOV A,R5 SUBB A,R2 JB F0,SQR7 JC SQR8 SQR7: MOV R5,A INC R3 SQR8: CLR C MOV A,R5 RLC A MOV R5,A MOV F0,C DJNZ R4,SQR6 MOV A,R3 MOV @R0,A DEC R0 MOV A,R2 MOV @R0,A SQR9: DEC R0 CLR OV RET FPLN: POP DPH POP DPL XCH A,R0 XCH A,R1 XCH A,R0 CLR A MOV R2,A MOV R3,A MOV R4,A CLR PFA PLN1: CLR A MOVC A,@A+DPTR MOV C,ACC.7 MOV PFB,C MOV C,ACC.6 MOV ACC.7,C MOV R5,A INC DPTR CLR A MOVC A,@A+DPTR MOV R6,A INC DPTR CLR A MOVC A,@A+DPTR MOV R7,A INC DPTR MOV C,PFB RRC A XRL A,FLAG RLC A MOV F0,C LCALL AS1 CLR A MOVC A,@A+DPTR CJNE A,#40H,PLN2 XCH A,R0 XCH A,R1 XCH A,R0 LCALL MOV0 CLR A INC DPTR JMP @A+DPTR PLN2: MOV A,@R1 XRL A,FLAG RLC A MOV PFA,C LCALL MUL0 SJMP PLN1 FLOG: LCALL FLN JNB OV,LOG RET LOG: MOV R5,#0FFH MOV R6,#0DEH MOV R7,#5CH LCALL MUL1 LJMP MOV0 FLN: LCALL MVR0 JB PFA,LNOV MOV A,R3 ORL A,R4 JNZ LN0 LNOV: SETB OV RET LN0: CLR C LCALL RL1 CLR A XCH A,R2 PUSH ACC LCALL RLN LCALL MOV0 LCALL FPLN DB 7BH,0F4H,30H DB 0FEH,85H,13H DB 7FH,91H,51H DB 0FFH,0FAH,0BAH DB 0,0FFH,0CAH DB 70H,0C0H,0 DB 40H POP ACC JNZ LN1 RET LN1: CLR PFB MOV C,ACC.7 MOV F0,C JNC LN2 CPL A INC A LN2: MOV R2,A MOV B,#72H MUL AB XCH A,R2 MOV R7,B MOV B,#0B1H MUL AB ADD A,R7 MOV R7,A CLR A ADDC A,B MOV R6,A MOV R5,#8 LN3: JB ACC.7,LN4 MOV A,R2 RLC A MOV R2,A MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A DEC R5 SJMP LN3 LN4: MOV C,F0 MOV ACC.7,C LJMP ASN FE10: MOV R5,#2 MOV R6,#0D4H MOV R7,#9AH SJMP EXP FEXP: MOV R5,#1 MOV R6,#0B8H MOV R7,#0ABH EXP: CLR PFB LCALL MVR0 LCALL MUL1 SJMP E20 FE2: LCALL MVR0 E20: MOV A,R3 ORL A,R4 JZ EXP1 MOV A,R2 JB ACC.7,EXP2 SETB C SUBB A,#6 JC EXP2 JB PFA,EXP0 MOV @R0,#3FH INC R0 MOV @R0,#0FFH INC R0 MOV @R0,#0FFH DEC R0 DEC R0 SETB OV RET EXP0: MOV @R0,#41H CLR A INC R0 MOV @R0,A INC R0 MOV @R0,A DEC R0 DEC R0 CLR OV RET EXP1: MOV @R0,#1 INC R0 MOV @R0,#80H INC R0 MOV @R0,#0 DEC R0 DEC R0 CLR OV RET EXP2: MOV A,R2 MOV R5,A MOV A,R3 MOV R6,A MOV A,R4 MOV R7,A MOV C,PFA MOV PFB,C LCALL INT MOV A,R3 JZ EXP4 EXP3: CLR C RRC A INC R2 CJNE R2,#8,EXP3 EXP4: MOV R3,A JNB PFA,EXP5 CPL A INC A EXP5: PUSH ACC LCALL RLN CPL PFA SETB F0 LCALL AS1 LCALL MOV0 LCALL FPLN DB 77H,0B1H,0C9H DB 7AH,0A1H,68H DB 7CH,0E3H,4FH DB 7EH,0F5H,0E7H DB 0,0B1H,72H DB 1,80H,0 DB 40H POP ACC ADD A,R2 MOV R2,A CLR PFA LJMP MOV0 DTOF: MOV R2,A MOV A,@R0 MOV R3,A INC R0 MOV A,@R0 MOV R4,A DEC R0 LCALL RLN LJMP MOV0 FTOD: LCALL MVR0 MOV A,R2 JZ FTD4 JB ACC.7,FTD4 SETB C SUBB A,#10H JC FTD1 SETB OV RET FTD1: SETB C MOV A,R2 SUBB A,#8 JC FTD3 FTD2: MOV B,#10H LCALL FTD8 SETB F0 CLR C CLR OV RET FTD3: MOV B,#8 LCALL FTD8 SETB C CLR F0 CLR OV RET FTD4: MOV B,#0 LCALL FTD8 CLR OV CLR F0 CLR C RET FTD8: MOV A,R2 CJNE A,B,FTD9 MOV A,R3 MOV @R0,A INC R0 MOV A,R4 MOV @R0,A DEC R0 RET FTD9: CLR C LCALL RR1 SJMP FTD8 BTOF: INC R0 INC R0 MOV A,@R0 MOV R7,A DEC R0 MOV A,@R0 MOV R6,A DEC R0 ORL A,R7 JNZ BTF0 MOV @R0,#41H RET BTF0: MOV A,@R0 MOV C,ACC.7 MOV PFC,C CLR PFA MOV C,ACC.6 MOV ACC.7,C MOV @R0,A JNC BTF1 ADD A,#19 JC BTF2 MOV @R0,#41H INC R0 MOV @R0,#0 INC R0 MOV @R0,#0 DEC R0 DEC R0 RET BTF1: SUBB A,#19 JC BTF2 MOV A,#3FH MOV C,PFC MOV ACC.7,C MOV @R0,A INC R0 MOV @R0,#0FFH INC R0 MOV @R0,#0FFH DEC R0 DEC R0 RET BTF2: CLR A MOV R4,A MOV R3,A MOV R2,#10H BTF3: MOV A,R7 ADD A,R7 DA A MOV R7,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A DEC R2 JNB ACC.7,BTF3 MOV A,R6 ADD A,#0B0H CLR A ADDC A,R4 MOV R4,A CLR A ADDC A,R3 MOV R3,A JNC BTF4 MOV R3,#80H INC R2 BTF4: MOV DPTR,#BTFL MOV A,@R0 ADD A,#19 MOV B,#3 MUL AB ADD A,DPL MOV DPL,A JNC BTF5 INC DPH BTF5: CLR A MOVC A,@A+DPTR MOV C,ACC.6 MOV ACC.7,C MOV R5,A MOV A,#1 MOVC A,@A+DPTR MOV R6,A MOV A,#2 MOVC A,@A+DPTR MOV R7,A LCALL MUL1 MOV C,PFC MOV PFA,C LJMP MOV0 FTOB: INC R0 MOV A,@R0 INC R0 ORL A,@R0 DEC R0 DEC R0 JNZ FTB0 MOV @R0,#41H RET FTB0: MOV A,@R0 MOV C,ACC.7 MOV PFC,C CLR ACC.7 MOV @R0,A LCALL MVR0 MOV DPTR,#BFL0 MOV B,#0 MOV A,R2 JNB ACC.7,FTB1 MOV DPTR,#BTFL MOV B,#0EDH ADD A,#16 JNC FTB1 MOV DPTR,#BFLN MOV B,#0FAH FTB1: CLR A MOVC A,@A+DPTR MOV C,ACC.6 MOV ACC.7,C MOV R5,A MOV A,#1 MOVC A,@A+DPTR MOV R6,A MOV A,#2 MOVC A,@A+DPTR MOV R7,A MOV A,R5 CLR C SUBB A,R2 JB ACC.7,FTB2 JNZ FTB3 MOV A,R6 CLR C SUBB A,R3 JC FTB2 JNZ FTB3 MOV A,R7 CLR C SUBB A,R4 JC FTB2 JNZ FTB3 MOV R5,B INC R5 MOV R6,#10H MOV R7,#0 SJMP FTB6 FTB2: INC DPTR INC DPTR INC DPTR INC B SJMP FTB1 FTB3: PUSH B LCALL DIV3 FTB4: MOV A,R2 JZ FTB5 CLR C LCALL RR1 SJMP FTB4 FTB5: POP ACC MOV R5,A LCALL HB2 MOV R6,A LCALL HB2 MOV R7,A MOV A,R3 RLC A CLR A ADDC A,R7 DA A MOV R7,A CLR A ADDC A,R6 DA A MOV R6,A JNC FTB6 MOV R6,#10H INC R5 FTB6: INC R0 INC R0 MOV A,R7 MOV @R0,A DEC R0 MOV A,R6 MOV @R0,A DEC R0 MOV A,R5 MOV C,PFC MOV ACC.7,C MOV @R0,A RET HB2: MOV A,R4 MOV B,#100 MUL AB MOV R4,A MOV A,B XCH A,R3 MOV B,#100 MUL AB ADD A,R3 MOV R3,A JNC HB21 INC B HB21: MOV A,B MOV B,#10 DIV AB SWAP A ORL A,B RET BTFL: DB 41H,0ECH,1EH DB 45H,93H,93H DB 48H,0B8H,78H DB 4BH,0E6H,96H DB 4FH,90H,1DH DB 52H,0B4H,25H DB 55H,0E1H,2EH DB 59H,8CH,0BDH DB 5CH,0AFH,0ECH DB 5FH,0DBH,0E7H DB 63H,89H,70H DB 66H,0ABH,0CCH DB 69H,0D6H,0C0H BFLN: DB 6DH,86H,38H DB 70H,0A7H,0C6H DB 73H,0D1H,0B7H DB 77H,83H,12H DB 7AH,0A3H,0D7H DB 7DH,0CCH,0CDH BFL0: DB 1,80H,00H DB 4,0A0H,00H DB 7,0C8H,00H DB 0AH,0FAH,00H DB 0EH,9CH,40H DB 11H,0C3H,50H DB 14H,0F4H,24H DB 18H,98H,97H DB 1BH,0BEH,0BCH DB 1EH,0EEH,6BH DB 22H,95H,03H DB 25H,0BAH,44H DB 28H,0E8H,0D5H DB 2CH,91H,85H DB 2FH,0B5H,0E6H DB 32H,0E3H,60H DB 36H,8EH,1CH DB 39H,31H,0A3H DB 3CH,0DEH,0BH DB 40H,8AH,0C7H FCOS: LCALL FABS MOV R5,#1 MOV R6,#0C9H MOV R7,#10H CLR PFB LCALL MVR0 CLR F0 LCALL AS1 LCALL MOV0 FSIN: MOV A,@R0 MOV C,ACC.7 MOV PFC,C CLR ACC.7 MOV @R0,A LCALL MVR0 MOV R5,#0 MOV R6,#0A2H MOV R7,#0FAH CLR PFB LCALL MUL1 MOV A,R2 MOV R5,A MOV A,R3 MOV R6,A MOV A,R4 MOV R7,A LCALL INT MOV A,R2 JZ SIN2 SIN1: CLR C LCALL RR1 CJNE R2,#10H,SIN1 MOV A,R4 JNB ACC.1,SIN2 CPL PFC SIN2: JB ACC.0,SIN3 CPL PFA SJMP SIN4 SIN3: MOV A,R4 INC A MOV R4,A JNZ SIN4 INC R3 SIN4: LCALL RLN SETB F0 LCALL AS1 LCALL MOV0 LCALL FPLN DB 7DH,93H,28H DB 41H,0,0 DB 80H,0A4H,64H DB 41H,0,0 DB 1,0C9H,2 DB 41H,0,0 DB 40H MOV A,@R0 JZ SIN5 JB ACC.6,SIN5 INC R0 MOV @R0,#80H INC R0 MOV @R0,#0 DEC R0 DEC R0 MOV A,#1 SIN5: MOV C,PFC MOV ACC.7,C MOV @R0,A RET FATN: MOV A,@R0 MOV C,ACC.7 MOV PFC,C CLR ACC.7 MOV @R0,A CLR PFD JB ACC.6,ATN1 JZ ATN1 SETB PFD LCALL FRCP ATN1: LCALL FPLN DB 0FCH,0E4H,91H DB 7FH,8FH,37H DB 0FFH,0EDH,0E0H DB 7BH,0E8H,77H DB 0,0FFH,68H DB 72H,85H,0ECH DB 40H JNB PFD,ATN2 CPL PFA MOV C,PFA MOV F0,C MOV R5,#1 MOV R6,#0C9H MOV R7,#10H LCALL AS1 LCALL MOV0 ATN2: MOV A,@R0 MOV C,PFC MOV ACC.7,C MOV @R0,A RET RTOD: MOV R5,#6 MOV R6,#0E5H MOV R7,#2FH SJMP DR DTOR: MOV R5,#0FBH MOV R6,#8EH MOV R7,#0FAH DR: LCALL MVR0 CLR PFB LCALL MUL1 LJMP MOV0 ;------------------------------ t0serv: nop reti ;------------------------------ t2serv: nop reti END