试编程实现3字节无符号数乘以2字节无符号数:[email protected](5个连续单元
问题详情
试编程实现3字节无符号数乘以2字节无符号数:[email protected]<script data-yjshash="f9e31" type="text/javascript">/* */</script>(5个连续单元)。
参考答案
编程如下:
MUL32:MOV A,R5 ;
MOV B,R3 ;
MUL AB ;R5×R3
MOV @R0,A ;RSR3L→@R01
INC R0 ;指向@R02
MOV @R0,B ;R5R3H→@R02
MOV A,R6 ;
MOV B,R3 ;
MUL AB ;R6×R3
ADD A,@R0 ;R6R3L+R5R3H
MOV @R0,A ;R6R3L+RSR3H→@R02
INC R0 ;指向@R03
CLR A ;
ADDC A,B ;R6R3H+C
MOV @R0,A ;R6R3H+C→@R03
MOV A,R7 ;
MOV B,R3 ;
MUL AB ;R7×R3
ADD A,@R0 ;R7R3L+R6R3H
MOV @R0,A ;R7R3L+R6R3H→@R03
INC R0 ;指向@R04
CLR A ;
ADDC A,B ;R7R3H+C
MOV @R0,A ;R7R3H+C→@R04
DEC R0 ;
DEC R0 ;指向@R02
MOV A,R5 ;
MOV B,R4 ;
MUL AB ;R5×R4
ADD A,@R0 ;R5R4L+R6R3L+R5R3H
MOV @R0,A ;R5R4L+R6R3L+RSR3H→@R02
INC R0 ;指向@R03
MOV A,@R0 ;读R7R3L+R6R3H
ADDC A,B ;R5R4H+R7R3L+R6R3H+C
MOV @R0,A ;R5R4H+R7R3L+R6R3H+C→@R03
MOV A,R6 ;
MOV B,R4 ;
MUL AB ;R6×R4
ADD A,@R0 ;R6R4L+RSR4H+R7R3L+R6R3H
MOV @R0,A ;R6R4L+RSR4H+R7R3L+R6R3H→@R03
INC R0 ;指向@R04
MOV A,@R0 ;读R7R3H
ADDC A,B ;R6R4H+R7R3H+C
MOV @R0,A ;R6R4H+R7R3H+C→@R04
MOV A,R7 ;
MOV B,R4 ;
MUL AB ;R7×R4
ADD A,@R0 ;R7R4L+R6R4H+R7R3H
MOV @R0,A ;R7R4L+R6R4H+R7R3H→@R04
INC R0 ;指向@R05
CLR A ;
ADDC A,B ;R7R4H+C
MOV @R0,A ;R7R4H+C→@R05
RET ;