论坛» 嵌入式开发» MCU

跪求8051单片机程序:设计并调试一个双字节无符号数乘法子程序

高工
2011-11-09 11:34 1楼

功能:
双字节无符号数乘法子程序。
入口参数: 被乘数放在R7(高)和R6(低);
乘数放在R5(高)和R4(低);
积(片内RAM中的连续4字节)的首地址放在R0中。

菜鸟
2011-11-09 13:40 2楼
这是我自己写的,希望对你有所帮助
MOV A,R6
MOV B,R4
MUL AB
MOV R0,A
MOV R1,B

MOV A,R7
MOV B,R4
MUL AB
ADD A,R1
MOV R1,A
MOV R2,B

MOV A,R6
MOV B,R5
MUL AB
ADD A,R1
MOV R1,A
CLR A
ADDC A,B
ADDC A,R2
MOV R2,A


MOV A,R7
MOV B,R5
MUL AB
ADD A,R2
MOV R2,A
MOV R3,B
END
高工
2012-03-08 10:43 3楼
这是我在学校老师那里拿来的收藏好东西 你参考下
(5) 标号: MULD 功能:双字节二进制无符号数乘法 入口条件:被乘数在R2、R3中,乘数在R6、R7中。 出口信息:乘积在R2、R3、R4、R5中。 影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节 MULD: MOV A,R3 ;计算R3乘R7 MOV B,R7 MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R3 ;计算R3乘R6 MOV B,R6 MUL AB ADD A,R4 ;累加部分积 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 ;计算R2乘R7 MOV B,R7 MUL AB ADD A,R4 ;累加部分积 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 ;计算R2乘R6 MOV B,R6 MUL AB ADD A,R3 ;累加部分积 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A RET
共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]