入口条件:被乘数在R2、R3中,乘数在R6、R7中。
出口信息:乘积在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
左边的是参考: 右边部分是修改的
R2 R3 R4 R5
R4 R5 R6 R7
MULD:
MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB ; 结果高字节存入寄存器B,底字节存入累加器A
MOV R4,B ;暂存部分积 MOV R6,B ;暂存部分积
MOV R5,A MOV R7,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积 ADD A,R6 ;累加部分积
MOV R4,A MOV R6,A
CLR A CLR A
ADDC A,B ADDC A,B
MOV R3,A MOV R5,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积 ADD A,R6 ;累加部分积
MOV R4,A MOV R6,A
MOV A,R3 MOV A,R5
ADDC A,B ADDC A,B
MOV R3,A MOV R5,A
CLR A CLR A
RLC A RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积 ADD A,R5 ;累加部分积
MOV R3,A MOV R5,A
MOV A,R2 MOV A,R4
ADDC A,B ADDC A,B
MOV R2,A MOV R4,A
RET