📄 asm-lib1.htm
字号:
XCH A,R2 <br> MUL AB ;计算2×R2×R3 <br> CLR C <br> RLC A <br> XCH A,B <br> RLC A <br> JNC MU20 <br> INC R2 ;累加溢出量 <br> MU20: XCH A,B ;累加部分积 <br> ADD A,R4 <br> MOV R4,A <br> MOV A,R3 <br> ADDC A,B <br> MOV R3,A <br> CLR A <br> ADDC A,R2 <br> MOV R2,A <br> RET <br> <br> (7) 标号: DIVD 功能:双字节二进制无符号数除法 <br> <br> 入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。 <br> 出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 <br> 影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节 <br> DIVD: CLR C ;比较被除数和除数 <br> MOV A,R3 <br> SUBB A,R7 <br> MOV A,R2 <br> SUBB A,R6 <br> JC DVD1 <br> SETB OV ;溢出 <br> RET <br> DVD1: MOV B,#10H ;计算双字节商 <br> DVD2: CLR C ;部分商和余数同时左移一位 <br> MOV A,R5 <br> RLC A <br> MOV R5,A <br> MOV A,R4 <br> RLC A <br> MOV R4,A <br> MOV A,R3 <br> RLC A <br> MOV R3,A <br> XCH A,R2 <br> RLC A <br> XCH A,R2 <br> MOV F0,C ;保存溢出位 <br> CLR C <br> SUBB A,R7 ;计算(R2R3-R6R7) <br> MOV R1,A <br> MOV A,R2 <br> SUBB A,R6 <br> ANL C,/F0 ;结果判断 <br> JC DVD3 <br> MOV R2,A ;够减,存放新的余数 <br> MOV A,R1 <br> MOV R3,A <br> INC R5 ;商的低位置一 <br> DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5) <br> MOV A,R4 ;将商移到R2R3中 <br> MOV R2,A <br> MOV A,R5 <br> MOV R3,A <br> CLR OV ;设立成功标志 <br> RET <br> <br> (8) 标号: D457 功能:双字节二进制无符号数除以单字节二进制数 <br> <br> 入口条件:被除数在R4、R5中,除数在R7中。 <br> 出口信息:OV=0 时,单字节商在R3中,OV=1 时溢出。 <br> 影响资源:PSW、A、R3~R7 堆栈需求: 2字节 <br> D457: CLR C <br> MOV A,R4 <br> SUBB A,R7 <br> JC DV50 <br> SETB OV ;商溢出 <br> RET <br> DV50: MOV R6,#8 ;求平均值(R4R5/R7-→R3) <br> DV51: MOV A,R5 <br> RLC A <br> MOV R5,A <br> MOV A,R4 <br> RLC A <br> MOV R4,A <br> MOV F0,C <br> CLR C <br> SUBB A,R7 <br> ANL C,/F0 <br> JC DV52 <br> MOV R4,A <br> DV52: CPL C <br> MOV A,R3 <br> RLC A <br> MOV R3,A <br> DJNZ R6,DV51 <br> MOV A,R4 ;四舍五入 <br> ADD A,R4 <br> JC DV53 <br> SUBB A,R7 <br> JC DV54 <br> DV53: INC R3 <br> DV54: CLR OV <br> RET <br> <br> (9) 标号: DV31 功能:三字节二进制无符号数除以单字节二进制数 <br> <br> 入口条件:被除数在R3、R4、R5中,除数在R7中。 <br> 出口信息:OV=0 时,双字节商在R4、R5中,OV=1 时溢出。 <br> 影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节 <br> DV31: CLR C <br> MOV A,R3 <br> SUBB A,R7 <br> JC DV30 <br> SETB OV ;商溢出 <br> RET <br> DV30: MOV R2,#10H ;求R3R4R5/R7-→R4R5 <br> DM23: CLR C <br> MOV A,R5 <br> RLC A <br> MOV R5,A <br> MOV A,R4 <br> RLC A <br> MOV R4,A <br> MOV A,R3 <br> RLC A <br> MOV R3,A <br> MOV F0,C <br> CLR C <br> SUBB A,R7 <br> ANL C,/F0 <br> JC DM24 <br> MOV R3,A <br> INC R5 <br> DM24: DJNZ R2,DM23 <br> MOV A,R3 ;四舍五入 <br> ADD A,R3 <br> JC DM25 <br> SUBB A,R7 <br> JC DM26 <br> DM25: INC R5 <br> MOV A,R5 <br> JNZ DM26 <br> INC R4 <br> DM26: CLR OV <br> RET ;商在R4R5中 <br> <br> (10) 标号: MULS 功能:双字节二进制有符号数乘法(补码) <br> <br> 入口条件:被乘数在R2、R3中,乘数在R6、R7中。 <br> 出口信息:乘积在R2、R3、R4、R5中。 <br> 影响资源:PSW、A、B、R2~R7 堆栈需求: 4字节 <br> MULS: MOV R4,#0 ;清零R4R5 <br> MOV R5,#0 <br> LCALL MDS ;计算结果的符号和两个操作数的绝对值 <br> LCALL MULD ;计算两个绝对值的乘积 <br> SJMP MDSE ;用补码表示结果 <br> <br> <br> (待续) <br> 来源:21IC </font> </p> <p align=right> <FONT color=#0000A0>※ 作 者: rcl 2000-7-25 13:06:59 ※</FONT></p> <p> </p> <p><FONT size=2><BR> </FONT></p> </td> <td rowspan="2"> </td> </tr> <tr> <td height="29" valign="bottom" bgcolor="#CCCCCC"> <font color="#000066" size="5" face="华文中宋"> <strong>www.mcufan.com</strong></font></td> </tr> <tr> <td> </td> <td height="22" bgcolor="#CCCCCC"> <font color="#000066" size="4" face="华文中宋"><strong> 收集、整理</strong></font></td> <td> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -