Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 523
от 15.04.2003, 09:00

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 2984
Отправлено ответов: 8801
Активность: 294.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.59
URL: Программирование
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 123.95
URL: моя рассылка по Protected Mode
[Подробней >>]
K0dMaster
Статус: Доверительный
Общий рейтинг: 123.37
[Подробней >>]
 
Maverick
Статус: Профессиональный
Общий рейтинг: 136.15
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 141.4
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 109.4
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.9
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 109.07
URL: мощный файловый архив
[Подробней >>]
Hangatyr
Статус: Начальный
Общий рейтинг: 131.03
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 2942. Доброе время суток ! Я хотел-бы сказать тов. Broken Sword по поводу защищенного режима (ответ на воп... (ответов: 2)
Вопрос № 2943. Что такое логическая бомба. Примерчик(исходник) приветствуется.... (ответов: 1)
Вопрос № 2944. Здравствуйте Уважаемые Эксперты! Есть вопрос на который Вы наверно уже отвечали,не обесудте. Как про... (ответов: 1)
Вопрос № 2945. Приветствую! Если не очень трудно, поясните, пожалуйста. Ситуация такова: Пишу я Lines, клетки рисую... (ответов: 2)
Вопрос № 2946. Здравствуйте господа Эксперты. Хотелось-бы получить отвены на следующие вопросы: 1.Мое окно не получ... (ответов: 3)
Вопрос № 2947. Привет всем! Подскажите, а лучше напишите как можно заблокировать или отлавливать Ctrl+Alt+Del, Alt+... (ответов: 3)
Вопрос № 2949. Уважаемые эксперты!! Я понимаю,что уже надоел своими дурацкими вопросами.Но надежда только на ВАС !!... (ответов: 1)
Вопрос № 2950. Привет еще раз! Bob Johnson и Ayl, мне надо под ДОС. Под винды я и так программирую, в принципе знаю... (ответов: 2)
Вопрос № 2951. гДПЮЯЭРЕ! сБЮФЮЕЛШЕ ЩЙЯОЕПРШ, ОНЛНЦХРЕ НОРХЛХГХПНБЮРЭ ОПНЦПЮЛЛЙС! нВЕМЭ ХМРЕПЕЯМН, ЙЮЙ НМЮ АСДЕР БШЦ... (ответов: 2)
Вопрос № 2952. Приветствую! Мне нужны примеры программ: интернет-звонилка, терминал(типа HyperTerminal). Подскажите... (ответов: 3)
Вопрос № 2953. Плиз. Подскажите как можно, и с чего начать изучение програмирования. Дайте если есть сайты по изуче... (ответов: 3)
Вопрос № 2954. У меня есть MDI приложение (Win32 соответственно), без исходников. Возможно ли сделать программу, ко... (ответов: 1)
Вопрос № 2955. Здравствуйте, ув. эксперты! У меня такой вопрос - как произвести мониторинг производительности? Кома... (ответов: 2)

Вопросов: 13, ответов: 26


 Вопрос № 2942

Доброе время суток !
Я хотел-бы сказать тов. Broken Sword по поводу защищенного режима (ответ на вопрос 2906):
Не вводите людей в заблужджение... Что такое запредельные области ? Говорите точнее... Наверное это страница не загруженная в физическую память ? Ну так и говорите...
Далее по поводу сигнала #Reset ... Вы хотя бы знаете что это сброс процессора (читай переинициализация)... В результате обращения к незагруженной в память странице возникает исключение #PF (Page Fault Exception) его номер в таблице IDT равен четырнадцати (#14)... Так-что не пишите о чем не знаете... Если хотите писать по этой теме изучите сначала (Intel IA-32 System Programmers Guide), а потом давайте советы людям... OK ? И без обид пожалуйста...;-) В свой адрес критику принимаю...
С уважением dr_dolphin



Вопрос отправлен: 10.04.2003, 08:47
Отправитель: dr_dolphin (dr_dolphin@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, dr_dolphin!
Ну ты и злой перец :)
Я хоть и не Broken Sword, но предположу, что запредельные области это не страницы, в которых бит присутствия P установлен в 0, с такими все понятно и тут действительно будет PF. А вот если настроить страницу так, чтобы она физически указывала на адрес памяти, которого нет, т.е. если установлено 512 мб памяти, а страница показывает на 518-й мегабайт, и бит P у нее = 1 (все ок). Когда процессор обратиться к этой странице, он выставит на шину адреса несуществующий физически адрес, и вот тогда уже chipset будет решать, что делать. А вот он вполне может в ответ на такое "хамство" со стороны процессора подать ему reset, чтоб не выпендривался.
> Так-что не пишите о чем не знаете.
Ну это уже слишком серьезно... У него есть рассылка по protected mode... Так что я бы так не стал говорить.
Поэтому еще раз все дружно становимя в круг и говорим "Нет" наркотикам!!!


Ответ отправлен: 10.04.2003, 15:55
Отправитель: Bob Johnson


Отвечает Broken Sword

Здравствуйте, dr_dolphin!
Тов. dr_dolphin, вы зря наводите тень на плетень, если хотите подискутировать на эту тему - я готов.
Все эксперты ответили на вопрос вообщем то правильно, но ответы были все в одной плоскости, т.е. когда уже установлена ОС, причем которая использует страничную адресацию (!), и таблицы каталогов и страниц настроены верно... идиллия... (кстати кто-то ответил про swap-файл - это немного из другой оперы). Действительно, КОРРЕКТНО(!) заполнив PTE и PDE можно описать ВСЕ 4 Гб на несчастный 1Мб оперативы и тем самым полностью "уйти" от проблемы про которую спрашивалось в 2906...
Мой же ответ описывает картину так, как был поставлен вопрос: проц находится в защ. режиме, (есть одна таблица GDT), страничная адресация отключена (берем общий случай) или пусть даже включена, но PDE и PTE заполнены некорректно (т.е. фактически они не предотвратят ситуации, о которой дальше). И вот на компе стоят 256Мб оперативы. выставляем на адресную шину число большее 256Мб (возможно? конечно! тут все зависит от дескрипторов в GDT и смещения). Вопрос: какой тут хрена #PF??? Мануалы интела мною изучены от корки до корки и знаете что, они НЕ содержат недокументированной инфы. А вот этот случай, про который спрашивал товарищ в вопросе 2906, по сути как раз таковым и является (другое дело, что товарищ сам не понял чего спросил, но мой ответ (я продолжаю настаивать) все равно был ПО СУЩЕСТВУ).
Теперь насчет сигнала #RESET. ДА, ДЕЙСТВИТЕЛЬНО, ЭТОТ СИГНАЛ является сигналом переинициализации процессора, но одновременно он посылается контроллером памяти в случае, когда адрес выставленный на адресную шину превышает размер установленной оперативной памяти, это НЕДОКУМЕНТИРОВАННЫЙ факт, в жизни вы с ним встречаетесь каждый день, сами того не подозревая (в момент POST), посему советую читать побольше книжек и удачи. Кстати, помимо #RESET-а чипсет может послать и др. сигнал (например, NMI), все зависит от конкретного чипсета на конкретной материне.
Если у вас остались какие-либо сомнения или предложения по этому поводу - прошу, может хоть так удасться оживить и вывести из транса эту рассылку

Ответ отправлен: 10.04.2003, 09:45
Отправитель: Broken Sword


 Вопрос № 2943

Что такое логическая бомба. Примерчик(исходник) приветствуется.



Вопрос отправлен: 10.04.2003, 10:18
Отправитель: Alexandr (a2xandr@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Приветствую Вас, Alexandr!
Это когда например по потчте приходит файли при запуске которого на диске не остается свободно места проще говоря он забивает все свободное пространство... ну и тд. А на счет примера думайте сами посколько данный вид деятельности поподает под статью компьютерных преступлений %)))

