8051子程序(五) MCS-51单片机实用子程序库(五) MCS-51单片机实用子程序库 (5) 标号: 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,……