首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > 8051子程序(六)

8051子程序(六)

资料介绍
8051子程序(六)

MCS-51单片机实用子程序库(六)


MCS-51单片机实用子程序库

(17) 标号: FSQR 功能:浮点数开平方(快速逼近算法)

入口条件:操作数在[R0]中。
出口信息:OV=0时,平方根仍在[R0]中,OV=1时,负数开平方出错。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
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 ;将阶码扩展成8bit补码
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 ;将尾数传送到R2R3中
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
M
标签:8051程序
8051子程序(六)
本地下载

评论