Ответ отправлен: 10.04.2003, 10:25
Отправитель: K0dMaster


 Вопрос № 2944

Здравствуйте Уважаемые Эксперты!
Есть вопрос на который Вы наверно уже отвечали,не обесудте.
Как прочитать на своей М/В BIOS ,и можно ли в него внести
изменения .
Зарание Благодарен!



Вопрос отправлен: 10.04.2003, 10:31
Отправитель: Vladimir

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Доброе время суток, Vladimir!
Ты имеешь ввиду flash bios? Или что?
По флэшине есть неск-ко статей в IV 15
Кстати, его прошить можно только сразу весь, т.е. кусок ты в микруху не добавишь.
Так же можно поглядеть исходник замечательной утилиты, которая прошивает flash, это небезизвестный wincih.
Очень эффектно работает, и легко устанавливается.
З.Ы. Насчет cih шутка, а то кто нибудь "установит", а я виноват :)


Ответ отправлен: 10.04.2003, 15:57
Отправитель: Maverick


 Вопрос № 2945

Приветствую!
Если не очень трудно, поясните, пожалуйста.
Ситуация такова:
Пишу я Lines, клетки рисуются, шарики прыгают, сгорают, анимируют и всетакое, но...
Выводится на экран все как-то неправильно (мне так кажется)
Скажите, так реализовать будет правильно:
см. приложение
Для моей задачи правильный подход? Может где-то ошибка? Это мой, так
сказать, новый вариант рисования, в старом, все сначала рисовалось на hBmp3,
потом вызывалось WM_PAINT, картинка, ясный пень, моргала.
Есть ли какие правила в этом?



