单片机两个十六位数相乘的汇编程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:57:30
第一个数在3FH 3EH
第二个数在5BH 5AH
高位在前,低位在后
用汇编语言编写这两个数相乘的程序。
结果存在5DH 5CH
单片机是51系列的

(5) 标号: MULD功能:双字节二进制无符号数乘法888888888888888888888888888888888888888888888888888888888888888888888888

入口条件:被乘数在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

乘积,要用32位的空间,5DH 5CH 明显不够用。