<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Всё о создании игр</title>
		<link>https://gcup.ru/</link>
		<description>Форум игроделов</description>
		<lastBuildDate>Wed, 27 Mar 2024 10:11:19 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://gcup.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>FORTH</title>
			<link>https://gcup.ru/forum/67-92106-1</link>
			<pubDate>Wed, 27 Mar 2024 10:11:19 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Gudleifr&lt;br /&gt;Автор последнего сообщения: hi-aga&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>По нелепой ошибке FORTH на Форуме отнесен к скриптовым языкам. Ну, да ладно...&lt;br /&gt;Просто, как хозяин практически единственного русскоязычного FORTH-ресурса - &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=g9.txt&quot; title=&quot;http://www.gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=g9.txt&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;FOBOS&lt;/a&gt;, предлагаю здесь задавать FORTH-вопросы, буде таковые возникнут.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Gudleifr</dc:creator>
			<guid>https://gcup.ru/forum/67-92106-1</guid>
		</item>
		<item>
			<title>машинные коды ассемблера</title>
			<link>https://gcup.ru/forum/67-102142-1</link>
			<pubDate>Mon, 01 Feb 2021 21:30:02 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: C/C++&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: graveman&lt;br /&gt;Количество ответов: 25</description>
			<content:encoded>Решил реализовать дизассемблер. Пока толком не могу понять структуру команд. Ну логику не знаю. Поэтому приходится писать прям вот так.&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerHdNPRw&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerHdNPRw&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerHdNPRw&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerHdNPRw&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerHdNPRw&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerHdNPRw&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerHdNPRw&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerHdNPRw&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerHdNPRw&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/-14vOKjsES.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Но в этом коде уже какая то логика рассматривается.&lt;br /&gt;Дайте совет, может знаете чего, что не знаю я.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/67-102142-1</guid>
		</item>
		<item>
			<title>Небольшая защита от патча</title>
			<link>https://gcup.ru/forum/67-101893-1</link>
			<pubDate>Thu, 01 Aug 2019 10:08:47 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: drcrack&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Блин, искал в инете, но не нашел ничего о битхаке, лучше наверное называть это патчем. Такое впечатление, будто я сам придумал это название, хотя я его раньше вроде слышал. Я начал изучать заного реверс инжиниринг и ассемблер. Может быть в этот раз изучу так, чтобы ничего не забылось. Раньше изучал, но мало изучил. Я на одном форуме написал крэкми и его взломали с помощью патча. Я в общем начал думать как же можно определить, есть ли патч или нет. Подумал можно ли содержимое метки присвоить регистру и оказалось что можно.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;bithack:&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov ax, &amp;#91;bithack]&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Я написал небольшую программу, которая выводит сообщения в зависимости от случая. Что говорить почти не планировал, как получилось, так получилось. Удалил видео, чтобы не позориться.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;section .text&lt;br /&gt;&lt;br /&gt;; jmp 1b eb&lt;br /&gt;; je&amp;nbsp;&amp;nbsp;1b 74&lt;br /&gt;&lt;br /&gt;global _start&lt;br /&gt;&lt;br /&gt;_start:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 10&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp eax, 4&lt;br /&gt;bithack:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp error&lt;br /&gt;bit:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 0x4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ebx, 0x1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea ecx, &amp;#91;bith]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov edx, 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 0x80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp end&lt;br /&gt;done:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 0x4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ebx, 0x1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea ecx, &amp;#91;matches]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov edx, 9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 0x80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ax, &amp;#91;bithack] // загрузить данные метки. Если там jz done, то будет 1b 74&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp ax, 0x1b74&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jne bit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 0x4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ebx, 0x1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea ecx, &amp;#91;text]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov edx, 12&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 0x80&lt;br /&gt;end:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ebx, 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 0x80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;error:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov eax, 0x4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ebx, 0x1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea ecx, &amp;#91;errors]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov edx, 12&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int 0x80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp end&lt;br /&gt;&lt;br /&gt;section .data&lt;br /&gt;matches db &apos;matches&apos;, 0xa, 0x0&lt;br /&gt;text db &apos;no bithack&apos;, 0xa, 0x0&lt;br /&gt;bith db &apos;bithack&apos;, 0xa, 0x0&lt;br /&gt;errors db &apos;no matches&apos;, 0xa, 0x0&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (01 Августа 2019, 04:53)&lt;br /&gt;---------------------------------------------&lt;br /&gt;В итоге, если в&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;bithack:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp done&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp error&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;будет jz done, то выведется сообщение &quot;no matches&quot;, потому что сравнивается eax с 4, а сам eax равен 10. В коде написано &lt;b&gt;jmp done&lt;/b&gt;, это значит что в&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ax, &amp;#91;bithack] // загрузить данные метки. Если там jz done, то будет 1b 74&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;в ax попадёт не 1b 74, а 1b eb. И тогда программа будет знать, что был совершен патч. В таком случае можно вывести сообщение о успешности регистрации, но не делать регистрацию полноценной. Если программа знает что есть патч, то можно наворотить такое, что и не снилось. Правда в ida видны эти метки. Но если кода будет много, то это затруднит анализ. Ещё например можно в каждой функции программы проверять, есть ли патч, и в таком случае не делать то что надо, а делать это беспантово.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/67-101893-1</guid>
		</item>
		<item>
			<title>ОБРАБОТКА ПРЕРЫВАНИЯ ЗВУКОВОЙ КАРТЫ НА ВЕДОМОМ КОНТРОЛЛЕРЕ</title>
			<link>https://gcup.ru/forum/67-101846-1</link>
			<pubDate>Mon, 15 Jul 2019 02:21:22 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: IRQ10, WATCOM C/C++/ASM&lt;br /&gt;Автор темы: Gradius&lt;br /&gt;Автор последнего сообщения: Gradius&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Занимаюсь программированием на ПК(и не только) на низком уровне.&lt;br /&gt;Довольно часто приходится писать программы или кидать порты под DOS + DPMI.&lt;br /&gt;&lt;br /&gt;Многие сейчас усмехнутся, сказав, что ДОС умер...&lt;br /&gt;Может быть это и так, но DOS по крайней мере живёт на моём компьютере и в голове &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;:)&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Ближе к делу...&lt;br /&gt;&lt;br /&gt;Дано:&lt;br /&gt;&lt;br /&gt;1) Звуковая карта PCI Sound Blaster Live (насколько я понял, от саундбластера там осталось лишь одно название). Чип EMU10K.&lt;br /&gt;2) Для ДОС были найдены драйверы, которые эмулируют режим SB16 через эту карту (с помощью VCPI EMM386). Тоесть - это софтовая эмуляция SB16, а не Legacy, как это сделано, к примеру, на картах Cmedia CM8738.&lt;br /&gt;3) С помощью этих драйверов можно конфигурировать SB16: назначить порт, прерывание и номер DMA-канала.&lt;br /&gt;4) DOS-Extender DOS4G (коммерческая версия самого популярного расширителя ДОС: DOS4GW. Почему используется именно он - см. ниже).&lt;br /&gt;&lt;br /&gt;Надо:&lt;br /&gt;&lt;br /&gt;Реализовать непрерывное воспроизведение аудио-потока с помощью кольцевого буфера с подгрузкой новых данных по прерыванию, вызывающегося после проигрывания очередной половины буфера.&lt;br /&gt;&lt;br /&gt;Проблема:&lt;br /&gt;&lt;br /&gt;Когда эмуляция SB16 настроена на одно из прерываний ведомого контроллера прерываний (IRQ8 - IRQ15), к примеру - IRQ10, то обработчик прерывания НЕ вызывается!&lt;br /&gt;&lt;br /&gt;Если же настроить карту на одно из прерываний ведущего контроллера (IRQ0 - IRQ7), к примеру - IRQ5, то прерывание происходит и всё работает как надо.&lt;br /&gt;&lt;br /&gt;Данное поведение, честно говоря, ввело меня в ступор... Попробовал тоже самое сделать в реальном режиме на Turbo Pascal 7.0 - алгоритм работает на IRQ5 и на IRQ10 !!!&lt;br /&gt;&lt;br /&gt;Использую компилятор Open Watcom ASM/C/C++ последней официальной версии. Платформа - DOS32(sys dos4g).&lt;br /&gt;&lt;br /&gt;Поиск в интернете:&lt;br /&gt;&lt;br /&gt;... привел меня к товарищам по несчастью (несколько лет назад):&lt;br /&gt;&lt;br /&gt;1) &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://forum.codenet.ru/q8115/&quot; title=&quot;http://forum.codenet.ru/q8115/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://forum.codenet.ru/q8115/&lt;/a&gt; - точечное попадание&lt;br /&gt;&lt;br /&gt;2) &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://groups.google.com/forum/#!topic/comp.os.msdos.programmer/9cpAytOYydw&quot; title=&quot;https://groups.google.com/forum/#!topic/comp.os.msdos.programmer/9cpAytOYydw&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://groups.google.com/forum....ytOYydw&lt;/a&gt; - здесь аналогичная проблема: не могут обработать IRQ15 от жёсткого диска.&lt;br /&gt;&lt;br /&gt;Был найден сайтик с ценной информацией, на котором объяснены причины такого поведения: &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://rgmroman.narod.ru/Dos4g.htm&quot; title=&quot;http://rgmroman.narod.ru/Dos4g.htm&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://rgmroman.narod.ru/Dos4g.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt; &lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzq--&gt;&lt;br /&gt;DOS/4(W) has auto passup range for interrupts 08h-2Eh, i.e. if any of that interrupt occured in real mode, extender reflects it to protected mode.&lt;br /&gt;For interrupts occured in protected mode externder searches interrupt handler in protected and if none found pass interrupt down to real mode.&lt;br /&gt;&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;&lt;br /&gt;&lt;br /&gt;Если же вспомнить, что Master-контроллер прерываний по умолчанию настроен на INT 0x8..INT 0xF (IRQ0..IRQ7), а Slave-контроллер на INT 0x70..INT 0x77 (IRQ8..IRQ15),&lt;br /&gt;то становится очевидным, что DOS4GW не может работать с IRQ8..IRQ15, если просто установить обработчик прерывания стандартной C-функцией:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;_dos_setvect(0x72,SB16_New&amp;#41;; // INT 0x72 - IRQ10&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;или с помощью DPMI функции 0x205 (установка обработчика прерывания защищённого режима).&lt;br /&gt;&lt;br /&gt;Решение номер 1:&lt;br /&gt;&lt;br /&gt;Не совсем красивое с точки зрения технической эстетики.&lt;br /&gt;&lt;br /&gt;Решение возникло на основе знаний о том, что прерывание IRQ10 от звуковой карты всё-же обрабатывалось, если оно было установлено программой РЕАЛЬНОГО режима.&lt;br /&gt;&lt;br /&gt;На Turbo Pascal, а позже на Flat Assembler, был написан небольшой резидентик, устанавливающий обработчик прерывания в реальном режиме,&lt;br /&gt;сигнализирующий о том, что карта завершила чтение буфера:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;ORG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x100&lt;br /&gt;&lt;br /&gt;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int0x72&lt;br /&gt;&lt;br /&gt;IRQSlave:&lt;br /&gt;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax&lt;br /&gt;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;флаг SB_RM_FLAG&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE &amp;#91;cs:SBFlag],al ;узнаём порт (заполняется 32-битной программой, см. ниже&amp;#41;&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,WORD &amp;#91;cs:SBPort]&lt;br /&gt;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,0x00F&lt;br /&gt;in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,dx&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,0x20&lt;br /&gt;out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x20,al&lt;br /&gt;out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xA0,al&lt;br /&gt;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&lt;br /&gt;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax&lt;br /&gt;iret&lt;br /&gt;&lt;br /&gt;SBPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dw 0x220&lt;br /&gt;SBFlag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db 0&lt;br /&gt;&lt;br /&gt;int0x72:&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ah,0x25&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,0x72&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,IRQSlave&lt;br /&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;21h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;установка вектора прерывания в реальном режиме&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,int0x72&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;завершить работу программы, оставив её часть резидентной (от IRQSlave до int0x72&amp;#41;&lt;br /&gt;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;27h&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Как видно из программы, ничего особенного - обработчик просто подтверждает прерывание чтением из порта и&lt;br /&gt;записывает 1 в ячейку памяти со смещением SBFlag от начала кода обработчика (это байт со смещением 0x1C).&lt;br /&gt;&lt;br /&gt;Далее собственно, мы проверяем этот флаг из нашей программы защищённого режима в другом обработчике прерываний, с которым проблем не возникает.&lt;br /&gt;Это прерывания таймера IRQ0:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;volatile u8 *SB_RM_FLAG; //флаг завершения чтения данных от обработчика прерывания реального режима&lt;br /&gt;&lt;br /&gt;SB_RM_FLAG=(u8*&amp;#41;(((*(u16*&amp;#41;((0x72UL*4&amp;#41;+2&amp;#41;&amp;#41;&lt;&lt;4&amp;#41;+(*(u16*&amp;#41;(0x72UL*4&amp;#41;&amp;#41;&amp;#41;; //указатель указывает на физический адрес вектора прерывания INT 0x72 реального режима&lt;br /&gt;&lt;br /&gt;void interrupt far TimerNew(void&amp;#41;&lt;br /&gt;{&lt;br /&gt; if(SB_RM_FLAG&amp;#41;&amp;nbsp;&amp;nbsp;//если флаг установлен&lt;br /&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;SB_RM_FLAG=0;&amp;nbsp;&amp;nbsp;//то сбрасываем его&lt;br /&gt;&amp;nbsp;&amp;nbsp;MIXER(&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//подгружаем новые данные в свобродную половину буфера&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; out8(0x20,0x20&amp;#41;; //шлём EOI ведущему и ведомому контроллеру прерываний&lt;br /&gt; out8(0xA0,0x20&amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Решение блестяще работает как на ведущих, так и на ведомых прерываниях.&lt;br /&gt;&lt;br /&gt;Недостатки решения:&lt;br /&gt;&lt;br /&gt;1) Требуется постоянно запускать программу-резидент перед запуском основной программы&lt;br /&gt;&lt;br /&gt;2) Постоянный опрос флага по прерыванию таймера&lt;br /&gt;&lt;br /&gt;Решение номер 2:&lt;br /&gt;&lt;br /&gt;Избавляемся от программы-резидента.&lt;br /&gt;&lt;br /&gt;В стандарте DPMI (dpmispec1.0.pdf) есть интересная функция: 0x201 - Set Real Mode Interrupt Vector.&lt;br /&gt;Она требует на входе указания номера вектора прерывания, а также адрес обработчика реального режима в формате сегмент:смещение.&lt;br /&gt;&lt;br /&gt;Попутно понадобилась ещё одна функция - выделить блок памяти ниже 1 МБ (для размещения кода обработчика прерывания РЕАЛЬНОГО режима).&lt;br /&gt;Это DPMI функция 0x100 - Allocate DOS Memory Block.&lt;br /&gt;&lt;br /&gt;Обработчик прерывания был взят с программы-резидента и закодирован в C-массив констант:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;/*&lt;br /&gt;Real Mode Interrupt Handler Code for SoundBlaster16&lt;br /&gt;*/&lt;br /&gt;const u8 SB_New_RM_Handler&amp;#91;0x1D]=&lt;br /&gt;{&lt;br /&gt; 0x50,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax&lt;br /&gt; 0x52,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&lt;br /&gt; 0xB0,0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,1&lt;br /&gt; 0x2E,0xA2,0x1C,0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE &amp;#91;cs:SBFlag],al&lt;br /&gt; 0x2E,0x8B,0x16,0x1A,0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,WORD &amp;#91;cs:SBPort]&lt;br /&gt; 0x83,0xC2,0x0F,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,0x00F&lt;br /&gt; 0xEC,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,dx&lt;br /&gt; 0xB0,0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;al,0x20&lt;br /&gt; 0xE6,0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0x20,al&lt;br /&gt; 0xE6,0xA0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0xA0,al&lt;br /&gt; 0x5A,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&lt;br /&gt; 0x58,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax&lt;br /&gt; 0xCF,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//iret&lt;br /&gt; 0x20,0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//SBPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dw 0x220&lt;br /&gt; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//SBFlag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db 0&lt;br /&gt;};&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Но так как данный массив скорее всего будет размещён линковщиком по адресу выше первого мегабайта,&lt;br /&gt;то его необходимо скопировать в заранее выделенную область памяти с помощью вышеназванной функции 0x100.&lt;br /&gt;&lt;br /&gt;Целиком набор функций инжектора кода обработчика прерывания реального режима выглядит так:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;s8 DOS_Allocate(u16 paragraph,u16 *segment,u16 *selector&amp;#41; //выделяет память в адресном пространстве ниже 1 МБ&lt;br /&gt;{&lt;br /&gt; s8 r=0;&lt;br /&gt; u16 _seg;&lt;br /&gt; u16 _sel;&lt;br /&gt; _asm&lt;br /&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov ax,0x100&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov bx,paragraph&lt;br /&gt;&amp;nbsp;&amp;nbsp;int 0x31&lt;br /&gt;&amp;nbsp;&amp;nbsp;jnc OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov r,-1&lt;br /&gt;&amp;nbsp;&amp;nbsp;OK:&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov _seg,ax&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov _sel,dx&lt;br /&gt; }&lt;br /&gt; *segment=_seg;&lt;br /&gt; *selector=_sel;&lt;br /&gt; return r;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;s8 Set_RM_Handler(u8 i,u16 s,u16 o&amp;#41; //установка обработчика прерывания реального режима (по номеру прерывания и по адресу сегмент:смещение&amp;#41;&lt;br /&gt;{&lt;br /&gt; s8 r=0;&lt;br /&gt; _asm&lt;br /&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov ax,0x201&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov bl,i&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov cx,s&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov dx,o&lt;br /&gt;&amp;nbsp;&amp;nbsp;int 0x31&lt;br /&gt;&amp;nbsp;&amp;nbsp;jnc OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov r,-1&lt;br /&gt;&amp;nbsp;&amp;nbsp;OK:&lt;br /&gt; }&lt;br /&gt; return r;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;u16 SB_RM_SELECTOR; //селектор на участок памяти ниже 1 МБ (нужен для освобождения памяти по завершению работы программы&amp;#41;&lt;br /&gt;&lt;br /&gt;s8 SB_Set_RM_Handler(u8 i,u8 *handler,u16 size&amp;#41;&lt;br /&gt;{&lt;br /&gt; u16 segment; //сегмент участка памяти ниже 1 МБ, полученный функцияе 0x100&lt;br /&gt;&lt;br /&gt; if(DOS_Allocate((size+15&amp;#41;&gt;&gt;4,&amp;segment,&amp;SB_RM_SELECTOR&amp;#41;&amp;#41;return -1; //просим необходимое число параграфов&lt;br /&gt;&lt;br /&gt; u32 physical=((u32&amp;#41;segment&amp;#41;&lt;&lt;4; //вычисляем физический адрес (необходим для считывания флага, установленного обработчиком прерывания&amp;#41;&lt;br /&gt;&lt;br /&gt; SB_RM_FLAG=(u8*&amp;#41;(physical+0x1C&amp;#41;; //находим физический адрес нашего флага&lt;br /&gt;&lt;br /&gt; *(u16*&amp;#41;&amp;handler&amp;#91;0x1A]=SB_IO; //set SB I/O Port - записываем номер порта подтверждения прерывания (помогаем обработчику&amp;#41;&lt;br /&gt;&lt;br /&gt; memcpy((void*&amp;#41;physical,handler,size&amp;#41;; //копируем код обработчика в выделенную память ниже 1 МБ&lt;br /&gt;&lt;br /&gt; if(Set_RM_Handler(i,segment,0&amp;#41;&amp;#41;return -1; //устанавливаем обработчик прерывания РЕАЛЬНОГО режима из-под ЗАЩИЩЁННОГО.&amp;nbsp;&amp;nbsp;Смещение = 0.&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Вызов:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;SB_DisableIRQ(&amp;#41;; //запрещаем прерывание от SB16 на время установки нового обработчика&lt;br /&gt;&lt;br /&gt;if(SB_IRQ&lt;8&amp;#41; //настройка прерывания от ведущего контроллера(Master PIC, IRQ0..7&amp;#41;&lt;br /&gt;{&lt;br /&gt; if(SB_Set_RM_Handler(SB_IRQ+0x08,(u8*&amp;#41;SB_New_RM_Handler,sizeof(SB_New_RM_Handler&amp;#41;&amp;#41;&amp;#41;DPMI_Error(&amp;#41;;&lt;br /&gt;}&lt;br /&gt;else&amp;nbsp;&amp;nbsp;//настройка прерывания от ведомого контроллера(Slave PIC, IRQ 8..15&amp;#41;&lt;br /&gt;{&lt;br /&gt; if(SB_Set_RM_Handler(SB_IRQ-8+0x70,(u8*&amp;#41;SB_New_RM_Handler,sizeof(SB_New_RM_Handler&amp;#41;&amp;#41;&amp;#41;DPMI_Error(&amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SB_EnableIRQ(&amp;#41;; //разрешаем прерывания Sound Blaster 16&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Труды увенчались успехом!!! Программа работает с любым IRQ от любого контроллера - ведущего или ведомого.&lt;br /&gt;Проверял: в MS DOS 7.1, Free DOS, Win98, WinXP - всё работает.&lt;br /&gt;&lt;br /&gt;Следует участь одну важную деталь: в DOS4GW база всегда =0, поэтому 32-битное смещение(ближний указатель) равен физическому адресу.&lt;br /&gt;Поэтому мы просто можем обращатся к ячейкам памяти, умножив сегмент на 16 и сложив со смещением (для реального режима).&lt;br /&gt;В других расширителях ДОС база может быть ненулевой, поэтому код прийдётся скорректировать!&lt;br /&gt;&lt;br /&gt;Важное замечание:&lt;br /&gt;&lt;br /&gt;Здесь и далее опущены моменты освобождения памяти и восстановления прежних обработчиков, адреса/селекторы которых были заранее получены специальными функциями DPMI.&lt;br /&gt;Сделано это с целью упростить объём и изложение материала, сфокусировавшись на главном.&lt;br /&gt;&lt;br /&gt;И наконец - &lt;br /&gt;&lt;br /&gt;Решение 3.&lt;br /&gt;&lt;br /&gt;Обрабатываем всё в прерывании от звуковой карты! Освобождаем обработчик таймера от постоянного опроса флага.&lt;br /&gt;&lt;br /&gt;Полезная функция DPMI: 0x303 - Allocate Real Mode Callback Address.&lt;br /&gt;Функция даёт адрес реального режима сегмент:смещение - точка входа в РЕАЛЬНОМ режиме, в которой будет вызов функции ЗАЩИЩЁННОГО режима.&lt;br /&gt;Коллбэк позволяет вызвать процедуру ЗАЩИЩЁННОГО режима, если процессор находится РЕАЛЬНОМ (или V86) режиме!&lt;br /&gt;&lt;br /&gt;Объединив это с предыдущим решением, мы получим обработку прерывания в реальном режиме с заходом в функцию защищённого режима.&lt;br /&gt;&lt;br /&gt;Следует отметить, что в процедуре колбэка нам нужно будет восстановить виртуальные регистры (V86 mode) Flags, CS:IP обработчика реального режима.&lt;br /&gt;&lt;br /&gt;Обработчик коллбэка написан на Watcom Assembler:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;.CODE&lt;br /&gt;&lt;br /&gt;EXTRN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__GETDS:PROC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;это ваткомовский прикол, без него вызов функций внутри обработчика приводит к аварийному вылету программы&lt;br /&gt;EXTRN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserCallBack_:PROC&amp;nbsp;&amp;nbsp;;это пользовательская функция коллбэка&lt;br /&gt;&lt;br /&gt;PUBLIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SystemCallBack_&lt;br /&gt;&lt;br /&gt;SystemCallBack_:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pushad&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;ds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;es&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;fs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;gs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cld&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lodsw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;es:&amp;#91;edi+0x2A],ax ;IP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lodsw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;es:&amp;#91;edi+0x2C],ax ;CS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lodsw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;es:&amp;#91;edi+0x20],ax ;FLAGS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;&amp;nbsp;__GETDS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;ds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;es&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;&amp;nbsp;UserCallBack_&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;gs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;fs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;es&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;ds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popad&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iretd&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Отказ от написания обработчика на C/C++ вызван здесь тем, что компилятор C/C++ затирает регистры ds,es,esi,edi, используя их для своих нужд.&lt;br /&gt;А они нам нужны для получения виртуального контекста.&lt;br /&gt;Подробнее см. в спецификации DPMI (функция 0x303; передача и приём виртуального контекста регистров V86).&lt;br /&gt;&lt;br /&gt;Пользовательская функция коллбэка:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;void UserCallBack(void&amp;#41;&lt;br /&gt;{&lt;br /&gt; MIXER(&amp;#41;; //загружаем новые данные&lt;br /&gt;&lt;br /&gt; IO u8 ack=in8(SB_IO+0xF&amp;#41;; //подтверждаем прерывание&lt;br /&gt; &lt;br /&gt; out8(0x20,0x20&amp;#41;; //EOI для Master и Slave PIC&lt;br /&gt; out8(0xA0,0x20&amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Функция выдачи адреса коллбэка (РЕАЛЬНЫЙ режим сегмент:смещение) и установки его на обработчик прерывания РЕАЛЬНОГО режима:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;struct RMA //структура адреса реального режима&lt;br /&gt;{ &lt;br /&gt; u16 s; //сегмент&lt;br /&gt; u16 o; //смещение&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;RMA SB_RM_New;&lt;br /&gt;&lt;br /&gt;s8 Set_RM_HandlerCallBack(u8 i,void far *handler&amp;#41;&lt;br /&gt;{&lt;br /&gt; if(CallBack_Allocate(handler,&amp;SB_RM_New&amp;#41;&amp;#41;return -1; //выделяем адрес коллбэка RM, при вызове которого будет происходить вызов PM функции handler&lt;br /&gt; if(Set_RM_Handler(i,SB_RM_New&amp;#41;&amp;#41;return -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//устанавливаем этот коллбэк в качестве вектора для обработчика RM прерывания!&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Теперь установка прерываний выглядит так:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;SB_DisableIRQ(&amp;#41;; //запрещаем прерывания звуковой платы&lt;br /&gt;&lt;br /&gt;if(SB_IRQ&lt;8&amp;#41; //если IRQ от ведущего контроллера прерываний&lt;br /&gt;{&lt;br /&gt; if(Set_RM_HandlerCallBack(SB_IRQ+0x08,SystemCallBack&amp;#41;&amp;#41;DPMI_Error(&amp;#41;;&lt;br /&gt;}&lt;br /&gt;else //если IRQ от ведомого&lt;br /&gt;{&lt;br /&gt; if(Set_RM_HandlerCallBack(SB_IRQ-8+0x70,SystemCallBack&amp;#41;&amp;#41;DPMI_Error(&amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SB_EnableIRQ(&amp;#41;; //разрешаем прерывания SoundBlaster&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Функция выдачи адреса коллбэка на RM:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#pragma pack(1&amp;#41; //запрещаем выравнивание членов структуры, чтобы не было дырок&lt;br /&gt;struct RMI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//виртуальные регистры для RM V86 (контекст для реального обработчика прерывания&amp;#41;&lt;br /&gt;{ &lt;br /&gt; u32 EDI,ESI,EBP,ReservedByRMI,EBX,EDX,ECX,EAX;&lt;br /&gt; u16 flags,ES,DS,FS,GS,IP,CS,SP,SS;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;s8 CallBack_Allocate(void far *c,RMA *a&amp;#41; //32-битный указатель на SystemCallBack, получаем сегмент:смещения для вызова PM коллбэка в RM&lt;br /&gt;{&lt;br /&gt; union REGS r;&lt;br /&gt; struct SREGS sr;&lt;br /&gt; static RMI rmi;&lt;br /&gt;&lt;br /&gt; memset(&amp;sr,0,sizeof(sr&amp;#41;&amp;#41;;&lt;br /&gt; memset(&amp;rmi,0,sizeof(rmi&amp;#41;&amp;#41;; //здесь контекст виртуальных регистров (в обработчике коллбэка восстанавливаем Flags, CS, IP - см. выше&amp;#41;&lt;br /&gt;&lt;br /&gt; r.w.ax=0x303;&lt;br /&gt; sr.ds=FP_SEG(c&amp;#41;;&lt;br /&gt; r.x.esi=FP_OFF(c&amp;#41;;&lt;br /&gt; sr.es=FP_SEG(&amp;rmi&amp;#41;;&lt;br /&gt; r.x.edi=FP_OFF(&amp;rmi&amp;#41;;&lt;br /&gt; int386x(0x31,&amp;r,&amp;r,&amp;sr&amp;#41;;&lt;br /&gt;&lt;br /&gt; if(r.w.cflag&amp;#41;return -1;&lt;br /&gt;&lt;br /&gt; a-&gt;s=r.w.cx;&lt;br /&gt; a-&gt;o=r.w.dx;&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Функция установки обработчика прерывания RM (изменён формат передачи данных - через структуру):&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;s8 Set_RM_Handler(u8 i,RMA a&amp;#41;&lt;br /&gt;{&lt;br /&gt; s8 r=0;&lt;br /&gt; u16 s=a.s;&lt;br /&gt; u16 o=a.o;&lt;br /&gt; _asm&lt;br /&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov ax,0x201&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov bl,i&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov cx,s&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov dx,o&lt;br /&gt;&amp;nbsp;&amp;nbsp;int 0x31&lt;br /&gt;&amp;nbsp;&amp;nbsp;jnc OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;mov r,-1&lt;br /&gt;&amp;nbsp;&amp;nbsp;OK:&lt;br /&gt; }&lt;br /&gt; return r;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Решение успешно работает на ведущих и ведомых IRQ, проверял на: MS DOS 7.1, Free DOS, Win98, WinXP, эмуляторе DOSBox.&lt;br /&gt;&lt;br /&gt;Необходима КОММЕРЧЕСКАЯ версия ДОС-экстендера - DOS/4G.&lt;br /&gt;Так как некоммерческая версия НЕ поддерживает DPMI-функцию установки RM коллбэка(0x303) и имеет ограничение на максимально используемую память!&lt;br /&gt;&lt;br /&gt;Следует отметить, что данный приём оказался совместимым и с другими DOS-extender&apos;ами:&lt;br /&gt;&lt;br /&gt;1) causeway&lt;br /&gt;2) pmodew (для обработки прерываний он не использует V86, а переходит в настоящий RM)&lt;br /&gt;3) dos32&lt;br /&gt;&lt;br /&gt;И что самое интересное, они в СВЕЖИХ версиях - поддерживают обработку всех аппаратных прерываний (IRQ: ведущие и ведомые).&lt;br /&gt;&lt;br /&gt;И можно просто сделать:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;_dos_setvect(0x72,SB16_New&amp;#41;; // INT 0x72 - IRQ10&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;или с помощью DPMI функции 0x205 (установка обработчика прерывания PM).&lt;br /&gt;&lt;br /&gt;И оно будет работать, в отличие от DOS4G, DOS4GW.&lt;br /&gt;&lt;br /&gt;Так же следует отметить, что версии расширителей ДОС, входящие в состав Open Watcom - СТАРОЙ версии, поэтому описаный здесь трюк будет как нельзя кстати!&lt;br /&gt;&lt;br /&gt;Надеюсь, выложенная здесь информация будет кому-то полезной/интересной.&lt;br /&gt;&lt;br /&gt;Всем, кто дочитал - СПАСИБО! - за проявленный интерес! &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;:)&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Данный приём успешно работает в игре Gradius III Total Terror (порт для *DOS): &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/forum/28-101736-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://gcup.ru/forum/28-101736-1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ну и на последок, ссылка на FAQ по Watcom C/C++: &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://www.codenet.ru/progr/cpp/wfaq.php&quot; title=&quot;http://www.codenet.ru/progr/cpp/wfaq.php&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.codenet.ru/progr/cpp/wfaq.php&lt;/a&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Gradius</dc:creator>
			<guid>https://gcup.ru/forum/67-101846-1</guid>
		</item>
		<item>
			<title>фоновый цвет</title>
			<link>https://gcup.ru/forum/67-101417-1</link>
			<pubDate>Thu, 31 Jan 2019 02:59:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: fiorasyndra1&lt;br /&gt;Автор последнего сообщения: drcrack&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Добрый день&lt;br /&gt;Я только что закончил новый дизайн и у меня небольшая проблема. Я хочу цвет фона: 000; растет с содержанием и без фиксированной высоты.&lt;br /&gt;Я удаляю минимальную высоту: 500 пикселей; фон полностью исчезает.&lt;br /&gt;CODE&lt;br /&gt;1.body {&lt;br /&gt;2.background-color: #151515;&lt;br /&gt;3.font-family: averia_sans_librelight;&lt;br /&gt;3.color: #fff;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>fiorasyndra1</dc:creator>
			<guid>https://gcup.ru/forum/67-101417-1</guid>
		</item>
		<item>
			<title>[NASM] Hello World на ассемблер. Компановка с библиотекой Си</title>
			<link>https://gcup.ru/forum/67-100375-1</link>
			<pubDate>Thu, 10 May 2018 17:11:33 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Strekozlinski&lt;br /&gt;Автор последнего сообщения: Strekozlinski&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Доброго времени суток.&lt;br /&gt;Нужно написать программу Hello World на NASM windows x64.&lt;br /&gt;Делаю все по методичке (под спойлером) с той лишь разницей, что изменяю действия под х64.&lt;br /&gt;&lt;br /&gt;Запустил скрипт vcvars64.bat, переписал программу&lt;br /&gt;Ассемблирую файл &lt;b&gt;hello.asm командой: nasm -f win64 hello1.asm&lt;/b&gt;&lt;br /&gt;Компаную: &lt;b&gt;link /subsystem:console /entry:mystart hello1.obj msvcrt.lib&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Но после компановки мне выдает сообщение: неразрешенный символ &quot;printf&quot; и &quot;exit&quot;.&lt;br /&gt;Я так понял, исходя из методички, скомпоновав файл с msvcrt.lib можно импортировать символы printf и exit. Но у меня почему то не получается, хотя делаю все по инструкции. Кто подскажет, что я делаю не так и как мне использовать функции из системной библиотеки Си?&lt;br /&gt;&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerynZ57x&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerynZ57x&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerynZ57x&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerynZ57x&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerynZ57x&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerynZ57x&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerynZ57x&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerynZ57x&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerynZ57x&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;img src=&quot;http://www.cyberforum.ru/attachments/936096d1525971394&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Strekozlinski</dc:creator>
			<guid>https://gcup.ru/forum/67-100375-1</guid>
		</item>
		<item>
			<title>Техники</title>
			<link>https://gcup.ru/forum/67-82341-1</link>
			<pubDate>Thu, 28 Jul 2016 09:08:11 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: bodya_WM&lt;br /&gt;Автор последнего сообщения: bodya_WM&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Самое время добавлять в WGE2D поддержку шейдеров. Уже добавил поддержку техник, но слишком мало информации по HLSL.&lt;br /&gt;Может кто знает книги или статьи по HLSL?</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>bodya_WM</dc:creator>
			<guid>https://gcup.ru/forum/67-82341-1</guid>
		</item>
		<item>
			<title>Книга: Как написать компьютерную игру</title>
			<link>https://gcup.ru/forum/67-3259-1</link>
			<pubDate>Thu, 07 Jul 2016 16:17:32 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: на ассемблере для ПК&lt;br /&gt;Автор темы: nilrem&lt;br /&gt;Автор последнего сообщения: Gudleifr&lt;br /&gt;Количество ответов: 19</description>
			<content:encoded>Конечно, писать игры для ПК целиком на ассемблере в нынешнее время занятие неблагодарное, но попробовать все же интересно. Используя этот низкоуровневый язык программирования вы становитесь независимым от чужих разработок(типа ДиректХ, OpenGL). Компьютер оказывается полностью в вашей власти. &lt;br /&gt; Если у вас возникло подобное желание, если вы хотите почувствовать себя таким вот крутым гуру программирования (ведь игры на асме пишут только избранные) то вам поможет эта книга. &lt;p&gt; &lt;!--IMG1--&gt;&lt;img style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://www.gcup.ru/_fr/32/8912531.jpg&quot; align=&quot;&quot; /&gt;&lt;!--IMG1--&gt; &lt;p&gt; &lt;a class=&quot;link&quot; href=&quot;http://infanata.ifolder.ru/14048893&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Как написать компьютерную игру&lt;/a&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://rapidshare.com/files/281301161/PCGames.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Зеркало&lt;/a&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://www.onlinedisk.ru/file/220107/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Зеркало 2&lt;/a&gt; &lt;p&gt; В ней тесно переплетаются две темы. Основы программирования на Ассемблере, и собственно этапы создания игровой программы. Книга написана простым и понятным языком.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>nilrem</dc:creator>
			<guid>https://gcup.ru/forum/67-3259-1</guid>
		</item>
		<item>
			<title>Мультибитный процессор</title>
			<link>https://gcup.ru/forum/67-77565-1</link>
			<pubDate>Thu, 23 Jun 2016 02:43:33 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Minskii&lt;br /&gt;Автор последнего сообщения: Tymonr&lt;br /&gt;Количество ответов: 6</description>
			<content:encoded>Купил процессор для сервера.На заказ.&lt;br /&gt;Фишка в том что он понимает не двоичный код &lt;b&gt;&quot;0100101101&quot;&lt;/b&gt;&lt;br /&gt;А десятичисленный &lt;b&gt;&quot;1083926574&quot;&lt;/b&gt;.&lt;br /&gt;Так вот,мне надо написать язык программирования под него.Винду я уже под этот проц оптимизировал.А что дальше то?Башка не шарит уже.&lt;br /&gt;&lt;b&gt;&quot;1001000 1000101 1001100 1010000 100000 1001101 1000101 100000 1010000 1001100 1000101 1000001 1010011 1000101&quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;P.S. если кто-нибудь не понял,то &lt;b&gt;&quot;1001000 1000101 1001100 1010000 100000 1001101 1000101 100000 1010000 1001100 1000101 1000001 1010011 1000101&quot;&lt;/b&gt;&lt;br /&gt;это &lt;b&gt;&quot;HELP ME PLEASE&quot;&lt;/b&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Minskii</dc:creator>
			<guid>https://gcup.ru/forum/67-77565-1</guid>
		</item>
		<item>
			<title>программирование на машинных кодах</title>
			<link>https://gcup.ru/forum/67-46995-1</link>
			<pubDate>Thu, 28 Apr 2016 14:15:25 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: самый быстрый среди всех&lt;br /&gt;Автор темы: progerman&lt;br /&gt;Автор последнего сообщения: Gudleifr&lt;br /&gt;Количество ответов: 20</description>
			<content:encoded>Итак начнем я хочу поговорить,про: как понимать машинный код(МК),как на нем писать проги и чем его компилить,как на МК перейти в ринг 0 без АПИ,как делать код на МК без АПИ. Пока хватит.&lt;br /&gt;Понятие двоичного кода(личный опыт от меня):&lt;br /&gt;Двоичный код имеет два числа 0-фалсе и 1-труе.&lt;br /&gt;Числа в двоичном коде(ДК) идут следующим образом 00000000-0,00000001-1,00000010-2,00000011-3,00000100-4... пояснение-представим,что минимальное исло это 0,а максимальное 1 то 1=9 00000001=00000009,00000010=00000009+1=00000010.&lt;br /&gt;Представим в виде схемы лампочек:00000001-выключены все кроме последней,10001100-включены первая,пятая и шестая лампочки,в компе тоже самое,но там вместо ламп устройства.&lt;br /&gt;П.С: то про что я хотел бы поговорить я не все знаю так-что пишите чтото по этой теме и по тому про что я хучу говорить.&lt;br /&gt;Итак десятичный код- тут как обычно минимальное число 0 ,а максимальное -9.&lt;br /&gt;Продолжение следует(когда-то).</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>progerman</dc:creator>
			<guid>https://gcup.ru/forum/67-46995-1</guid>
		</item>
		<item>
			<title>А зачем вообще нужен АСМ?</title>
			<link>https://gcup.ru/forum/67-3029-1</link>
			<pubDate>Sat, 23 Jan 2016 21:23:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: сейчас&lt;br /&gt;Автор темы: Ho_Sung_Pak&lt;br /&gt;Автор последнего сообщения: progerman&lt;br /&gt;Количество ответов: 143</description>
			<content:encoded>Инетресно, зачем сейчас нужен АСМ, где он применяется, и применяют ли его вообще при создании игр на ПК?</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Ho_Sung_Pak</dc:creator>
			<guid>https://gcup.ru/forum/67-3029-1</guid>
		</item>
		<item>
			<title>Алгоритм</title>
			<link>https://gcup.ru/forum/67-41819-1</link>
			<pubDate>Sun, 26 Oct 2014 09:27:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Ramilyanamana&lt;br /&gt;Автор последнего сообщения: Ramilyanamana&lt;br /&gt;Количество ответов: 6</description>
			<content:encoded>Помогите пожалуйста составить алгоритм решения задачи: &lt;br /&gt; Для заданного целого числа найти сумму трех его старших цифр. &lt;br /&gt; Вроде бы легко. а ничего придумать не могу)</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Ramilyanamana</dc:creator>
			<guid>https://gcup.ru/forum/67-41819-1</guid>
		</item>
		<item>
			<title>[DOS][TASM]Рандом в диапазоне</title>
			<link>https://gcup.ru/forum/67-39290-1</link>
			<pubDate>Mon, 21 Jul 2014 17:27:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: от 1 до N&lt;br /&gt;Автор темы: Saitei&lt;br /&gt;Автор последнего сообщения: wcpt&lt;br /&gt;Количество ответов: 13</description>
			<content:encoded>Помогите пожалуйста. Уже второй день мозг мучаю, ничего не выходит. Хотелось бы получить db</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Saitei</dc:creator>
			<guid>https://gcup.ru/forum/67-39290-1</guid>
		</item>
		<item>
			<title>ООП на ассемблере</title>
			<link>https://gcup.ru/forum/67-39110-1</link>
			<pubDate>Mon, 05 May 2014 07:09:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Saitei&lt;br /&gt;Автор последнего сообщения: -l33t-h4xx-&lt;br /&gt;Количество ответов: 13</description>
			<content:encoded>Как это сделать? Допустим я хочу один раз описать &quot;шаблон&quot; и &quot;поведение&quot; объекта и потом создать N таких объектов. &lt;br /&gt; В голове летает идея по поводу использования структур, но что-то не могу всё собрать в &quot;единое целое&quot;. Помогите, пожалуйста! &lt;br /&gt; Я юзаю FASM</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Saitei</dc:creator>
			<guid>https://gcup.ru/forum/67-39110-1</guid>
		</item>
		<item>
			<title>Ожидание нажатия клавиши</title>
			<link>https://gcup.ru/forum/67-36905-1</link>
			<pubDate>Mon, 24 Mar 2014 13:48:57 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Deswing&lt;br /&gt;Автор последнего сообщения: Sock23&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Как такое сделать? Ну, например: если нажата стрелочка вверх, то вызвать такую-то ф-цию... Если вправо - такую... И т.п...&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (31.12.2013, 14:40)&lt;br /&gt;---------------------------------------------&lt;br /&gt;P.S. старенький TASM, но не суть важно</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Deswing</dc:creator>
			<guid>https://gcup.ru/forum/67-36905-1</guid>
		</item>
		<item>
			<title>Kolibri OS - исходный код</title>
			<link>https://gcup.ru/forum/67-34730-1</link>
			<pubDate>Thu, 21 Nov 2013 06:03:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Как работать с исходником Kolibri OS?&lt;br /&gt;Автор темы: timyr9801&lt;br /&gt;Автор последнего сообщения: Akyltist&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Всем привет. Как работать с исходником Kolibri OS?.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>timyr9801</dc:creator>
			<guid>https://gcup.ru/forum/67-34730-1</guid>
		</item>
		<item>
			<title>Уроки по Assembler</title>
			<link>https://gcup.ru/forum/67-34814-1</link>
			<pubDate>Tue, 03 Sep 2013 18:20:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: timyr9801&lt;br /&gt;Автор последнего сообщения: timyr9801&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Всем привет. Мне нужны уроки по Assembler для начинающих.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>timyr9801</dc:creator>
			<guid>https://gcup.ru/forum/67-34814-1</guid>
		</item>
		<item>
			<title>Hack сонника</title>
			<link>https://gcup.ru/forum/67-34749-1</link>
			<pubDate>Sat, 31 Aug 2013 11:06:48 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: GameLoper&lt;br /&gt;Автор последнего сообщения: ty31k&lt;br /&gt;Количество ответов: 14</description>
			<content:encoded>Исправляем баг в Sonic 1 &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerVDn2rT&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerVDn2rT&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVDn2rT&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVDn2rT&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerVDn2rT&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerVDn2rT&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerVDn2rT&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerVDn2rT&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerVDn2rT&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Здравствуйте сегодня мы будем исправлять баг с надписью Press Start Button,а точнее с её отсутствием. &lt;br /&gt; Для начала нам надо скачать &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;vladikcomper.narod.ru/download/S1HackingStudio_v20.7z&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;S1 Hacking Studio 2 &lt;br /&gt;&lt;br /&gt; она нам нужна для хаккинга игры, &lt;br /&gt;&lt;br /&gt; Потом заходим в программку и в улитах ищем Sonic1.asm открываем в нём ищем &lt;br /&gt;&lt;br /&gt; Субтрактиву Title screen &lt;br /&gt; а в ней уже ищем &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;lea ($FFFFD080&amp;#41;.w,a1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;moveq #0,d0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;move.w #7,d1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; Title_ClrObjRam2: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;move.l d0,(a1&amp;#41;+ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbf d1,Title_ClrObjRam2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;move.b #$E,($FFFFD040&amp;#41;.w ; load big Sonic object &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; на &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;lea ($FFFFD080&amp;#41;.w,a1 &lt;br /&gt; ; moveq #0,d0 &lt;br /&gt; ; move.w #7,d1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ;Title_ClrObjRam2: &lt;br /&gt; ; move.l d0,(a1&amp;#41;+ &lt;br /&gt; ; dbf d1,Title_ClrObjRam2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jsr DeleteObject2 ; clear object RAM to make room for the &quot;Press Start Button&quot; object &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;move.b #$E,($FFFFD040&amp;#41;.w ; load big Sonic object&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; &lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; ВОТ ДЕРЖИТЕ! &lt;br /&gt; переводил с сайта,не помню какого?</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>GameLoper</dc:creator>
			<guid>https://gcup.ru/forum/67-34749-1</guid>
		</item>
		<item>
			<title>Помогите советом новичку, я хочу создавать миры и истории.</title>
			<link>https://gcup.ru/forum/67-31239-1</link>
			<pubDate>Fri, 29 Mar 2013 05:28:18 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Начальное програмирование. Что начать изучать?&lt;br /&gt;Автор темы: San4eZz555&lt;br /&gt;Автор последнего сообщения: San4eZz555&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>В общем у меня есть небольшая идейка, пока ещё находящаяся в доработке, но гейплейная часть выбрана из классики с примесями новых идей. Игра будет создана для коллектива на работе, в основном ради стеба и поднятия настроения, но есть в этом занятии и более глубокая мысль, а именно - отличная возможность попрактиковаться в элементарном. &lt;br /&gt;&lt;br /&gt; В общих чертах: &lt;br /&gt; Многие родившиеся в 90-х помнят такие замечательные квесты, в которых мы по сути перемещались по картинкам, выбирая мышью направление и попутно разгадывая загадки(находясь в каком-либо месте, мы могли нажать к примеру на стрелку и оказаться в другом месте, и перед глазами была другая картинка). Так и сейчас я хочу сделать нечто подобное. Скажу сразу-в программировании я не силён(вернее полный нуль), однако в графических, видео и 3D программах(последние тут скорее всего не потребуются) имею достаточный опыт для создания своего мирка :). Хочу сделать подобное попутно воспользовавшись возможностью для большего понимая языка программирования. На каком языке это будет проще написать, или что лучше использовать при создании для дальнейшей возможности развиваться в области игростроя? По сути идея простая, и реализация не должна оказаться слишком сложной. &lt;br /&gt;&lt;br /&gt; Просьба варианты типа: флешь, конструкторы и т.д. не предлагать. &lt;br /&gt; Я хочу изъять опыт и знания из этой работы, а не лёгкий набросок путём готовых элементов(если я конечно не отстал от жизни и все уже давно не перешли на более интерфейсно-приятные программы с меньшим программо-моделируемым гемором) &lt;img src=&quot;http://s12.ucoz.net/sm/1/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Добавлено&lt;/b&gt; (28.03.2013, 23:59) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Возможно не все поняли принципа игры, или же тут новички никому не интересны. В общем накидал небольшую схемку, объясняющую принцип гейплея. Надеюсь на этом форуме не сборище зазнавшихся задротов программирования и кто-нибудь да сойдёт до моего уровня дабы подсказать. В любом случае я продолжаю поиски необходимого мне, однако надеялся с вашей помощью ускорить процесс. &lt;br /&gt;&lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://www.radikal.ru&quot; title=&quot;http://www.radikal.ru&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://i036.radikal.ru/1303/99/b5c61f8d708f.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; В общем как я уже писал, суть принципа проста, но не имея опыта не знаю за что хвататься и на чём делать. Кругом столько различных языков, конструкторов, сред, движков, что просто голова идёт кругом.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>San4eZz555</dc:creator>
			<guid>https://gcup.ru/forum/67-31239-1</guid>
		</item>
		<item>
			<title>Ищу исследователя программ для урегулирования глюка в движке</title>
			<link>https://gcup.ru/forum/67-29704-1</link>
			<pubDate>Fri, 15 Mar 2013 13:30:33 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: движок CryEngine 3&lt;br /&gt;Автор темы: KamiRonin&lt;br /&gt;Автор последнего сообщения: Akyltist&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>Доброго времени суток. &lt;br /&gt;&lt;br /&gt; Нужен исследователь программ, чтобы отследить как конкретный exe&apos;шник взаимодействует с интернетом - точки выхода, способы проверки. &lt;br /&gt; и закольцевать или поставить заглушку в нужных местах движка или снаружи. &lt;br /&gt;&lt;br /&gt; ищу не для себя, для всего сообщества - понимаю что работа не два пальца об асфальт, но нужен именно энтузиаст (финансирования у меня нет... &lt;img src=&quot;http://s12.ucoz.net/sm/1/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot; /&gt; сорри)! &lt;br /&gt;&lt;br /&gt; &lt;span style=&quot;font-size:7pt;&quot;&gt;(возможно в дальнейшем выложить на файлхостинг найденное решение и получать ТАМ дивиденды от него...)&lt;/span&gt; &lt;br /&gt;&lt;br /&gt; всем чем смогу помогу.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>KamiRonin</dc:creator>
			<guid>https://gcup.ru/forum/67-29704-1</guid>
		</item>
		<item>
			<title>Вот я решил выложить чать очень полезных книг Ассемблер</title>
			<link>https://gcup.ru/forum/67-16104-1</link>
			<pubDate>Mon, 14 Jan 2013 10:23:59 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Zurgaz&lt;br /&gt;Автор последнего сообщения: taiua&lt;br /&gt;Количество ответов: 11</description>
			<content:encoded>Рудаков П., Финогенов К. - Язык Ассемблера Уроки программирования. &lt;br /&gt; Крупник А. - Ассемблер Самоучитель. &lt;br /&gt; И еще Крупник А. - Изучаем ассемблер. &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerDbjniN&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerDbjniN&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDbjniN&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDbjniN&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDbjniN&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerDbjniN&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerDbjniN&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerDbjniN&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerDbjniN&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;http://zalil.ru/31418403&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerIH1ndE&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerIH1ndE&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerIH1ndE&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerIH1ndE&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerIH1ndE&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerIH1ndE&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerIH1ndE&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerIH1ndE&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerIH1ndE&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;http://zalil.ru/31418423&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerrGOGpT&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerrGOGpT&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrGOGpT&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrGOGpT&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerrGOGpT&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoilerrGOGpT&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerrGOGpT&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerrGOGpT&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoilerrGOGpT&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;http://zalil.ru/31418433&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;i&gt;Будут прозьбы по данному материалу обращайтесь в ЛС, или эту тему.&lt;/i&gt; &lt;img src=&quot;http://s12.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Zurgaz</dc:creator>
			<guid>https://gcup.ru/forum/67-16104-1</guid>
		</item>
		<item>
			<title>Написание ос на ассемблере</title>
			<link>https://gcup.ru/forum/67-3865-1</link>
			<pubDate>Mon, 14 Jan 2013 10:22:48 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Техник&lt;br /&gt;Автор последнего сообщения: taiua&lt;br /&gt;Количество ответов: 45</description>
			<content:encoded>Начал писать собственную ос.Пока что, все на уровне командной строки, с зачатками какой то графической оболочки.Начал подумывать о ее доработке.и тут пришла мысль о том, что надо бы написать gui(графическая оболочка, в windows это проводник со всеми вытекающими) для нее.Кто-нибудь с этим сталкивался?если да, то на каких принципах писать, ведь изначально операционка не знает ни одного api.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Техник</dc:creator>
			<guid>https://gcup.ru/forum/67-3865-1</guid>
		</item>
		<item>
			<title>Решение задачи на Ассемблере</title>
			<link>https://gcup.ru/forum/67-18164-1</link>
			<pubDate>Wed, 12 Dec 2012 11:38:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Не могу решить задачу&lt;br /&gt;Автор темы: gil9red&lt;br /&gt;Автор последнего сообщения: Glimlach&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Задание. &lt;br /&gt; Для данной области, заданной адресами A1 и A2 найти частоту появления байтов 00, 55, и FF. &lt;br /&gt; Сохранить эту информацию в памяти. &lt;br /&gt;&lt;br /&gt; Алгоритм я понимаю, а вот как реализовать...(( &lt;br /&gt; помогите пожалуйста!)))</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>gil9red</dc:creator>
			<guid>https://gcup.ru/forum/67-18164-1</guid>
		</item>
		<item>
			<title>С чего начать изучение фортрана?</title>
			<link>https://gcup.ru/forum/67-25733-1</link>
			<pubDate>Fri, 30 Nov 2012 20:38:04 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Froster&lt;br /&gt;Автор последнего сообщения: fireday&lt;br /&gt;Количество ответов: 24</description>
			<content:encoded>Пишите пожелания и советы...</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Froster</dc:creator>
			<guid>https://gcup.ru/forum/67-25733-1</guid>
		</item>
		<item>
			<title>Vesa</title>
			<link>https://gcup.ru/forum/67-25183-1</link>
			<pubDate>Wed, 01 Aug 2012 18:54:01 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Shevchenko&lt;br /&gt;Автор последнего сообщения: Нохчи&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Народ можно ли найти в интернете программирование vesa на masm32? &lt;br /&gt; Больше нравиться стандарт vesa 1.2</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Shevchenko</dc:creator>
			<guid>https://gcup.ru/forum/67-25183-1</guid>
		</item>
		<item>
			<title>NASM и Ubuntu</title>
			<link>https://gcup.ru/forum/67-23287-1</link>
			<pubDate>Sun, 10 Jun 2012 11:03:27 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Создание игры&lt;br /&gt;Автор темы: Shevchenko&lt;br /&gt;Автор последнего сообщения: TimKruz&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Народ вот тока начал изучать компьютер и хочу изучить NASM.Но у меня вопрос: &lt;br /&gt; 1)Можно ли на нём сделать полноценную 3D игру или для начала 3D редактор для создания игр? &lt;br /&gt; 2)Если да, то можете оставить свои координаты для связи с вами,Хочу вообщем подружиться и обучаться вместе с вами! &lt;img src=&quot;http://s12.ucoz.net/sm/1/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Shevchenko</dc:creator>
			<guid>https://gcup.ru/forum/67-23287-1</guid>
		</item>
		<item>
			<title>DosBox и прерывания...</title>
			<link>https://gcup.ru/forum/67-22874-1</link>
			<pubDate>Fri, 18 May 2012 16:53:02 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: vasua99&lt;br /&gt;Автор последнего сообщения: vasua99&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>собственно такой сабж: кто знает почему в DosBox нельзя установить свои адреса прерываний.Пробовал установить простое,выводящее строку,ничего не выводит(((</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>vasua99</dc:creator>
			<guid>https://gcup.ru/forum/67-22874-1</guid>
		</item>
		<item>
			<title>nasm и call</title>
			<link>https://gcup.ru/forum/67-22711-1</link>
			<pubDate>Fri, 11 May 2012 17:33:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: vasua99&lt;br /&gt;Автор последнего сообщения: vasua99&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>подскажите почему не работает следующая программа(ассемблер NASM): &lt;br /&gt; [code] &lt;br /&gt; section .code &lt;br /&gt; org 0x100 &lt;br /&gt; mov ax,0xb800 &lt;br /&gt; mov es,ax &lt;br /&gt; mov di,0 &lt;br /&gt; mov ah,10 &lt;br /&gt; mov al,hello &lt;br /&gt; call out_string ; почему то ошибка &lt;br /&gt; int 0x20 &lt;br /&gt;&lt;br /&gt; out_string proc ; здесь тоже ошибка &lt;br /&gt; symb: &lt;br /&gt; cmp al,&apos;$&apos; &lt;br /&gt; jz exit &lt;br /&gt; mov [es:di],ax &lt;br /&gt; add di,2 &lt;br /&gt; inc al &lt;br /&gt; jmp symb &lt;br /&gt; exit: &lt;br /&gt; ret &lt;br /&gt; out_string endp &lt;br /&gt; section .data &lt;br /&gt; hello db &quot;Hello$&quot; &lt;br /&gt; И еще - можно ли в nasm использовать at&amp;t синтаксис?</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>vasua99</dc:creator>
			<guid>https://gcup.ru/forum/67-22711-1</guid>
		</item>
		<item>
			<title>Задача на ассемблере</title>
			<link>https://gcup.ru/forum/67-20122-1</link>
			<pubDate>Sun, 22 Jan 2012 12:57:53 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: не могу понять в чем ошибка&lt;br /&gt;Автор темы: gil9red&lt;br /&gt;Автор последнего сообщения: gil9red&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Здравствуйте, помогите разобраться в чем ошибка моей программы &lt;img src=&quot;http://s12.ucoz.net/sm/1/cry.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;cry&quot; /&gt; &lt;br /&gt;&lt;br /&gt; Смысл такой: есть два массива по 10 элементов, они содержат однобайтовые целые числа без знака &lt;br /&gt; нужно определить двухбайтовую сумму эл-тов массивов, какого массива больше, и вывести на экран &lt;br /&gt; строку с соответствующим сообщением &lt;br /&gt;&lt;br /&gt; [code] &lt;br /&gt; .MODEL SMALL &lt;br /&gt; .STACK 100h &lt;br /&gt; .DATA &lt;br /&gt; mas1 db 2,3,1,1,4,5,2,1,2,2 &lt;br /&gt; mas2 db 4,1,1,4,4,3,3,5,1,2 &lt;br /&gt;&lt;br /&gt; msg1 db &apos;Mas1 &gt; Mas2&apos;, 13, &apos;$&apos; &lt;br /&gt; msg2 db &apos;Mas2 &gt; Mas1&apos;, 13, &apos;$&apos; &lt;br /&gt;&lt;br /&gt; sum1 dw 0 &lt;br /&gt; sum2 dw 0 &lt;br /&gt;&lt;br /&gt; count equ 10 &lt;br /&gt;&lt;br /&gt; .CODE &lt;br /&gt;&lt;br /&gt; start: &lt;br /&gt;&lt;br /&gt; ; текущий индекс массива &lt;br /&gt; mov ax, 0 &lt;br /&gt;&lt;br /&gt; ; кол-во повторений цикла &lt;br /&gt; mov cx, count &lt;br /&gt;&lt;br /&gt; l1: &lt;br /&gt; mov bx, mas1[ax] &lt;br /&gt; add sum1, bx &lt;br /&gt; inc ax &lt;br /&gt; loop l1 &lt;br /&gt;&lt;br /&gt; mov ax, 0 &lt;br /&gt; l2: &lt;br /&gt; mov bx, mas2[ax] &lt;br /&gt; add sum2, bx &lt;br /&gt; inc ax &lt;br /&gt; loop l2 &lt;br /&gt;&lt;br /&gt; cmp sum1, sum2 &lt;br /&gt; JG end1 &lt;br /&gt; JL end2 &lt;br /&gt;&lt;br /&gt; end2: &lt;br /&gt; ; выводим строку &lt;br /&gt; lea dx, [msg2] &lt;br /&gt; mov ah,9h &lt;br /&gt; int 21h &lt;br /&gt;&lt;br /&gt; ; ждем пока пользователь не нажмет какой нибудь символ &lt;br /&gt; mov ah,1h &lt;br /&gt; int 21h &lt;br /&gt; ; выход в ос &lt;br /&gt; ret &lt;br /&gt;&lt;br /&gt; end1: &lt;br /&gt; ; выводим строку &lt;br /&gt; lea dx, [msg1] &lt;br /&gt; mov ah,9h &lt;br /&gt; int 21h &lt;br /&gt;&lt;br /&gt; ; ждем пока пользователь не нажмет какой нибудь символ &lt;br /&gt; mov ah,1h &lt;br /&gt; int 21h &lt;br /&gt; ; выход в ос &lt;br /&gt; ret &lt;br /&gt;&lt;br /&gt; end start &lt;br /&gt; [code]</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>gil9red</dc:creator>
			<guid>https://gcup.ru/forum/67-20122-1</guid>
		</item>
		<item>
			<title>Среды разработки Ассемблера</title>
			<link>https://gcup.ru/forum/67-19530-1</link>
			<pubDate>Thu, 05 Jan 2012 16:49:21 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Ищу среды разработки&lt;br /&gt;Автор темы: gil9red&lt;br /&gt;Автор последнего сообщения: Xakep&lt;br /&gt;Количество ответов: 16</description>
			<content:encoded>В связи со скорым экзаменом по ЭВМ нужно изучить Ассемблер &lt;br /&gt; Но это не возможно, не имея среды разработки на этом легендарном яп &lt;br /&gt; Прощу посоветуйте какую нибудь среду для asm, желательно чтобы ее можно было &lt;br /&gt; юзать с флешки (в универе не возможна установка чего либо, а ноута нет) &lt;br /&gt; Буду признателен за дельные советы))</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>gil9red</dc:creator>
			<guid>https://gcup.ru/forum/67-19530-1</guid>
		</item>
		<item>
			<title>RadAsm что и как</title>
			<link>https://gcup.ru/forum/67-19535-1</link>
			<pubDate>Fri, 30 Dec 2011 10:37:13 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: gil9red&lt;br /&gt;Автор последнего сообщения: gil9red&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Здравствуйте! &lt;br /&gt; В двух словах: седня начал юзать Radasm -&gt; ничего не понятно, ничего не запускается, одни ошибки &lt;img src=&quot;http://s12.ucoz.net/sm/1/cry.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;cry&quot; /&gt; ... &lt;br /&gt; Прошу помогите документацией на RadAsm, советами, или другую среду, по проще, для новичков &lt;img src=&quot;http://s12.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>gil9red</dc:creator>
			<guid>https://gcup.ru/forum/67-19535-1</guid>
		</item>
		<item>
			<title>ASM вставки в C++</title>
			<link>https://gcup.ru/forum/67-5462-1</link>
			<pubDate>Fri, 23 Dec 2011 20:41:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: MadridianFox&lt;br /&gt;Автор последнего сообщения: Лёха2008&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Всётаки допенлрил как сделать реалистичную физику машины но при этом прилично падает FPS . Хочу заменить части функций на ASM код . &lt;br /&gt; Вот только не знаю как осуществить умножение , деление , корень и т.д.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>MadridianFox</dc:creator>
			<guid>https://gcup.ru/forum/67-5462-1</guid>
		</item>
		<item>
			<title>Написать игру на MASM32 (под Windows)</title>
			<link>https://gcup.ru/forum/67-18883-1</link>
			<pubDate>Wed, 07 Dec 2011 09:20:10 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Инструменты:своя голова, прямые руки, Инет и DirectX&lt;br /&gt;Автор темы: Jmix&lt;br /&gt;Автор последнего сообщения: M1ghtMortal&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>Это попытка найти тропинку в игровую индустрию. Началась эта дорога с чистого любопытства. Просто выучил несколько команд процессора, побаловался с hex-редактором (16- битный асм), написал пару смехотворных программок, считающих числа, меняющих оперативную память. Навсегда запомнил что такое регистры проца, и с чем их едят. Понял что такое стек. До меня дошло, как делать циклы и ветвления. Прочитал больше ненужного, чем нужного, но язык понравился... &lt;br /&gt;&lt;br /&gt; Когда дошли руки до 32- битного программирования, мне стало плохо (как с похмелья!). &lt;img src=&quot;http://s12.ucoz.net/sm/1/wacko.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wacko&quot; /&gt; Обжегся, после чего долго зализывал раны и не подходил больше к этому вопросу. Но со скрипом на сердце вернулся долбить бошкой об некий язык, который мало чем напоминал весь предыдущий опыт. Дошло до того, что выросла шишка, этой шишкой я сообразил в чём главное различие &quot;16&quot; и &quot;32&quot;. В первом случае исходником была сама исполняемая программа, а во втором- такой текстовый файлик с расширением asm . Логично предположить, что существует переводчик этих текстов. Он называется компилятор. (Это слово я тоже выучил навсегда) Откуда его брать? Оказалось такие компиляторы существуют у любого высокоуровнего языка, хоть C++, Basic, Pascal... У языка ассемблер их несколько разновидностей. Я выбрал компилятор из MASM32. Мало знать язык программирования в таком случае (чтобы написать игру), нужно узнать язык конкретного компилятора. Или по другому- язык конкретной среды, для написания кода. Любой конструктор игр или движок - это программный пакет (куча утилит), которые строятся вокруг компилятора, чтобы создать текст игры, а потом сразу перевести. И вот вам готовая игра)))&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (26.11.2011, 19:24)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Долго можно спорить, на чём лучше писать тексты программ. Для меня самый надёжный способ- это текстовый редактор RadAsm и notepad. В наборе инструментов masm32 есть и свой текст. ред. Но если вам охото путаться в навороченом интерфейсе какого нибудь VisualBasic, пожалста... &lt;br /&gt;&lt;br /&gt; Забыл написать самое главное из чего строются все программы, не зависимо от языка и компилятора: из функций. Не знаю как написано в какой нибудь википедии, но по моему функция - это участок кода, состоящий из машинных команд, которой можно передавать данные в виде параметров через запятую. Взять чистый файл game.asm, выделить память под данные (переменные с числами, строками, пикселями), вызвать кучу функций (передавая все параметры через стек), организовать циклы, написать функции (которые тоже будут вызывать функции)... И что-то получится))) &lt;br /&gt;&lt;br /&gt; Тут пригодятся два вида функций те API (чтобы работать с интерфейсом Windows) и DirectX (чтобы рисовать графику). В masm32 это тоже есть, в папке lib сами функции, в папке include описания этих функций (чтобы компилятор их распознал, иначе не переведёт, будет ругаться).&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (26.11.2011, 20:29)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Меня что сподвигло писать игру на ассемблере? Видеокарта у меня слабая совсем, а хочется чтобы возможности были огромные. Сейчас хорошие игры жруть много ресурсов. Можно ли написать игру не хуже современных, но такую, чтобы пошла на любом (средненьком) компе?</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Jmix</dc:creator>
			<guid>https://gcup.ru/forum/67-18883-1</guid>
		</item>
		<item>
			<title>Создание игр на NES (Dendy)</title>
			<link>https://gcup.ru/forum/67-3051-1</link>
			<pubDate>Sat, 26 Nov 2011 17:15:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Популярная 8-битная приставка - CPU-6502&lt;br /&gt;Автор темы: TLT&lt;br /&gt;Автор последнего сообщения: yarickyarick&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>&lt;b&gt;Nintendo Entertainment System&lt;/b&gt; &lt;br /&gt; Полезные ссылки и ресурсы для изучения программирования игр и не только на популярную и всеми любимую игровую приставку NES (Денди): &lt;p&gt; http://nesdev.parodius.com – &quot;NESdev&quot; является самым известным и полезным архивом для разработчиков игр на NES. Программирование на 6502, документация, утилиты, движки, звук, мапперы и т.д. &lt;p&gt; http://wiki.nesdev.com – Вики-страницы по NESdev. &lt;p&gt; http://nesdev.parodius.com/bbs/ - Лучший форум для разработчика игр на NES.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>TLT</dc:creator>
			<guid>https://gcup.ru/forum/67-3051-1</guid>
		</item>
		<item>
			<title>Помогите открыть файл.</title>
			<link>https://gcup.ru/forum/67-18806-1</link>
			<pubDate>Fri, 25 Nov 2011 11:34:25 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: panechqa&lt;br /&gt;Автор последнего сообщения: TimKruz&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Есть файл в формате lnk., в котором находятся клиентские ресурсы, его необходимо открыть, т.е получить доступ к тем самым ресурсам. &lt;br /&gt;&lt;br /&gt; Вот файл: &lt;br /&gt; http://narod.ru/disk/32274422001/lnk.rar.html &lt;br /&gt;&lt;br /&gt; Очень прошу, - помогите, буду очень Вам признателен.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>panechqa</dc:creator>
			<guid>https://gcup.ru/forum/67-18806-1</guid>
		</item>
		<item>
			<title>Среда разработки ассемблер.</title>
			<link>https://gcup.ru/forum/67-17665-1</link>
			<pubDate>Sun, 16 Oct 2011 10:18:18 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Flyns&lt;br /&gt;Автор последнего сообщения: Stage&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Всем привет.Подскажите пожалуйста среду разработки для ассемблерных приложений и где её можно скачать.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Flyns</dc:creator>
			<guid>https://gcup.ru/forum/67-17665-1</guid>
		</item>
		<item>
			<title>Пошевелим мозгами?</title>
			<link>https://gcup.ru/forum/67-14535-1</link>
			<pubDate>Mon, 04 Jul 2011 21:13:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Задачки на BrainFuck&quot;e&lt;br /&gt;Автор темы: karuy&lt;br /&gt;Автор последнего сообщения: karuy&lt;br /&gt;Количество ответов: 26</description>
			<content:encoded>Недавно наткнулся на &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?http://ru.wikipedia.org/wiki/Brainfuck&quot; title=&quot;http://ru.wikipedia.org/wiki/Brainfuck&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;BrainFuck&lt;/a&gt; и честно говоря очень понравилось, решать головоломки на етом замечательном языке одно удовольствие =), после разработки програмы для умножения двух чисел начинаеш понимать какой асм удобный и настолько высокоуровневые языки простые, так вот к чему я веду: давайте по&apos;fuck&apos;аем мозг решая до етого дня простые задачи =) Первый таск: Умножыть два числа напечатаных з клавы. Присойденяйтесь у кого маса свободного времени. Если даная тема будет интересная придумаем ещо заданий, нет - выложу тут код и тему в корзину.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>karuy</dc:creator>
			<guid>https://gcup.ru/forum/67-14535-1</guid>
		</item>
		<item>
			<title>Как написать игру на ассемблере для ZX Spectrum</title>
			<link>https://gcup.ru/forum/67-2965-1</link>
			<pubDate>Thu, 16 Jun 2011 12:20:51 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: chm-книга&lt;br /&gt;Автор темы: TLT&lt;br /&gt;Автор последнего сообщения: TrueIfrit&lt;br /&gt;Количество ответов: 12</description>
			<content:encoded>Эта книга - вторая из цикла &quot;Как написать игру для ZX Spectrum&quot;. Речь пойдет о применении ассемблера для написания игровых программ, что позволяет создавать более яркие и динамичные игры, применять разнообразные спецэффекты. Из книги вы узнаете: что такое ассемблер; как вводить и редактировать программы на этом языке; как работает &lt;b&gt;микропроцессор Z80&lt;/b&gt;; как использовать подпрограммы ПЗУ; как создаются различные видео- и аудиоэффекты. Книга написана очень доступным языком и будет полезна как начинающим, так и более «продвинутым» программистам. &lt;p&gt; Скачать тут - http://tim007.com/Book_2.htm</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>TLT</dc:creator>
			<guid>https://gcup.ru/forum/67-2965-1</guid>
		</item>
		<item>
			<title>Демосцены</title>
			<link>https://gcup.ru/forum/67-3350-1</link>
			<pubDate>Sun, 10 Jan 2010 11:55:10 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: TrueIfrit&lt;br /&gt;Автор последнего сообщения: TrueIfrit&lt;br /&gt;Количество ответов: 11</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;i&gt;Думаю не стоит обьяснять что такое демосцена. Вкратце: &lt;b&gt;демосцена - это симбиоз программирования и исскуства&lt;/b&gt;, они нужны чтобы показать что-то красивое. Зачастую демосцены - абстрактны.&lt;/i&gt; &lt;br /&gt; &lt;/div&gt; &lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;&lt;b&gt;Существует 2 жанра демосцен:&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; &lt;b&gt;1. - Demo&lt;/b&gt; — длительные представления, сопровождаемые музыкой. Размер, как правило, от 4 до 15 MB. Demo большего размера встречаются крайне редко (я таких вообще не видел). &lt;br /&gt; &lt;b&gt;2. - Intro&lt;/b&gt; — композиции с ограничением по объёму исполняемого файла. Существуют номинации 64 kB Intro, 4 kB Intro, 512 B Intro, 256 B Intro и даже 128 B Intro! Несмотря на малый размер, авторам удаётся поместить в них интереснейшие видеоэффекты, поражающие зрителей. &lt;p&gt; &lt;span style=&quot;color:blue&quot;&gt;&lt;b&gt;Также разновидностями демосцены являются:&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; - &lt;a class=&quot;link&quot; href=&quot;http://ru.wikipedia.org/wiki/Трекерная_музыка&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Трекерная музыка&lt;/a&gt; &lt;br /&gt; - &lt;a class=&quot;link&quot; href=&quot;http://ru.wikipedia.org/wiki/Пиксельная_графика&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Пиксельная графика&lt;/a&gt; &lt;br /&gt; - &lt;a class=&quot;link&quot; href=&quot;http://ru.wikipedia.org/wiki/ASCII_art&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ASCII art&lt;/a&gt; &lt;br /&gt; - &lt;a class=&quot;link&quot; href=&quot;http://ru.wikipedia.org/wiki/ANSI_art&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ANSI art&lt;/a&gt; &lt;p&gt; &lt;b&gt;Пример демосцены&lt;/b&gt; - &lt;a class=&quot;link&quot; href=&quot;http://gpsw.3dn.ru/Atrium.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;[клац!]&lt;/a&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>TrueIfrit</dc:creator>
			<guid>https://gcup.ru/forum/67-3350-1</guid>
		</item>
		<item>
			<title>Помогите! С чего начать изучать Ассемблер</title>
			<link>https://gcup.ru/forum/67-3302-1</link>
			<pubDate>Tue, 15 Dec 2009 13:15:36 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Автор темы: Anti-Mage&lt;br /&gt;Автор последнего сообщения: TovTripleZ&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Подскажите книги и компилятор. &lt;img src=&quot;http://s12.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>Anti-Mage</dc:creator>
			<guid>https://gcup.ru/forum/67-3302-1</guid>
		</item>
		<item>
			<title>Ассемблер - рассылка Калашникова</title>
			<link>https://gcup.ru/forum/67-3003-1</link>
			<pubDate>Sun, 29 Nov 2009 17:17:24 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Ассемблер? Это просто! Учимся программировать&lt;br /&gt;Автор темы: GC-Vic&lt;br /&gt;Автор последнего сообщения: TrueIfrit&lt;br /&gt;Количество ответов: 12</description>
			<content:encoded>Как только я впервые поинтересовался программированием на асме, то меня сразу же направили на «Рассылку Калашникова». Я думаю, что она и сейчас является одним из самых интересных и актуальных материалов по программированию на ассемблере. &lt;p&gt; Вот линк, на сайт Колашникова - &lt;i&gt;www.Kalashnikoff.ru&lt;/i&gt; – там есть этот материал.</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>GC-Vic</dc:creator>
			<guid>https://gcup.ru/forum/67-3003-1</guid>
		</item>
		<item>
			<title>Программирование микропроцессора МСS6502</title>
			<link>https://gcup.ru/forum/67-2966-1</link>
			<pubDate>Sun, 22 Nov 2009 23:35:36 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Пособие для создателей игр на NES&lt;br /&gt;Автор темы: TLT&lt;br /&gt;Автор последнего сообщения: GC-Vic&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Вот CHM-книга на русском - http://tim007.com/Book/GameDevNES.zip (72,8 Kb) &lt;p&gt; &lt;i&gt;Даже в сети Интернет сложно найти толковые документации на русском языке по программированию на NES (Dendy). Но некоторые энтузиасты не выкидывают из головы идею создать свою игру на старую добрую приставку детства Денди. Им в этом может помочь одна электронная брошюрка, которую можно скачать с нашей странички. По словам автора, все это получится, если хорошо разобраться во внутреннем устройстве “Dendy” и освоить программирование в среде микропроцессора МСS6502. Предлагаемый материал не требует от читателя узкопрофильной технической подготовки или многолетней практики программирования. Так что, всем желающим создать игру на NES стоит ознакомиться с данным материалом, тем более, если он так легко доступен.&lt;/i&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>TLT</dc:creator>
			<guid>https://gcup.ru/forum/67-2966-1</guid>
		</item>
		<item>
			<title>6502 Disassembler – для ROM-файлов NES</title>
			<link>https://gcup.ru/forum/67-2963-1</link>
			<pubDate>Sun, 22 Nov 2009 23:32:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/67&quot;&gt;Низкоуровневое программирование&lt;/a&gt;&lt;br /&gt;Описание темы: Дизассемблировать игры Денди&lt;br /&gt;Автор темы: TLT&lt;br /&gt;Автор последнего сообщения: GC-Vic&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Многие меня на этом форуме спрашивают о том, как и спомощью чего дизассемблируются игры на приставке NES (Она же: Nintendo, Famicom, Dendy, Subor и т.д.). &lt;p&gt; Чтобы дизассемблировать существуют специальные дизассемблеры, например: &lt;p&gt; 6502 Disassembler &lt;br /&gt; (6502 – это процессор NES, как понятно, из названия) &lt;p&gt; Скачать можно тут – http://tim007.com/Progi.htm &lt;p&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Quote&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Дизассемблер с помощью которого можно дизассемблировать, например ROM-файл NES для просмотра команд выполняемых программой. Программа проста в применении: выбрать файл для дизассемблирования, а затем сохранить его в текстовый файл в уже в дизассемблированном виде.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;</content:encoded>
			<category>Низкоуровневое программирование</category>
			<dc:creator>TLT</dc:creator>
			<guid>https://gcup.ru/forum/67-2963-1</guid>
		</item>
	</channel>
</rss>