Приложение:


Вопрос отправлен: 10.04.2003, 12:06
Отправитель: [-=TT=-] (KunaevNA@PosolskyDom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Здравствуйте, [-=TT=-]!
Поповуду правильности могу заметить лишь следуеще такие приложение лутчше всего писать под OpenGl или DirectX хотя первое конечно мне больше нравится тогда и работать с графикой и приметивами будет удобнее и вообще все красивее будет и не намго сложнее чем на WinApi !!!

Ответ отправлен: 10.04.2003, 12:39
Отправитель: K0dMaster


Отвечает Bob Johnson

Доброе время суток, [-=TT=-]!
Чтобы у тебя ничего не мограло, нужно либо выводить изображение кусками за один bitblt (ну тут понятно, что ничего моргать не будет) или рисовать вначале в памяти. В принципе, для Lines можно сразу в граф. редакторе уже расположить шарики на фоне поля и потом только копировать нужный bmp на экран. Тогда любая клетка экрана будет нарисована за один bitblt и моргания не будет. Что касается того, когда рисовать - то можешь создать себе класс окна, у которого есть постоянный DC, получить его сразу же после создания окна и использовать по мере необходимости. Естественно, на WM_PAINT и WM_ERASEBKGND надо будет тоже что-то оставить. Но такой способ позволяет рисовать в любое нужное время.
Можно не делать постоянного DC, а по мере необходимости получать его (GetDC или GetWindowDC) и отдавать (ReleaseDC), будет чуть медленнее.
Ну а уж если у тебя там супер навороченная графика, и ты не можешь рисовать сразу за один BitBlt - то рисуй сначала в память (CompatibleDC & CompatibelBitmap), а потом делай bitblt на экран, тем более, что так делают многие виндовские контролы (я лично наблюдал это на TrackBar).


Ответ отправлен: 10.04.2003, 15:57
Отправитель: Bob Johnson


 Вопрос № 2946

Здравствуйте господа Эксперты. Хотелось-бы получить отвены на следующие вопросы:
1.Мое окно не получает ни одного сообщения о нажатии клавиши (WM_CHAR, WM_KEYDOWN ...). Почему? Может это из-за того, что фокус принадлежит RichEditу? И вообще хочу выход по Esc сделать, какое сообщение лучше для этого использовать или вообще надо HOTKEYем пользоваться?
2.В моей Win32 программе я не указываю сегмент ".stack". Какой размер стека Windows ставит по умолчанию, и какой размер минимальный, если твоя программа не использует стек (вернее если ты в своей проге стек не используешь)? Что будет если сегмент стека будет переполнен?
3.Какая разница между GetMessage и PeekMessage какую из них предпочтительнее использовать?



Вопрос отправлен: 10.04.2003, 12:29
Отправитель: GHopper

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Доброе время суток, GHopper!
1. Код Esc - VK_ESCAPE, ловишь его и обрабатываешь соответственно. По всему остальному без кода не скажешь.
2. Поу молчанию 1 Мб, кажется, выделяется, если это не устраивает, то у микрософтовского линкера опиция есть /STACK:reserve[,commit]. Как у борландовских поделок - х.з. В большинстве случаев тебе о стеке вообще нечево беспокоиться.
3. Читаем MSDN:
"Unlike GetMessage, the PeekMessage function does not wait for a message to be posted before returning."
То бишь PeekMessage не ждет отработки месаджа. Тебе решать - что применять.

Ответ отправлен: 10.04.2003, 12:59
Отправитель: masquer


Отвечает K0dMaster

Доброе время суток, GHopper!
1) Это можно решить разными способами взависимосте от того результата который ты хочешь получить...
2) Стандартный рамез если не указанно иначе 1 мб либо если ты создае процесс он наследует размер стека размер процесса предка либо указываешь в ручную. Стек всеравно используется в программе даже если ты его явно не используешь...
3) Одна из них не возрашает управление пока не будет получено сообщение а вторая тобишь PeekMessage сразуже возрашает управление не зависимо от того если сообения в очереди...

