<?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=51334&amp;view=findpost&amp;p=346929</guid>
        <pubDate>Tue, 27 Apr 2004 07:34:54 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346929</link>
        <description><![CDATA[potor: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Только что-то хреново, посылаю ноль на все три адреса, а лампочки горят... <br>
</div></div><br>
схему подключения и кусок проги<br>
<br>
<a class='tag-url' href='http://www.rs232.ru/docs/lpt/doc007.html' target='_blank'>здесь, что касается DOS и Win9x</a><br>
<br>
<a class='tag-url' href='http://www.rs232.ru/doc002.html' target='_blank'>Здесь под Windows</a>]]></description>
        <author>potor</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346905</guid>
        <pubDate>Tue, 27 Apr 2004 07:03:27 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346905</link>
        <description><![CDATA[Гость favst: Стандартные это 278, 378, 3BC? А как определить, какой из них использовать? Эта прога писалась под win98, под 2000 я юзал WinIo<br>
<a class='tag-url' href='http://web.tsinet.ru:1080/~olly/WinIo.rar' target='_blank'>WinIo</a><br>
Только что-то хреново, посылаю ноль на все три адреса, а лампочки горят... Может, имеет значение, что куда заземлять (не успел проверить)? И как юзать через CreateFile?]]></description>
        <author>Гость favst</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346064</guid>
        <pubDate>Mon, 26 Apr 2004 07:53:21 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346064</link>
        <description><![CDATA[potor: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
И еще, как в 2000/xp получить доступ к LPT порту, в частности, узнать его адрес? Не считайте оффтопиком, это все из той же программы<br>
</div></div><br>
адреса у LPT стандартные<br>
дело в том, что при попытке выполнить команды IN и OUT из 3-го ринга, будет вызвано исключение, поэтому нужно работать через WinAPI (CreateFile, ReadFile и WriteFile)]]></description>
        <author>potor</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346009</guid>
        <pubDate>Mon, 26 Apr 2004 06:38:36 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=346009</link>
        <description><![CDATA[Гость favst: Ладно, под win2000 все компилится... Вопрос в том, почему не работает под win98. И еще, как в 2000/xp получить доступ к LPT порту, в частности, узнать его адрес? Не считайте оффтопиком, это все из той же программы.]]></description>
        <author>Гость favst</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341613</guid>
        <pubDate>Mon, 19 Apr 2004 23:10:30 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341613</link>
        <description><![CDATA[johnfound: Вот ето у меня компилиться без всяких проблем в Fresh. В FASM тоже должно быть так, только я изпользую stdcallEx.inc макросы для proc. Но с &quot;enter&quot; тоже должно работать. <br>
В програме есть глюки, но она вполне работает.<br>
Кстати, &quot;equ&quot; оператор имеет особое значение в FASM-е и лучше не изпользуйте его. В 99% от случаев, надо изпользовавть &quot;=&quot; а не &quot;equ&quot;.<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">&nbsp;</div><div class="code_line">format pe console</div><div class="code_line">&nbsp;</div><div class="code_line">entry lEntry</div><div class="code_line">&nbsp;</div><div class="code_line">include &#39;%finc%\win32\win32a.inc&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.data&#39; data readable writeable</div><div class="code_line">&nbsp;&nbsp;hInput dd ?</div><div class="code_line">&nbsp;&nbsp;hOutput dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;dwInputLength dd ?</div><div class="code_line">&nbsp;&nbsp;dwOutputLength dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sCommand rb 0FFh</div><div class="code_line">&nbsp;&nbsp;dwCommandLength dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sPrompt db &#39;command&#62;&#39;</div><div class="code_line">&nbsp;&nbsp;PROMPT_LENGTH = 08h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sOnFirst db &#39;1+&#39;</div><div class="code_line">&nbsp;&nbsp;sOnSecond db &#39;2+&#39;</div><div class="code_line">&nbsp;&nbsp;sOffFirst db &#39;1-&#39;</div><div class="code_line">&nbsp;&nbsp;sOffSecond db &#39;2-&#39;</div><div class="code_line">&nbsp;&nbsp;sQuit db &#39;quit&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;ON_FIRST_LENGTH = 02h</div><div class="code_line">&nbsp;&nbsp;ON_SECOND_LENGTH = 02h</div><div class="code_line">&nbsp;&nbsp;OFF_FIRST_LENGTH = 02h</div><div class="code_line">&nbsp;&nbsp;OFF_SECOND_LENGTH = 02h</div><div class="code_line">&nbsp;&nbsp;QUIT_LENGTH = 04h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sUnknownCommand db &#39;Error: Unknown command&#39;, 13, 10</div><div class="code_line">&nbsp;&nbsp;UNKNOWN_COMMAND_LENGTH = 18h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;ON_FIRST_TIME = 3000</div><div class="code_line">&nbsp;&nbsp;ON_SECOND_TIME = 3000</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TIME_SINGLE = 00h</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.code&#39; code readable executable</div><div class="code_line">&nbsp;&nbsp;lEntry:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke GetStdHandle, STD_OUTPUT_HANDLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov [hOutput], eax</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke GetStdHandle, STD_INPUT_HANDLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov [hInput], eax</div><div class="code_line">&nbsp;&nbsp;lCommandCycleBegin:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke WriteConsole, [hOutput], sPrompt, PROMPT_LENGTH, dwOutputLength, NULL</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke ReadConsole, [hInput], sCommand, 0FFh, dwCommandLength, NULL</div><div class="code_line">&nbsp;;compare command</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov ebx, [dwCommandLength]</div><div class="code_line">&nbsp;&nbsp; &nbsp;sub ebx, 02h</div><div class="code_line">&nbsp;;&#39;onfirst&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, ON_FIRST_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOnFirst, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;;if &#39;onfirst&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OnFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke timeSetEvent, ON_FIRST_TIME, 00h, OffFirst, 00h, TIME_SINGLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;;&#39;onsecond&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, ON_SECOND_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOnSecond, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;;if &#39;onsecond&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OnSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;;&#39;offfirst&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, OFF_FIRST_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOffFirst, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;;if &#39;offfirst&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OffFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;;&#39;offsecond&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, OFF_SECOND_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOffSecond, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;;if &#39;offsecond&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OffSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;;&#39;quit&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, QUIT_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sQuit, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;;if &#39;quit&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleEnd</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke WriteConsole, [hOutput], sUnknownCommand, UNKNOWN_COMMAND_LENGTH, dwOutputLength, NULL</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;lCommandCycleEnd:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke ExitProcess, 00h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc CmpStr, lpsStr1, lpsStr2, dwLength</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;push ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;push ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;push esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;push edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov esi, [lpsStr1]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov edi, [lpsStr2]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov ecx, [dwLength]</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov al, byte [esi]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov bl, byte [edi]</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp al, bl</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne lNotEqual</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;loop @b</div><div class="code_line">&nbsp;&nbsp;lEqual:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp @f</div><div class="code_line">&nbsp;&nbsp;lNotEqual:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax, FALSE</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OnFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;or al, 10000000b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;&nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OnSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;or al, 01000000b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;&nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OffFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;and al, 01111111b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;&nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OffSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;and al, 10111111b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;&nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.idata&#39; import data readable</div><div class="code_line">&nbsp;&nbsp;library kernel32, &#39;kerneL32.dll&#39;, &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;user32, &#39;user32.dll&#39;, &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;winmm, &#39;WINMM.DLL&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;include &#39;%finc%\win32\apia\kernel32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%finc%\win32\apia\user32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%finc%\win32\apia\winmm.inc&#39;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>johnfound</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341482</guid>
        <pubDate>Mon, 19 Apr 2004 18:41:47 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341482</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Favst</strong>, 19.04.04, 17:24<br>
Undefined symbol это ON_FIRST_TIME. Это у меня константа такая.</div></div>Ни фига, он не на неё ругается (да и убирал я её).]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341374</guid>
        <pubDate>Mon, 19 Apr 2004 15:02:18 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341374</link>
        <description><![CDATA[johnfound: Попробуй так:<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">&nbsp;</div><div class="code_line">section &#39;.idata&#39; import data readable</div><div class="code_line">&nbsp;&nbsp;library &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">&nbsp;&nbsp; &nbsp;kernel32, &#39;kerneL32.dll&#39;, &nbsp;\</div><div class="code_line">&nbsp;&nbsp; &nbsp;user32, &#39;user32.dll&#39;, &nbsp; &nbsp; &nbsp;\</div><div class="code_line">&nbsp;&nbsp; &nbsp;winmm, &#39;WINMM.DLL&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\kernel32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\user32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\winmm.inc&#39;</div></ol></div></div></div></div><br>
<br>
Ето кажеться связанно с форматом import секции. В начале должны быть описание библиотек а потом таблицы функции.<br>
<br>
Всего доброго.]]></description>
        <author>johnfound</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341254</guid>
        <pubDate>Mon, 19 Apr 2004 12:24:03 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=341254</link>
        <description><![CDATA[Favst: 2 Jin X.<br>
  Undefined symbol это ON_FIRST_TIME. Это у меня константа такая.<br>
2 500mhz<br>
  Все равно не работает. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='8' style='font-size:8pt;'><strong class='tag-b'>Добавлено в <time class="tag-mergetime" datetime="2004-04-19T12:28:48+00:00">19.04.04, 12:28</time></strong>:</span></span><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">&nbsp;</div><div class="code_line">format pe console</div><div class="code_line">&nbsp;</div><div class="code_line">entry lEntry</div><div class="code_line">&nbsp;</div><div class="code_line">include &#39;%include%\win32a.inc&#39;</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.data&#39; data readable writeable</div><div class="code_line">&nbsp;&nbsp;hInput dd ?</div><div class="code_line">&nbsp;&nbsp;hOutput dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;dwInputLength dd ?</div><div class="code_line">&nbsp;&nbsp;dwOutputLength dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sCommand rb 0FFh</div><div class="code_line">&nbsp;&nbsp;dwCommandLength dd ?</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sPrompt db &#39;command&#62;&#39;</div><div class="code_line">&nbsp;&nbsp;PROMPT_LENGTH equ 08h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sOnFirst db &#39;1+&#39;</div><div class="code_line">&nbsp;&nbsp;sOnSecond db &#39;2+&#39;</div><div class="code_line">&nbsp;&nbsp;sOffFirst db &#39;1-&#39;</div><div class="code_line">&nbsp;&nbsp;sOffSecond db &#39;2-&#39;</div><div class="code_line">&nbsp;&nbsp;sQuit db &#39;quit&#39;</div><div class="code_line">&nbsp;&nbsp;ON_FIRST_LENGTH equ 02h</div><div class="code_line">&nbsp;&nbsp;ON_SECOND_LENGTH equ 02h</div><div class="code_line">&nbsp;&nbsp;OFF_FIRST_LENGTH equ 02h</div><div class="code_line">&nbsp;&nbsp;OFF_SECOND_LENGTH equ 02h</div><div class="code_line">&nbsp;&nbsp;QUIT_LENGTH equ 04h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;sUnknownCommand db &#39;Error: Unknown command&#39;, 13, 10</div><div class="code_line">&nbsp;&nbsp;UNKNOWN_COMMAND_LENGTH equ 18h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;ON_FIRST_TIME equ 3000</div><div class="code_line">&nbsp;&nbsp;ON_SECOND_TIME equ 3000</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TIME_SINGLE equ 00h</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.code&#39; code readable executable</div><div class="code_line">&nbsp;&nbsp;lEntry:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke GetStdHandle, STD_OUTPUT_HANDLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov [hOutput], eax</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke GetStdHandle, STD_INPUT_HANDLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov [hInput], eax</div><div class="code_line">&nbsp;&nbsp;lCommandCycleBegin:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke WriteConsole, [hOutput], sPrompt, PROMPT_LENGTH, dwOutputLength, NULL</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke ReadConsole, [hInput], sCommand, 0FFh, dwCommandLength, NULL</div><div class="code_line">&nbsp;&nbsp;;compare command</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov ebx, [dwCommandLength]</div><div class="code_line">&nbsp;&nbsp; &nbsp;sub ebx, 02h</div><div class="code_line">&nbsp;&nbsp;;&#39;onfirst&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, ON_FIRST_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOnFirst, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp;;if &#39;onfirst&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OnFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke timeSetEvent, ON_FIRST_TIME, 00h, OffFirst, 00h, TIME_SINGLE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp;;&#39;onsecond&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, ON_SECOND_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOnSecond, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp;;if &#39;onsecond&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OnSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp;;&#39;offfirst&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, OFF_FIRST_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOffFirst, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp;;if &#39;offfirst&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OffFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp;;&#39;offsecond&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, OFF_SECOND_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sOffSecond, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp;;if &#39;offsecond&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;call OffSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp;;&#39;quit&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp ebx, QUIT_LENGTH</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp; &nbsp;stdcall CmpStr, sCommand, sQuit, ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne @f</div><div class="code_line">&nbsp;&nbsp;;if &#39;quit&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleEnd</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke WriteConsole, [hOutput], sUnknownCommand, UNKNOWN_COMMAND_LENGTH, dwOutputLength, NULL</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp lCommandCycleBegin</div><div class="code_line">&nbsp;&nbsp;lCommandCycleEnd:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke ExitProcess, 00h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc CmpStr, lpsStr1, lpsStr2, dwLength</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter</div><div class="code_line">&nbsp;&nbsp; &nbsp;push ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;push ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;push esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;push edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov esi, [lpsStr1]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov edi, [lpsStr2]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov ecx, [dwLength]</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov al, byte [esi]</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov bl, byte [edi]</div><div class="code_line">&nbsp;&nbsp; &nbsp;cmp al, bl</div><div class="code_line">&nbsp;&nbsp; &nbsp;jne lNotEqual</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;loop @b</div><div class="code_line">&nbsp;&nbsp;lEqual:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax, TRUE</div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp @f</div><div class="code_line">&nbsp;&nbsp;lNotEqual:</div><div class="code_line">&nbsp;&nbsp; &nbsp;mov eax, FALSE</div><div class="code_line">&nbsp;&nbsp;@@:</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop ebx</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop esi</div><div class="code_line">&nbsp;&nbsp; &nbsp;pop edi</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OnFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;or al, 10000000b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OnSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;or al, 01000000b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OffFirst</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;and al, 01111111b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;proc OffSecond</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;mov dx, 378h</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;in al, dx</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;and al, 10111111b</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out dx, al</div><div class="code_line">&nbsp;&nbsp; &nbsp;return</div><div class="code_line">&nbsp;</div><div class="code_line">section &#39;.idata&#39; import data readable</div><div class="code_line">&nbsp;&nbsp;library kernel32, &#39;kerneL32.dll&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\kernel32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;library user32, &#39;user32.dll&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\user32.inc&#39;</div><div class="code_line">&nbsp;&nbsp;library winmm, &#39;WINMM.DLL&#39;</div><div class="code_line">&nbsp;&nbsp;include &#39;%include%\apia\winmm.inc&#39;</div></ol></div></div></div></div><br>
<br>
winmm.inc - от 500mhz]]></description>
        <author>Favst</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=339973</guid>
        <pubDate>Fri, 16 Apr 2004 20:41:38 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=339973</link>
        <description><![CDATA[[500mhz]: все работает<br>
на тебе winmm.inc длдя фасма (сам делал)<br>
для импорта сделай к примеру файлик api.inc<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
section &#39;.idata&#39; import data readable<br>
library kernel32,&#39;KERNEL32.DLL&#39;,&#092;<br>
	crtdll,&#39;crtdll.dll&#39;,&#092;<br>
	USER32,&#39;user32.dll&#39;,&#092;<br>
	gdi32,&#39;gdi32.dll&#39;,&#092;<br>
	comctl32,&#39;comctl32.dll&#39;,&#092;<br>
	comdlg32,&#39;comdlg32.dll&#39;,&#092;<br>
	shell32,&#39;shell32.dll&#39;,&#092;<br>
	wsock32,&#39;wsock32.dll&#39;,&#092;<br>
	ddraw,&#39;ddraw.dll&#39;,&#092;<br>
	mapi,&#39;mapi32.dll&#39;,&#092;<br>
	opengl,&#39;opengl32.dll&#39;,&#092;<br>
	glu,&#39;glu32.dll&#39;,&#092;<br>
	advapi32,&#39;advapi32&#39;,&#092;<br>
	bass,&#39;bass.dll&#39;,&#092;<br>
	sdl,&#39;sdl.dll&#39;,&#092;<br>
	winmm,&#39;winmm.dll&#39;<br>
<br>
include &#39;%fasminc%/apia/kernel32.inc&#39;<br>
include &#39;%fasminc%/apia/advapi32.inc&#39;<br>
include &#39;%fasminc%/apia/user32.inc&#39;<br>
include &#39;%fasminc%/apia/gdi32.inc&#39;<br>
include &#39;%fasminc%/apia/comctl32.inc&#39;<br>
include &#39;%fasminc%/apia/comdlg32.inc&#39;<br>
include &#39;%fasminc%/apia/shell32.inc&#39;<br>
include &#39;%fasminc%/apia/wsock32.inc&#39;<br>
include &#39;%fasminc%/apia/crtdll.inc&#39;<br>
include &#39;%fasminc%/apia/ddraw.inc&#39;<br>
include &#39;%fasminc%/apia/mapi.inc&#39;<br>
include &#39;%fasminc%/apia/opengl.inc&#39;<br>
include &#39;%fasminc%/apia/glu.inc&#39;<br>
include &#39;%fasminc%/apia/bass.inc&#39;<br>
include &#39;%fasminc%/apia/sdl.inc&#39;<br>
include &#39;%fasminc%/apia/winmm.inc&#39;<br>
</div></div><br>
<br>
исходник будет так выглядеть<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
format PE GUI<br>
entry start<br>
include &#39;%fasminc%&#092;win32a.inc&#39;<br>
section &#39;.code&#39; code readable executable<br>
start:<br>
      тут наш всякий код<br>
<br>
include &#39;api.inc&#39;</div></div><br>
а тут автоматом импорт сгенерится без всякого гемороя]]></description>
        <author>[500mhz]</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338423</guid>
        <pubDate>Wed, 14 Apr 2004 16:58:06 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338423</link>
        <description><![CDATA[Jin X: Давай всю прогу (или напиши другую, с более безобидной функцией) и кинь сюда.<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">&nbsp;&nbsp;invoke timeSetEvent, ON_FIRST_TIME, 00h, OffFirst, 00h, 1</div><div class="code_line">macro/stdcall.inc [50] invoke [2]:</div><div class="code_line">&nbsp;&nbsp; &nbsp; stdcall [proc],arg</div><div class="code_line">macro/stdcall.inc [43] stdcall [1]:</div><div class="code_line">&nbsp;&nbsp; &nbsp;pushd arg</div><div class="code_line">error: undefined symbol.</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338344</guid>
        <pubDate>Wed, 14 Apr 2004 14:47:39 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338344</link>
        <description><![CDATA[Favst: Нет, дело не в этом. Я же говорю, так со всеми длл-ками. На фасме твой вариант все равно не работает.]]></description>
        <author>Favst</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338251</guid>
        <pubDate>Wed, 14 Apr 2004 13:08:25 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338251</link>
        <description><![CDATA[Bjarne Stroustrup: Скорее всего у тебя ошибка в функции OffFirst. <br>
Вот это работает на MASM&#39;e:<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">&nbsp;</div><div class="code_line">OffFirst proc arg1 :DWORD, &nbsp;arg2:DWORD, arg3 :DWORD, arg4 :DWORD, arg5 :DWORD </div><div class="code_line">&nbsp;&nbsp; &nbsp;jmp N</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Msg db &quot;Hello from OffFirst!&quot;, 0</div><div class="code_line">&nbsp;&nbsp; &nbsp;N:</div><div class="code_line">&nbsp;&nbsp; &nbsp;invoke MessageBox, 0, ADDR Msg, ADDR Msg, MB_OK</div><div class="code_line">&nbsp;&nbsp; &nbsp;ret 20</div><div class="code_line">OffFirst endp</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">...</div><div class="code_line">invoke timeSetEvent, 3000, 00h, OffFirst, 00h, TIME_PERIODIC</div></ol></div></div></div></div><br>
<br>
P.S. OffFirst у меня stdcall]]></description>
        <author>Bjarne Stroustrup</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338066</guid>
        <pubDate>Wed, 14 Apr 2004 09:55:02 +0000</pubDate>
        <title>fasm &amp;amp; dll</title>
        <link>https://forum.sources.ru/index.php?showtopic=51334&amp;view=findpost&amp;p=338066</link>
        <description><![CDATA[Guest: Я надеюсь, есть знатоки fasm&#39;a...<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">&nbsp;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;invoke timeSetEvent, ON_FIRST_TIME, 00h, OffFirst, 00h, 1</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;section &#39;.idata&#39; import data readable</div><div class="code_line">&nbsp;&nbsp; &nbsp;library kernel32, &#39;kernel32.dll&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;include &#39;%include%\apia\kernel32.inc&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;library user32, &#39;user32.dll&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;include &#39;%include%\apia\user32.inc&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;library winmm, &#39;winmm.dll&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;import winmm, timeSetEvent, &#39;timeSetEvent&#39;</div></ol></div></div></div></div><br>
При выполнении прога вылетает:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Программа FAU01C вызвала сбой при обращении к странице памяти <br>
в модуле &lt;нет данных&gt; по адресу 0000:000030e5.<br>
</div></div><br>
И так с любой длл-кой, кроме kernel32.inc user32.inc gdi32.inc comctl32.inc comdlg32.inc shell32.inc wsock32.inc...<br>
<br>
Что делать?]]></description>
        <author>Guest</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	