《单片机两个双字节无符号数相乘程序举例》由会员分享,可在线阅读,更多相关《单片机两个双字节无符号数相乘程序举例(3页珍藏版)》请在人人文库网上搜索。
1、单片机两个双字节无符号数相乘程序举例本程序适用于Intel的51系统单片机 例将(R2R3 )和(R6R7 )两个双字节无符号数相乘,结果送R4R5R6R7。用移位和迭加的方式,步骤如下:1 )清部分积(高16位)R4R5=0。循环数16。2)把R4R5R6R7右移一位,从最低位开始检查乘数R6R7的各个位。3)如乘数位为1本程序适用于Intel的51系统单片机例将(R2R3 )和(R6R7 )两个双字节无符号数相乘,结果送 R4R5R6R7。用移位和迭加的方式,步骤如下:1 )清部分积(高16位)R4R5=0。循环数16。2 )把R4R5R6R7右移一位,从最低位开始检查乘数R6R7的各个位。
2、。3)如乘数位为1,则被乘数R2R3加到部分积R4R5中,否则不加。4)循环数减1,不到16次再返回1 )。NMUL :MOV R4,#0MOV R5,#0 ;积的高16位=0MOV R0,#16;乘数16位二进制CLR CNMLP :MOV A,R4RRC AMOV R4,AMOV A,,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6 , AMOVA , R7RRC AMOV R7 , A ; (R4R5R6R7 )右移一位JNC NMLNR4R5 ) = ( R4R5 ) + ( R2R3 )MOV A , R5 ;若移出位=1,则ADD A , R3MOV R5 , AMOV A , R4ADDCA , R2MOV R4 , ANMLN : DJNZ R0 , NMLPMOV A , R4 ;最后再移位一次RRC AMOV R4 , AMOV A , R5RRC AMOV R5 , AMOV A , R6RRC AMOV R6 , AMOVA , R7RRC AMOV R7 , A ; (R4R5R6R7 )右移一位RET。