Ответ отправлен: 10.04.2003, 12:45
Отправитель: K0dMaster


Отвечает Bob Johnson

Здравствуйте, GHopper!
2. Про стек из MSDN: по умолчанию любому потоку (Thread) отводится 1 мб зарезервированной памяти и 4кб реально доступной. Система будет делать доступной по одной странице из зарезервированной памяти по мере необходимости.
Резервирование памяти никак не сказывается на объеме свободной физической памяти - просто выделяется адресное пространство внутри твоего процесса, а физическая память выделяется только когда зарезервированная память становится доступной (commit). Поэтому уменьшать каким-либо образом стек смысла нет. А вот если ты переполнишь стек (больше 1 мб), тогда возникнет ошибка. Но 1мб стека - это 256К dword'ов, так что должно хватить.
3. Последняя может не вытаскивать сообщение из очереди и не ждет, пока оно там появится. Это позволяет выполнять какие-либо еще операции в том же самом потоке.


Ответ отправлен: 10.04.2003, 15:57
Отправитель: Bob Johnson


 Вопрос № 2947

Привет всем! Подскажите, а лучше напишите как можно заблокировать или отлавливать Ctrl+Alt+Del, Alt+TAB, Ctrl+Break и Ctrl+C. Потом в Паскаль встрою. Пожалуйста! Очень надо, а вам, экспертам, это раз плюнуть!
Заранее спасибо, с меня виртуальное пиво!



Вопрос отправлен: 10.04.2003, 13:06
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает keleb-glin

Приветствую Вас, Кирилл!
адрес обработчика Ctrl+C и Ctrl+Break - в векторе 23h (и 1bh). Остальное можно ловить, сидя на int 9h, и просматривая флаги клавиатуры и нажатую клавишу. А вот хэндлер ctrl-alt-del - по фиксированному адресу F000:FFF0


Ответ отправлен: 12.04.2003, 19:13
Отправитель: keleb-glin


Отвечает Bob Johnson

Здравствуйте, Кирилл!
Тебе под ДОС или под Windows?
Если под дос - то пиши свой обработчик int 9h и в нем сам отлавливай ctr-alt-del и все такое.
Если под Windows - то под NT Ctrl-alt-del никак не заблокируешь (только драйвер клавиатуры), остальные можно - зарегистрируй hot-key на эту комбинацию и ничего в ней не делай. Но в паскаль ты это не встроишь никак. Программа должна быть виндовской.
Под Windows 98 можешь написать тоже драйвер или попробовать хукнуть сервис VKD_Filter_Keyboard_Input.
Но все это не для паскаля.


Ответ отправлен: 10.04.2003, 15:58
Отправитель: Bob Johnson


Отвечает Ayl

