看板 ASM 關於我們 聯絡資訊
我是要用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
dsplab:何不改用1T指令週期的變種8051? 07/12 08:55
lalawul:大大指的是 1 clock = 1 machine cycle 的8051 嗎? 07/12 09:46
Deltaguita:就是那種 英飛凌 STC silicon_lab 都有相關產品 07/12 13:59
Deltaguita:DIP40的可以考慮用STC89C54RD+ 可以完全相容reg52.h 07/12 14:01
ksmrt0123:MOV R5,B可省, 只要最後改為ADDC A.B即可 07/12 16:01
lalawul:感謝樓上大大幫我省了一個cycle~~~ 07/12 16:21