<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9444&amp;view=findpost&amp;p=91750</guid>
        <pubDate>Mon, 14 Apr 2003 11:05:02 +0000</pubDate>
        <title>Вычисление синуса</title>
        <link>https://forum.sources.ru/index.php?showtopic=9444&amp;view=findpost&amp;p=91750</link>
        <description><![CDATA[iz: табличкой воспльзоваться <br>зы<br> так чтобы понятно было... значит так.<br><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;br&#62;TITLE &nbsp;Sine of an Angle (EX59.ASM)&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PAGE &nbsp; &nbsp; &nbsp;,132&#60;br&#62;DATA &nbsp; &nbsp; &nbsp; &nbsp;SEGMENT &nbsp; PARA &#39;DATA&#39;&#60;br&#62;SINES &nbsp;DW &nbsp;0,175,349,523,698,872 &nbsp; &nbsp; ;0-5&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;1045,1219,1392,1564,1736 &nbsp;;6-10&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;1908,2079,2250,2419,2588 &nbsp;;11-15&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;2756,2924,3090,3256,3420 &nbsp;;16-20&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;3584,3746,3907,4067,4226 &nbsp;;21-25&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;4384,4540,4695,4848,5000 &nbsp;;26-30&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;5150,5299,5446,5592,5736 &nbsp;;31-35&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;5878,6018,6157,6293,6428 &nbsp;;36-40&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;6561,6691,6820,6947,7071 &nbsp;;41-45&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;7193,7313,7431,7547,7660 &nbsp;;46-50&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;7771,7880,7986,8090,8191 &nbsp;;51-55&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;8290,8387,8480,8572,8660 &nbsp;;56-60&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;8746,8829,8910,8988,9063 &nbsp;;61-65&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;9135,9205,9272,9336,9397 &nbsp;;66-70&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;9455,9511,9563,9613,9659 &nbsp;;71-75&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;9703,9744,9781,9816,9848 &nbsp;;76-80&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;9877,9903,9926,9945,9962 &nbsp;;81-85&#60;br&#62; &nbsp; &nbsp; &nbsp; DW &nbsp;9976,9986,9994,9998,10000 ;86-90&#60;br&#62;DATA &nbsp; &nbsp; &nbsp;ENDS&#60;br&#62;OUR_CODE &nbsp;SEGMENT &nbsp; PARA &#39;CODE&#39;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;PUBLIC &nbsp; &nbsp;FIND_SINE&#60;br&#62;FIND_SINE PROC &nbsp; &nbsp; &nbsp;FAR&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ASSUME &nbsp; &nbsp;CS:OUR_CODE,DS:DATA&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;PUSH &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Save the caller&#39;s registers&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;PUSH &nbsp; &nbsp; &nbsp;AX&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;PUSH &nbsp; &nbsp; &nbsp;CX&#60;br&#62;;&#60;br&#62;; &nbsp;Initialize the data segment address.&#60;br&#62;;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;MOV &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BX,DATA&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;MOV &nbsp; &nbsp; &nbsp; DS,BX&#60;br&#62;;&#60;br&#62;; &nbsp;This is the look-up procedure.&#60;br&#62;;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;SUB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CX,CX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Initialize sign to 0&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;CMP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX,181 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Angle &#60; 181 degrees?&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;JB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SIN_POS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Yes. &nbsp;Continue with sign = 0&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;MOV &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CX,8000H &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; No. &nbsp;Set sign = 1&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;SUB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX,180 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; &nbsp;and subtract 180 from angle&#60;br&#62;SIN_POS: &nbsp;CMP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX,91 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Angle &#60; 91 degrees?&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;JB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GET_SIN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Yes. &nbsp;Go look up sine&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;NEG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; No. &nbsp;Subtract angle from 180&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;ADD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX,180&#60;br&#62;GET_SIN: &nbsp;MOV &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BX,AX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Make angle a word index&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;SHL &nbsp; &nbsp; &nbsp; BX,1&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;MOV &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BX,SINES[BX] &nbsp; &nbsp; ; and look up the sine value&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;OR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BX,CX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Combine sine with sign bit&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;POP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CX&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;POP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AX&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;POP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DS&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp;RET &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; and exit&#60;br&#62;FIND_SINE ENDP&#60;br&#62;OUR_CODE &nbsp;ENDS&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;END &nbsp; FIND_SINE&#60;br&#62;&#60;br&#62;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>------------------------------------------------<br><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;br&#62; SP&#62;&#62; Hаpод, помогите плз, как сделать ф-цию Cинyс на асме???&#60;br&#62; AK&#62; 1. Мат. Сопpоцессоp. 387 &#62;&#60;br&#62; AK&#62; 2. Составить вою таблицу значений и использовать ее&#60;br&#62;&#60;br&#62;=== Cut ===&#60;br&#62;&#60;br&#62;&#60;br&#62; &nbsp;Here&#39;s some &nbsp;explanation about the &nbsp;sinus table generator in the&#60;br&#62; &nbsp;ACE BBS advert.&#60;br&#62; &nbsp;The method used is a recursive sinus sythesis. &nbsp;It&#39;s possible to&#60;br&#62; &nbsp;compute all sinus values with only the two previous ones and the&#60;br&#62; &nbsp;value &nbsp;of &nbsp;cos(2у/N) , where &nbsp;n &nbsp;is the number of values for one&#60;br&#62; &nbsp;period.&#60;br&#62;&#60;br&#62; &nbsp;It&#39;s as follow:&#60;br&#62;&#60;br&#62; &nbsp;Sin(K)=2.Cos(2у/N).Sin(K-1)-Sin(K-2)&#60;br&#62;&#60;br&#62; &nbsp;or&#60;br&#62;&#60;br&#62; &nbsp;Cos(K)=2.Cos(2у/N).Cos(K-1)-Cos(K-2)&#60;br&#62;&#60;br&#62; &nbsp;The last one is easiest to use , because the two first values of&#60;br&#62; &nbsp;the cos table are 1 &amp; cos(2у/n) and with this two values you are&#60;br&#62; &nbsp;able to build all the following...&#60;br&#62;&#60;br&#62; &nbsp;Some simple code:&#60;br&#62;&#60;br&#62; &nbsp;the cos table has 1024 values &amp; ranges from -2^24 to 2^24&#60;br&#62;&#60;br&#62;&#60;br&#62; &nbsp;build_table: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lea &nbsp; &nbsp;DI,cos_table&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp;CX,1022&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp;EBX,cos_table[4]&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp; &nbsp;EAX,EBX&#60;br&#62; &nbsp;@@calc:&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;imul &nbsp; EBX&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;shrd &nbsp; EAX,EDX,23&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sub &nbsp; &nbsp;EAX,[DI-8]&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stosd&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loop &nbsp; @@calc&#60;br&#62;&#60;br&#62;&#60;br&#62; &nbsp;cos_table &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dd &nbsp; &nbsp; 16777216 &nbsp; &nbsp; ; 2^24&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dd &nbsp; &nbsp; 16776900 &nbsp; &nbsp; ; 2 ^24*cos(2у/1024)&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dd &nbsp; &nbsp; 1022 dup (?)&#60;br&#62;&#60;br&#62;&#60;br&#62;&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Enjoy &nbsp;KarL/NoooN&#60;br&#62;&#60;br&#62;=== Cut ===&#60;br&#62;&#60;br&#62;С бестовыми регардами , Kostya Volkov aka Reminder // [WW] [DVC]&#60;br&#62;&#60;br&#62;---&#60;br&#62; * Origin: chaos a.d. (2:4631/17)&#60;br&#62;&#60;br&#62;&#60;br&#62;</div></ol></div></div></div></div><br><br>туточки дополнительная инфа <br><a class='tag-url' href='http://www.enlight.ru/demo/faq/smth.phtml?query=alg_trig' target='_blank'>http://www.enlight.ru/demo/faq/smth.phtml?query=alg_trig</a>]]></description>
        <author>iz</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9444&amp;view=findpost&amp;p=91749</guid>
        <pubDate>Mon, 14 Apr 2003 10:41:31 +0000</pubDate>
        <title>Вычисление синуса</title>
        <link>https://forum.sources.ru/index.php?showtopic=9444&amp;view=findpost&amp;p=91749</link>
        <description><![CDATA[GrAnd: Собственно требуется быстрое вычисление sin(x) с точностью до двух знаков. Разложение в ряд Тейлора по степеням и вычисление через цепные дроби тангенса не подходит... (довольно медленно). x в радианах.]]></description>
        <author>GrAnd</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	