Приветствую Вас, Кирилл!
Ты его где собрался отлавливать? В винде? Ну-ну... Удачи! Особенно по встраиванию в Паскаль... :-)
Все дело в том, что все клавиатурные прерывания сначала приходят в нашу всеми любимую винду. Которая обрабатывает клавиши Ctrl+Alt+Del, Ctrl+Tab, Ctrl+Space и т.п. Помешать этому можно только при условии, что твоя прога будет загружена до винды, перейдет в PM и сама настроит для себя IDT. Вот тогда и можно будет обрабатывать эти комбинации. А так - извини.
На самом деле для своей проги ты можешь написать PIF-файл, в котором запретишь реакцию на комбинации Ctrl+Tab, Ctrl+Space и т.п. (при условии, что твоя прога будет работать в DOS-сессии).
Насчет Ctrl+Break и Ctrl+C - обрабатывай прерывание 23h. Или напрямую 9-е. Эти комбинации виндой не перехватываются.
Если же дело не в винде (но тогда я не понял вопрос про Alt+Tab), то можно и Ctrl+Alt+Del перехватить - для этого надо ловить прерывание 9 и проверять, что когда нажата клавиша Del, то переключатели shift-клавиш не установлены для Ctrl и Alt. Если установлены - передавать управление оригинальному обработчику 9-го прерывания не нужно. Вот и все.


Ответ отправлен: 10.04.2003, 16:28
Отправитель: Ayl


 Вопрос № 2949

Уважаемые эксперты!!
Я понимаю,что уже надоел своими дурацкими вопросами.Но надежда только на ВАС !!
Как мне объяснили данная прога не будет работать на компе если его адаптер LPT не держит двунаправленный режим ввода-вывода.Скажите ЧАЙНИКУ как изменить данный кусок проги чтоб работало.А если это невозможно то нельзя ли сделать аналог на другом порте например GAME.
прога в приложении


Приложение:


Вопрос отправлен: 10.04.2003, 17:03
Отправитель: anton (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, anton!
Если адаптер не держит двунаправленный режим, то никаким образом ты не сможешь получить состояние внешнего устройства. Так что опаньки. А чего именно ты пытаешься добиться? Может, через COM попробуешь?

Ответ отправлен: 10.04.2003, 17:31
Отправитель: Ayl


 Вопрос № 2950

Привет еще раз! Bob Johnson и Ayl, мне надо под ДОС. Под винды я и так программирую, в принципе знаю про все их "фичи". Конечно спасибо за ваши советы, но, к сожалению, надо срочно, а на асме пока я могу только выводить строчки на экран:). 3й урок Калашникова пока:).




Вопрос отправлен: 10.04.2003, 18:27
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, Кирилл!
Ну под ДОС это все просто. Перехватываешь 9-е прерывание (это аппаратное прерывание от клавы), считываешь из порта 60h значение - это скен-код нажатой клавиши. Анализируешь его (например, это Del при уже нажатых Alt и Ctrl; С или Break при нажатом Ctrl; Tab при нажатом Alt и т.п.) и если твоя комбинация - игнорируешь или выполняешь свои действия (т.е. подтверждаешь получение байта от контроллера клавиатуры для того, чтобы он мог выставить следующий скен-код; освобождаешь контроллер прерываний и завершаешь обработку прерывания). Если же скен-код тебе не нужен, то вызываешь старый обработчик 9-го прерывания - нафига переписывать то, что уже работает.
Как это должно выгляжить - см. скелет в Приложении. Кстати, ты кажется говорил что-то про Паскаль. Так вот, в Паскале ты можешь воспользоваться процедурой с модификатором interrupt для описания обработчика прерывания прямо на Паскале.

Приложение:

Ответ отправлен: 11.04.2003, 11:52
Отправитель: Ayl


Отвечает Bob Johnson

Добрый день, Кирилл!
Ну тогда странно, зачем тебе ALT-Tab... и все остальное - ты хочешь, чтобы твоя ДОС-прога работала в окне windows и при этом система не реагировала на Ctrl-alt-del? Это невозможно.
Если же прога должна работать под чистый дос - тогда перехватывашь int 9h и следишь за клавишами ctrl, alt и del. В обработчике этого прерывания ты должен будешь считать скан-код клавиши (in al, 60h). Если он 128 или больше, то значит, что данную клавишу отпускают, если меньше - нажимают. Сделай в памяти две переменные - одну для ctrl, другую для alt и изменяй их значения в соответствии с нажатиями ctrl и alt. А когда нажимается del, проверяй флаги ctrl и alt, если они нажаты, то не передавай управлению предыдущему обработчику, иначе - передавай. Если не будешь передавать, сбрось контроллер прерываний: mov al, 20h out 20h, al, иначе больше int 9h не придет.


