访问手机版页面
你的位置:老古开发网 > 51单片机 > 51单片机汇编编程 > 正文  
MCS-51单片机实用子程序库--浮点数除法
内容导读:
标号: FDIV 功能:浮点数除法

入口条件:被除数在[R0]中,除数在[R1]中。
出口信息:OV=0时,商仍在[R0]中,OV=1时,溢出。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求: 5字节
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 ;将[R0]传送到第一工作区中
MOV A,@R0
XRL A,@R1 ;比较两个操作数的符号
RLC A
MOV 1FH,C ;保存结果的符号
LCALL MVR1 ;将[R1]传送到第二工作区中
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 ;借用R0R1R2作工作寄存器
XCH A,R0 ;清零并保护之
PUSH ACC
CLR A
XCH A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV B,#10H ;除法运算,R3R4/R6R7-→R0R1
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 ;将结果存回R3R4
MOV R4,A
CLR A
ADDC A,R0
MOV R3,A
POP ACC ;恢复R0R1R2
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 ;规格化

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