[問題] 請問這段乘法的code有辦法再改進嗎 ?

看板ASM (組合語言)作者 (鋒哥開砲囉......)時間12年前 (2012/07/12 00:20), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
我是要用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

07/12 08:55, , 1F
何不改用1T指令週期的變種8051?
07/12 08:55, 1F

07/12 09:46, , 2F
大大指的是 1 clock = 1 machine cycle 的8051 嗎?
07/12 09:46, 2F

07/12 13:59, , 3F
就是那種 英飛凌 STC silicon_lab 都有相關產品
07/12 13:59, 3F

07/12 14:01, , 4F
DIP40的可以考慮用STC89C54RD+ 可以完全相容reg52.h
07/12 14:01, 4F

07/12 16:01, , 5F
MOV R5,B可省, 只要最後改為ADDC A.B即可
07/12 16:01, 5F

07/12 16:21, , 6F
感謝樓上大大幫我省了一個cycle~~~
07/12 16:21, 6F
文章代碼(AID): #1F_QVcQe (ASM)
文章代碼(AID): #1F_QVcQe (ASM)