Ответ отправлен: 11.04.2003, 15:23
Отправитель: Bob Johnson


 Вопрос № 2951

гДПЮЯЭРЕ!
сБЮФЮЕЛШЕ ЩЙЯОЕПРШ, ОНЛНЦХРЕ НОРХЛХГХПНБЮРЭ ОПНЦПЮЛЛЙС! нВЕМЭ ХМРЕПЕЯМН, ЙЮЙ НМЮ АСДЕР БШЦКЪДЕРЭ ЛЕМЭЬЕ. х БННАЫЕ, ЛНФМН КХ ЕЕ ЕЫЕ СЛЕМЭЬХРЭ ХКХ МЕР?


Приложение:


Вопрос отправлен: 10.04.2003, 18:36
Отправитель: Witt

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, Witt!
Witt пишет:
"Здрасьте!
Уважаемые эксперты, помогите оптимизировать программку! Очень интересно, как она будет выглядеть меньше. И вообще, можно ли ее еще уменьшить или нет?"
Да, конечно можно!
Во-первых, не нужно использовать регистр BX, а вместо этого лучше взять SI. Он имеет 2 плюса:
- при старте программы (не под отладчиком) он сразу же равен 100h
- для загрузки значения в регистр AL можно использовать команду lodsb (1 байт + автоинкремент SI).
Во-вторых, для деления на 16 не надо использовать загрузку этого значения в регистр dl и последующего деления. Потому что такой способ имеет несколько недостатков:
- лишняя загрузка значения в регистр (2 байта)
- лишняя очистка регистра AH перед делением (точнее, регистра AX перед загрузкой)
Вместо этого лучше воспользоваться трюком с командой AAM. Все дело в том, что эта команда состоит из 2-х байт. Первый - код операции (0D4h), а второй представляет собой делитель. При ассемблировании команды AAM во второй байт записывается число 10. Ну так ведь нам никто не мешает вместо него прописать 16 :-). Как именно? А вот так, как в Приложении - вместо AAM пишем DB 0D4h, 10h. В результате экономия - 4 байта. Единственный минус - в отладчике тяжело отлаживать - он такой команды не понимает.
Итого от твоих 32 байт отнимаем 4 за счет использования AAM с другой базой, еще 4 за счет использования регистра SI вместо BX. Но вынужденная потеря 1 байта за счет применения команды CMP AH, ... вместо CMP AL, ... Это произошло в связи с побочным эффектом отказа от команды DIV - поменялись местами частное и остаток от деления, в результате чего приходится использовать команду xchg ah, al в начале преобразования байта, а не в конце.
Итак, размер оптимизированной программы с тем же алгоритмом - 25 байт. Она в Приложении первая.
Вторая - попытка изменить алгоритм, но не совсем удачно. 26 байт. Может я еще что-нибудь придумаю по ней - скорее всего можно ее еще улучшить.

Приложение:

Ответ отправлен: 11.04.2003, 14:00
Отправитель: Ayl


Отвечает Maverick

йЪЧЙОСАУШ ЪБ ОЕУЛТПНОЩК ЧПРТПУ, Б ЬФП Ч ЛБЛПК ЛПДЙТПЧЛЕ?

Ответ отправлен: 11.04.2003, 08:19
Отправитель: Maverick


 Вопрос № 2952

Приветствую!
Мне нужны примеры программ: интернет-звонилка, терминал(типа HyperTerminal). Подскажите, пожалуйста, где их можно взять или отправьте мне на trin@pochta.ws. Желательно, что бы примеры были написаны полностью на WinAPI. Также буду благодарен за документы по программированию для модема на ассемблере для Windows.
Спасибо!



Вопрос отправлен: 10.04.2003, 18:42
Отправитель: Trin (trin@pochta.ws)

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Приветствую Вас, Trin!
Зайди сюда тут много чего интересного %)) www.wasm.ru

Ответ отправлен: 11.04.2003, 09:19
Отправитель: K0dMaster


Отвечает Bob Johnson

Добрый день, Trin!
Пример набора номера с помощью RAS есть на моей странице (bobjohnson.nm.ru). Терминал можешь написать с помощью TAPI или можешь открыть ком порт с помощью CreateFile.


Ответ отправлен: 11.04.2003, 15:24
Отправитель: Bob Johnson


Отвечает Eugene

Добрый день, Trin!
Можешь ещё зайти на sourceforge.net
Там куча исходников. Есть и нужные тебе.

Ответ отправлен: 11.04.2003, 16:02
Отправитель: Eugene


 Вопрос № 2953

Плиз. Подскажите как можно, и с чего начать изучение програмирования. Дайте если есть сайты по изучению азов для самих самих начинающих програмистов.



Вопрос отправлен: 10.04.2003, 21:51
Отправитель: Mihail

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Добрый день, Mihail!
В этой рассылке, есть такая небезполезная фича, как поиск в базе, заданных вопросов. Эту тему уже перетирали сотню раз. Начинай с Калашникова, потом Зубков и т.д.
Все есть на сайте Bob Johnson'а...

Ответ отправлен: 11.04.2003, 08:19
Отправитель: Maverick


Отвечает K0dMaster

Приветствую Вас, Mihail!
Тебе под винды или дос ??? вообщем заходи сюды www.wasm.ru найдешь все начиная от азов и заканчивая интересными вещами также сходи на www.codenet.ru www.sources.ru


Ответ отправлен: 11.04.2003, 09:23
Отправитель: K0dMaster


Отвечает Bob Johnson

Добрый день, Mihail!
Попробуй скачать книгу Зубкова у меня со странице (bobjohnson.nm.ru).


Ответ отправлен: 11.04.2003, 15:25
Отправитель: Bob Johnson


 Вопрос № 2954

У меня есть MDI приложение (Win32 соответственно), без исходников. Возможно ли сделать программу, которая бы создавала MDI окна относящиеся к этому приложению? Криво как-то вопрос задал - но смысл думаю понятен. Зарание благодарен. Иван.



Вопрос отправлен: 11.04.2003, 05:47
Отправитель: Ivan

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Приветствую Вас, Ivan!
Не совсем понятен вопрос что тебе конкретно нужно ??
Если ты хотел сказать что к этому MDI приложению нужно присобачить твои Child'ы которые будут открываться в этом MDI приложении то ответ положительный то можно но это очень сложно проще новое приложение заново написать анологичное тому что ты имеещь %)))


Ответ отправлен: 11.04.2003, 09:35
Отправитель: K0dMaster


 Вопрос № 2955

Здравствуйте, ув. эксперты!
У меня такой вопрос - как произвести мониторинг производительности? Команды
rdmsr/wrmsr почему-то не работают...



Вопрос отправлен: 11.04.2003, 08:55
Отправитель: Deny

[Следующий вопрос >>] [Список вопросов]

Отвечает Hangatyr

Доброе время суток, Deny!
Доброе время суток, Deny!
Ну, эти команды являются привилегированными и, соответственно, требуют CPL=0. В противном
случае - #GP.
Выводы: использовать их в реальном режиме, написать драйвер, использовать rdpmc. Также убедись, что правильно адресуешь регистр (учитывая, что число модельно-специфических регистров различно у разных процов).


Ответ отправлен: 11.04.2003, 09:15
Отправитель: Hangatyr


Отвечает Bob Johnson

Приветствую Вас, Deny!
Ты из не из приложения под Windows случайно используешь? Они разрешены только в 0-м кольце, т.е. из драйверов. Либо ты можешь использовать их из реального режима (ну это чистый DOS даже без EMM).


Ответ отправлен: 11.04.2003, 18:18
Отправитель: Bob Johnson



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (29)
Perl (6)
Delphi (16)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (10)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (28)
Windows NT/2000/XP (21)
"Железо" (24)
Поиск информации (12)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (13)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (5)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное