[問題] 8051乘法以及除法問題

看板ASM (組合語言)作者 (大鈞)時間17年前 (2007/10/22 22:54), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
由於現在我做的案子有用到8051 目前卡到因為我需要做一些乘除法的運算 才可以把從串列阜接收的資料化成我要的數值 但是看了看有關的書籍,總覺得8051的乘除法指令蠻不方便的 問題來了 1.假如我要算25*30 基本寫法應該是 mov a,#25h mov b,#30h mul ab end 這樣寫出來的結果會是b=07,a=50 那我如果想要直接有750這個值該怎麼寫呢? 因為如果我用這方法的話我要先把a跟b轉成2進制 然後放到16bit的DPTR裡,然後再轉成10進制(還沒有測試過) 請問有方法可以直接讓他有750的結果嗎? 2.除法問題 假如我要算350/10 用基本寫法應該是 mov a,#350(這應該只能到255,不過假設一下) mov b,#10 div ab end 可是這樣他就只會做一次的除法動作,並將商跟餘數存於暫存器中 請問有辦法讓結果是35嗎? 也就是可以讓它直接做兩次除的動作 感謝大家的幫忙摟 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.143.123.96

10/22 23:10, , 1F
1,2 沒辨法,就我的認而言。
10/22 23:10, 1F

10/22 23:10, , 2F
ps.51的除法在8bits的mcu中算好用的
10/22 23:10, 2F

10/23 00:10, , 3F
請參考本版221
10/23 00:10, 3F

10/23 00:23, , 4F
221大致上跟我成法部分問題一樣
10/23 00:23, 4F

10/23 00:24, , 5F
可是回文中還是沒有兩個高低位元化成一個十進碼的方法吧?
10/23 00:24, 5F

10/23 00:39, , 6F
如果值控制在255內,low byte就是答案。不想做就用C吧
10/23 00:39, 6F

10/23 00:40, , 7F
直接參考Keil C產生的asm code不是更直接?
10/23 00:40, 7F
文章代碼(AID): #177BchaO (ASM)
文章代碼(AID): #177BchaO (ASM)