入口条件:操作数在[R0]中。
出口信息:结果仍在[R0]中。
影响资源:DPTR、PSW、A、B、R2~R7、位1CH~1FH 堆栈需求:7字节
FATN: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存自变量数符
CLR ACC.7 ;自变量取绝对值
MOV @R0,A
CLR 1CH ;清求余运算标志
JB ACC.6,ATN1;自变量为纯小数否?
JZ ATN1
SETB 1CH ;置位求余运算标志
LCALL FRCP ;通过倒数运算,转换成纯小数
ATN1: LCALL FPLN ;通过多项式运算,计算反正切函数值
DB 0FCH,0E4H,91H;-0.055802
DB 7FH,8FH,37H;0.27922
DB 0FFH,0EDH,0E0H;-0.46460
DB 7BH,0E8H,77H;0.028377
DB 0,0FFH,68H;0.9977
DB 72H,85H,0ECH;3.1930×10-5
DB 40H ;结束
JNB 1CH,ATN2;需要求余运算否?
CPL 1FH ;准备运算标志
MOV C,1FH
MOV F0,C ;常数1.5708(π/2)
MOV R5,#1
MOV R6,#0C9H
MOV R7,#10H
LCALL AS1 ;求余运算
LCALL MOV0 ;回传
ATN2: MOV A,@R0 ;拼入结果的数符
MOV C,1DH
MOV ACC.7,C
MOV @R0,A
RET
(31) 标号: RTOD 功能:浮点弧度数转换成浮点度数
入口条件:浮点弧度数在[R0]中。
出口信息:转换成的浮点度数仍在[R0]中。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节
RTOD: MOV R5,#6 ;系数(180/π)传送到第二工作区
MOV R6,#0E5H
MOV R7,#2FH
SJMP DR ;通过乘法进行转换
(32) 标号: DTOR 功能:浮点度数转换成浮点弧度数
入口条件:浮点度数在[R0]中。
出口信息:转换成的浮点弧度数仍在[R0]中。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节
DTOR: MOV R5,#0FBH;系数(π/180)传送到第二工作区
MOV R6,#8EH
MOV R7,#0FAH
DR: LCALL MVR0 ;将[R0]传送到第一工作区
CLR 1EH ;系数为正
LCALL MUL1 ;通过乘法进行转换
LJMP MOV0 ;结果传送到[R0]中
END
上一篇:Keil C51高级编程方法