作者tea1116 (大钧)
看板ASM
标题[问题] 8051乘法以及除法问题
时间Mon Oct 22 22:54:32 2007
由於现在我做的案子有用到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
1F:→ ruemann:1,2 没辨法,就我的认而言。 10/22 23:10
2F:→ ruemann:ps.51的除法在8bits的mcu中算好用的 10/22 23:10
3F:→ MasterChang:请参考本版221 10/23 00:10
4F:→ tea1116:221大致上跟我成法部分问题一样 10/23 00:23
5F:→ tea1116:可是回文中还是没有两个高低位元化成一个十进码的方法吧? 10/23 00:24
6F:推 MasterChang:如果值控制在255内,low byte就是答案。不想做就用C吧 10/23 00:39
7F:→ MasterChang:直接参考Keil C产生的asm code不是更直接? 10/23 00:40