您现在的位置: 主页 > MCU > 单片机应用 > 单片机两个双字节无符号数相乘程序举例 -
本文所属标签:
为本文创立个标签吧:

单片机两个双字节无符号数相乘程序举例 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-11 

[导读]本程序适用于Intel的51系统单片机例 将(R2R3)和(R6R7)两个双字节无符号数相乘,结果送R4R5R6R7。用移位和迭加的方式,步骤如下:1)清部分积(高16位)R4R5=0。循环数16。2)把R4R5R6R7右移一位,从最低位开始检

本程序适用于Intel的51系统单片机

本文引用地址: http://www.21ic.com/app/mcu/201809/779992.htm

例 将(R2R3)和(R6R7)两个双字节无符号数相乘,结果送R4R5R6R7。

用移位和迭加的方式,步骤如下:

1)清部分积(高16位)R4R5=0。循环数16。

2)把R4R5R6R7右移一位,从最低位开始检查乘数R6R7的各个位。

3)如乘数位为1,则被乘数R2R3加到部分积R4R5中,否则不加。

4)循环数减1,不到16次再返回1)。



NMUL:MOV R4,#0

MOV R5,#0 ;积的高16位=0

MOV R0,#16 ;乘数16位二进制

CLR C

NMLP:MOV A,R4

RRC A

MOV R4,A

MOV A,R5

RRC A

MOV R5,A

MOV A,R6

RRC A

MOV R6,A

MOV A,R7

RRC A

MOV R7,A ;(R4R5R6R7)右移一位

JNC NMLN

MOV A,R5 ;若移出位=1,则(R4R5)=(R4R5)+(R2R3)

ADD A,R3

MOV R5,A

MOV A,R4

ADDC A,R2

MOV R4,A

NMLN:DJNZ R0,NMLP



MOV A,R4 ;最后再移位一次

RRC A

MOV R4,A

MOV A,R5

RRC A

MOV R5,A

MOV A,R6

RRC A

MOV R6,A

MOV A,R7

RRC A

MOV R7,A ;(R4R5R6R7)右移一位

RET




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 单片机两个双字节无符号数相乘程序举例 -
 

"单片机两个双字节无符号数相乘程序举例 -"的相关文章

网站地图

围观()