Forums

也许很傻,但我是新来的->在68hc12中相乘 assembly

开始于 抵押 2005年10月26日
大家好,

我有这个问题,我想将两个十进制数字相乘,即1.5
和2.5。问题是如何?这也是分裂的问题。能
我使用浮点表示?如果是这样,请给我一个
示例(装配体)

谢谢你




在05年10月26日8:57:33 P.M.东部夏令时间,
抵押 @ mort ...写道:

大家好,

我有这个问题,我想将两个十进制数字相乘,即1.5
和2.5。问题是如何?这也是分裂的问题。能
我使用浮点表示?如果是这样,请给我一个
示例(装配体)

谢谢你
==================================
sw浮点库的源通常随
c运行时库源。您可以dl imagecraft hc12编译器查看
所有libaray例程的源代码。 (如何做15/10和25/10
而不是弄乱浮点数?)


如果您只想将结果保留到小数点后一位
您可以尝试使用固定的十进制符号并抵消您的数字
的10倍。这使您可以使用整数算术。

例如,将2.5乘以1.5,分别表示为25和15;
将它们相乘得到375;将此结果调整回10
给出37。此最终值表示3.7的结果。你只有一个
小数位,结果将被截断而不是四舍五入(您可以
解决此问题),但所有操作均通过整数算术完成。加法和
减法不需要任何额外的调整。划分将要求
在另一个方向上的调整。 (您最好这样做
首先进行调整,这样您就不会失去精度。)

如果需要更高的精度,则应考虑使用浮动
点库。比我更好的人将需要帮助您。

您需要使用汇编语言吗?用它写可能会更容易
C,对其进行编译,然后将生成的汇编代码用于您的
应用。这将有助于理清您的调用结构
浮点库。

问候,
迈克尔·米尔威。

抵押写道:

> Hello everybody,
>
>我有这个问题,我想将两个十进制数字相乘,即1.5
>和2.5。问题是如何?这也是分裂的问题。能
>我使用浮点表示?如果是这样,请给我一个
> example(assembly)
>
> thank you >
>
> Yahoo! Groups Links >




---在68HC12 @ 68HC ...中,迈克尔·米尔威(Michael Milway)<mjm@u...> wrote:
>
>如果您只想将结果保留到小数点后一位
>您可以尝试使用固定的十进制符号并抵消您的数字
>的10倍。这使您可以使用整数算术。
>
>例如,将2.5乘以1.5,分别表示为25和15;
>将它们相乘得到375;将此结果调整回10
>给出37。此最终值表示3.7的结果。你只有一个


人们用定点数做这些乏味的事情的原因是
避免使用浮点数是因为处理浮点数
更难。需要更多的内存,更多的时间,但您可能宁愿使用
fp(如果您正在使用C并进行实验)。

希望迈克尔的例子不会太混乱,它说明了如何
使用整数乘法指​​令相乘。我不知道为什么
37.就像这样:

25 * 15 = 375

代数说,如果以上两个因子(25和15)都除以10,
然后将结果除以100(结果为3.75)。

组装中:
多t8:
ldaa#25
ldab#15


D寄存器现在为0x177(375)。


每个字节
定点变量。上半部分为整数,下半部分为整数
小数。这样,您就不必再分拆了。
例子:

两字节固定点中的2.5表示为$ 02。十六进制表示为$ 80。

1.5 in 2字节是$ 01. $ 80
现在编写一个简单的整数数学例程,该例程将2个字节乘以2个字节
并为您提供四字节的结果。
回答:

$ 3C000或固定符号:$ 3. $ C000

要轻松查看小数部分,$ C000 / $ 10000 = 0.75

所以3.75
乘法之后,高两个字节是整数结果;下层
二是分数。相同的乘法例程可以在任何
定点数学,您只需要调整结果中的dp位置即可。
简单的东西,现在您可以使用相同的方法扩展到更多字节,
性能成本。我避免瘟疫像瘟疫,仅仅是因为我的麻烦
对性能和尺寸有要求。
这种格式的数学也很容易输出给用户
一次将小数除以十,然后查看进位,然后将
整数部分乘以10并查看mod。四舍五入也很容易
偷看小数部分的最高有效位。
-标记 _____

发件人:68HC12 @ 68HC ... [mailto:68HC12 @ 68HC ...]代表
杰斐逊·史密斯
发送:2005年10月27日,星期四,10:13 AM
至:68HC12 @ 68HC ...
主题:[68HC12]回复:也许很傻但是我是新来的->在68hc12中相乘
部件
---在68HC12 @ 68HC ...中,迈克尔·米尔威(Michael Milway)<mjm@u...> wrote:
>
>如果您只想将结果保留到小数点后一位
>您可以尝试使用固定的十进制符号并抵消您的数字
>的10倍。这使您可以使用整数算术。
>
>例如,将2.5乘以1.5,分别表示为25和15;
>将它们相乘得到375;将此结果调整回10
>给出37。此最终值表示3.7的结果。你只有一个


人们用定点数做这些乏味的事情的原因是
避免使用浮点数是因为处理浮点数
更难。需要更多的内存,更多的时间,但您可能宁愿使用
fp(如果您正在使用C并进行实验)。

希望迈克尔的例子不会太混乱,它说明了如何
使用整数乘法指​​令相乘。我不知道为什么
37.就像这样:

25 * 15 = 375

代数说,如果以上两个因子(25和15)都除以10,
然后将结果除以100(结果为3.75)。

组装中:
多t8:
ldaa#25
ldab#15


D寄存器现在为0x177(375)。

赞助商链接 Freescale
<http://groups.yahoo.com/gads?t=ms&k=Freescale+semiconductor+inc&w1=Freescal
e +半导体+ inc&w2=Microcontrollers&w351+microprocessor&c=3&s&.sig
= V_3bINh1uoU0omvkq2D4rg> semiconductor inc

微控制器
<http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Freescale+semicondu
ctor + inc&w2=Microcontrollers&w351+microprocessor&c=3&s&.sig=y83_ysEic8
tfhlHU2MDXbQ>

8051
<http://groups.yahoo.com/gads?t=ms&k51+microprocessor&w1=Freescale+semico
电感+ inc&w2=Microcontrollers&w351+microprocessor&c=3&s&.sig=h1YyutU
Sg5ajWEW73Gwf7g> microprocessor
_____

> Terms of Service.
_____


-在68HC12 @ 68HC ...中,“马克·怀曼”<mark@m...> wrote:
>
>要进一步采取措施并保持效率,请使用两个
每个字节
>定点变量。使用大数作为整数, the lower for the
>小数。这样,您就不必再分拆了。
>

但是要当心意外的错误。如果我保持十分之一
位置,我知道我的准确度是1/10(0.1)。当我保留一个字节用于
分数,我的精度是1/256(约0.00390625)。有点
很难理解。