用右移加法做乘法运算(65535*65535)
时间:04-03
来源:互联网
点击:
ORG0000H
JMPA1
ORG002BH
A1:MOVR0,#0;数据处理寄存器高位(乘积高8位)
MOVR1,#0;数据处理寄存器低位(乘积高中8位)
MOVR2,#255;被乘数高位(乘积低中8位)
MOVR3,#255;被乘数低位(乘积低8位)
MOVR4,#255;乘数高位
MOVR5,#255;乘数低位
MOV30H,#16;循环次数--8位二进制数相乘8次4位则4次
A2:
CLRC;清C
MOVA,R3;
JNBACC.0,A3;判断被乘数第0位是否为0是则不用相加
MOVA,R1;不为0则相加
ADDA,R5;乘数低位与处理后数据低位相加
MOVR1,A;数据存回数据处理低位寄存器
MOVA,R0
ADDCA,R4;乘数低位与处理后数据高位相加上面相加可能溢出所以用ADDC
MOVR0,A;数据存回数据处理高位寄存器
A3:MOVA,R0;先右移高位
RRCA;相加可能溢出所以用RRC
MOVR0,A;
MOVA,R1;在右移低位
RRCA;RRC把高位的数移入低位
MOVR1,A
MOVA,R2;
RRCA;将处理后的数移到被乘数高位
MOVR2,A;
MOVA,R3;
RRCA;将处理后的数移到被乘数低位
MOVR3,A;
DJNZ30H,A2;是否完成
NOP
NOP
NOP
JMP$
END
- 用右移加法做乘法运算(255*255)(11-30)
- 第26节:乘法运算的溢出(11-22)
- 第24节:乘法运算的5种常见格式(11-22)
- Windows CE下驱动程序开发基础(二)(11-09)
- 嵌入式软件工程师必须知道的:volatile的作用(05-01)
- ADSP2189M在船舶自动识别系统开发中的应用 (07-16)