No.29906 作者:langren0468 邮件:langren04681980@163.com ID:31 登陆:26次 QQ:16435101 -- MSN:langren0468@hotmail.com 文章数:1085篇 最后登陆IP:210.41.106.221 最后登陆:2005/3/23 13:40:31 注册:2003/3/11 8:50:00 财富:2882 发帖时间:2003/5/13 14:11:42 发贴者IP:218.88.133.118 标题:langren0468:浮点除法! 摘要:No.29906浮点除法! 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作工作寄存器 ......
>>返回讨论的主题
|