mcs-51单片机实用子程序库四(编辑修改稿)内容摘要:

出口信息: OV=0 时,差仍在 [R0]中, OV=1 时,溢出。 影响资源: PSW、 A、 B、 R2~ R位 1EH、 1FH 堆栈需求:6字节 FSUB: SETB F0 ;设立减法标志 AS: LCALL MVR1 ;计算代数和。 先将 [R1]传送到第二工作区 MOV C,F0 ;用加减标志来校正第二操作数的有效符号 RRC A XRL A,@R1 MOV C, ASN: MOV 1EH,C ;将第二操作数的有效符号存入位 1EH 中 XRL A,@R0 ;与第一操作数的符号比较 RLC A MOV F0,C ;保存比较结果 LCALL MVR0 ;将 [R0]传送到第一工作区中 LCALL AS1 ;在工作寄存器中完成代数运算 MOV0: INC R0 ;将结果传回到 [R0]中的子程序入口 INC R0 MOV A,R4 ;传回尾数的低 字节 MOV @R0,A DEC R0 MOV A,R3 ;传回尾数的高字节 MOV @R0,A DEC R0 MOV A,R2 ;取结果的阶码 MOV C,1FH ;取结果的数符 MOV ,C ;拼入阶码中 MOV @R0,A CLR ;不考虑数符 CLR OV ;清除溢出标志 CJNE A,3FH,MV01;阶码是否上溢。 SETB OV ;设立溢出标志 MV01: MOV A,@R0 ;取出带数符的阶码 RET MVR0: MOV A,@R0 ;将 [R0]传送到第一工作区中的子程序 MOV C, ;将数符保存在位 1FH 中 MOV 1FH,C MOV C, ;将阶码扩充为8bit补码 MOV ,C MOV R2,A ;存放在 R2 中 INC R0 MOV A,@R0 ;将尾数高字节存放在 R3 中 MOV R3,A INC R0 MOV A,@R0 ;将尾数低字节存放在 R4 中 MOV R4,A DEC R0 ;恢复数据指针 DEC R0 RET MVR1: MOV A,@R1 ;将 [R1]传送到第二工作区中的子程序 MOV C, ;将数符保存在位 1EH 中 MOV 1EH,C MOV C, ;将阶码扩充为8bit补码 MOV ,C MOV R5,A ;存放在 R5 中 INC R1 MOV A,@R1 ;将尾数高字节存放在 R6 中 MOV R6,A INC R1 MOV A,@R1 ;将尾数低字节存放在 R7 中 MOV R7,A DEC R1 ;恢复数据指针 DEC R1 RET AS1: MOV A,R6 ;读取第二操作数尾数高字节 ORL A,R7 JZ AS2 ;第二操作数为零,不必运算 MOV A,R3 ;读取 第一操作数尾数高字节 ORL A,R4 JNZ EQ1 MOV A,R6 ;第一操作数为零,结果以第二操作数为准 MOV R3,A MO。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。