00000002.htm

来自「水木社区 embeded 版精华区 下载」· HTM 代码 · 共 54 行

HTM
54
字号
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>Re: 怎样用汇编语言实现除法?           turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人:&nbsp;christ&nbsp;(圣人),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;怎样用汇编语言实现除法?&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jun&nbsp;&nbsp;1&nbsp;00:08:18&nbsp;2001)&nbsp;<br />&nbsp;<br />如果是定点数相除,如32位/16位,或是16位/16位,且结果左移15位的,算法如下。&nbsp;<br />Word16&nbsp;div_s(Word16&nbsp;var1,&nbsp;Word16&nbsp;var2)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Word32&nbsp;i;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Word32&nbsp;L_var1&nbsp;=&nbsp;var1&lt;&lt;15;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Word32&nbsp;L_var2&nbsp;=&nbsp;var2&lt;&lt;15;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;16;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L_var1&nbsp;=&nbsp;_subc(L_var1,L_var2);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;L_var1&amp;0x07fff;&nbsp;&nbsp;&nbsp;<br />}&nbsp;<br />Word16&nbsp;div_l(&nbsp;Word32&nbsp;&nbsp;L_num,&nbsp;Word16&nbsp;den&nbsp;)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Word32&nbsp;i,a1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a1=(Word32)den&lt;&lt;15;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;15;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L_num=_subc(L_num,a1);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;L_num&amp;0x07fff;&nbsp;<br />}&nbsp;<br />&nbsp;<br />_subc是所有DSP都有的移位相减指令,别的片子的可能名字不同,呵呵。都是16或15&nbsp;<br />个周期可以完成的。&nbsp;<br />&nbsp;<br />如果是一个变量/常量,但不移位,就可以转化成(变量*某常量)&gt;&gt;某个值,呵呵。&nbsp;<br />&nbsp;<br />【&nbsp;在&nbsp;lijikang&nbsp;(lijikang)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;我用的是TMS320F240,指令集中无除法。&nbsp;</i><br />&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;修改:·christ&nbsp;於&nbsp;Jun&nbsp;&nbsp;1&nbsp;00:12:44&nbsp;修改本文·[FROM:&nbsp;&nbsp;166.111.149.72]&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.149.72]&nbsp;<br /><a href="00000001.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a><a href="00000003.htm">下一篇</a></h1></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?