?? 00000002.htm
字號:
<?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>發信人: christ (圣人), 信區: Embedded <br />標 題: Re: 怎樣用匯編語言實現除法? <br />發信站: BBS 水木清華站 (Fri Jun 1 00:08:18 2001) <br /> <br />如果是定點數相除,如32位/16位,或是16位/16位,且結果左移15位的,算法如下。 <br />Word16 div_s(Word16 var1, Word16 var2) <br />{ <br /> Word32 i; <br /> Word32 L_var1 = var1<<15; <br /> Word32 L_var2 = var2<<15; <br /> for(i=0;i<16;i++) <br /> L_var1 = _subc(L_var1,L_var2); <br /> return L_var1&0x07fff; <br />} <br />Word16 div_l( Word32 L_num, Word16 den ) <br />{ <br /> Word32 i,a1; <br /> a1=(Word32)den<<15; <br /> for(i=0;i<15;i++) <br /> L_num=_subc(L_num,a1); <br /> return L_num&0x07fff; <br />} <br /> <br />_subc是所有DSP都有的移位相減指令,別的片子的可能名字不同,呵呵。都是16或15 <br />個周期可以完成的。 <br /> <br />如果是一個變量/常量,但不移位,就可以轉化成(變量*某常量)>>某個值,呵呵。 <br /> <br />【 在 lijikang (lijikang) 的大作中提到: 】 <br />∶<i> 我用的是TMS320F240,指令集中無除法。 </i><br /> <br /> <br />-- <br /> <br />※ 修改:·christ 於 Jun 1 00:12:44 修改本文·[FROM: 166.111.149.72] <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 166.111.149.72] <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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -