作者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