作者lalawul (锋哥开炮罗......)
看板ASM
标题[问题] 请问这段乘法的code有办法再改进吗 ?
时间Thu Jul 12 00:20:51 2012
我是要用8051做一个16位元的数字乘上一个8位元
的数字,16位元数字的High Byte存在Var_H, Low
Byte存在Var_L, 8位元的数字存在变数 ZZ, 最後
把乘积存在 A(High byte), R4(Millde byte)
和 R3(Low byte), code如下所列, 我算过除了
MUL 这个指令是4个cycle以外, 其他都是 1个
cycle, 所以这段code一共要 19 个cycle, 但
是我需要把这乘法耗掉的machine cycle缩短,
不知道要怎麽改才能做到, 请各位大大帮我看
一下, 哪怕是只少一个machine cycle都好 .
MOV A, ZZ
MOV B, Var_L
MUL AB
MOV R4, B
MOV R3, A
MOV A, ZZ
MOV B, Var_H
MUL AB
MOV R5, B
ADD A, R4
MOV R4, A
CLR A
ADDC A, R5
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.36.184
1F:→ dsplab:何不改用1T指令周期的变种8051? 07/12 08:55
2F:→ lalawul:大大指的是 1 clock = 1 machine cycle 的8051 吗? 07/12 09:46
3F:推 Deltaguita:就是那种 英飞凌 STC silicon_lab 都有相关产品 07/12 13:59
4F:→ Deltaguita:DIP40的可以考虑用STC89C54RD+ 可以完全相容reg52.h 07/12 14:01
5F:→ ksmrt0123:MOV R5,B可省, 只要最後改为ADDC A.B即可 07/12 16:01
6F:→ lalawul:感谢楼上大大帮我省了一个cycle~~~ 07/12 16:21