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

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


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

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

Выпуск № 548
от 20.05.2003, 23:10

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


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

Vdr
Статус: Начальный
Общий рейтинг: 108.1
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.4
URL: Программирование
[Подробней >>]
Ramzes
Статус: Опытный
Общий рейтинг: 128.11
URL: Microsoft homepage
[Подробней >>]
 
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 111.63
[Подробней >>]
Илья
Статус: Опытный
Общий рейтинг: 103.76
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 133.88
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.08
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 133.23
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Knignick
Статус: Доверительный
Общий рейтинг: 113.77
[Подробней >>]
 
Eugene
Статус: Профессиональный
Общий рейтинг: 108.47
URL: мощный файловый архив
[Подробней >>]
shum
Статус: Начальный
Общий рейтинг: 110.25
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.14
[Подробней >>]
 
Hayk
Статус: Начальный
Общий рейтинг: 112.85
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 122.83
URL: моя рассылка по Protected Mode
[Подробней >>]
Hangatyr
Статус: Опытный
Общий рейтинг: 121.01
[Подробней >>]


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

Вопрос № 3215. Уважаемые эксперты! Не знете ли вы, как получить уникальный номер CD диска под Windows? Мне требуетс... (ответов: 1)
Вопрос № 3216. Прога Remote Task Manager позволяет запустить задачу от имени, например, winlogon. Как это можно с... (ответов: 3)
Вопрос № 3217. Уважаемые эксперты, есть следующий вопрос: имеется программа которая пишет в COM порт некоторую посл... (ответов: 2)
Вопрос № 3219. Здра! Кто-нить подскажите плз формулу генератора случ чисел по нормальному закону. Генератор равноме... (ответов: 6)
Вопрос № 3220. Привет, эксперты! По поводу вопроса №3160. Когда-то я написал полноценный дебагер для Spectrum. Зани... (ответов: 3)
Вопрос № 3223. Maverick это исходник проги Проблемы с переносом в файл После screen: читаю из видиобуфера и в фай... (ответов: 1)
Вопрос № 3224. Посмотрел тут рассылку по ассемблеру и ответы на вопрос 3167 (см.Приложение). В общем, Broken Sword ... (ответов: 1)
Вопрос № 3226. Каким образом можно в реальном режиме работы процессора адресовать 4 Гб оперативной памяти с помощью... (ответов: 6)
Вопрос № 3227. Привет. Помогите ПОЖАЛУЙСТА!!! Я написала курсовик скоро сдавать, а он не работает... Это должен б... (ответов: 5)

Вопросов: 9, ответов: 28


 Вопрос № 3215

Уважаемые эксперты!
Не знете ли вы, как получить уникальный номер CD диска под Windows? Мне требуется защитить CD от копирования, на ни одна программа из найденых мною в инете, у меня не заработала. Вот пытаюсь теперь решить проблему ручками.
Если есть инфа по файловой системе CDFS и способах доступа к ней из под Win, просьба кинуть на мыло.



Вопрос отправлен: 15.05.2003, 16:55
Отправитель: Aleksey_1 (aleksey_1@list.ru)

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

Отвечает Vdr

Приветствую Вас, Aleksey_1!
К сожалению, я не смогу помочь достать номер CD, но знай, что для защиты диска от копирования тебе это не поможет...
Дело в том,что никто не мешает "пирату" отформатить диск с тем номером, который необходим. Если факт защиты от копирования критичен, то ищи другой способ... на пример, наиболее часто используемый метод - применение особого форматирования нулевой дорожки.

Ответ отправлен: 16.05.2003, 10:16
Отправитель: Vdr


 Вопрос № 3216

Прога Remote Task Manager позволяет запустить задачу от имени, например, winlogon. Как это можно самому сделать?



Вопрос отправлен: 15.05.2003, 19:31
Отправитель: baldr (baldr@pisem.net)

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

Отвечает Bob Johnson

Здравствуйте, baldr!
CreateProcessAsUser, кажется.


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


Отвечает Ramzes

Добрый день, baldr!
Попробуй разобраться со структурой SECURITY_ATTRIBUTES, которая передается как параметр в CreateProcess
И еще посмотри функции GetSecurityDescriptorDacl, i drugie podobnye funkcii

Ответ отправлен: 17.05.2003, 10:42
Отправитель: Ramzes


Отвечает DiGiT[old]

Здравствуйте, baldr!
The CreateProcessWithLogonW на первый взгляд. А так правой кнопкой мыши по любому объекту и запуск от имени... :)

Ответ отправлен: 16.05.2003, 03:58
Отправитель: DiGiT[old]


 Вопрос № 3217

Уважаемые эксперты, есть следующий вопрос:
имеется программа которая пишет в COM порт некоторую последовательность байт, которую хотелось бы немного изменить и направить вместо COM в LPT. Как это можно сделать? Программа написана под WINDOWS, работает в WIN98. Хотелось бы сделать это не трогая саму исходную программу. Пока задача решена так, COM подключен к COMу другого компьютера который и выполняет преобразование и запись в LPT, еще наверное можно подключить на этом же компе один COM к другому, но тогда придется остаться без мыши. В общем жду помощи.



Вопрос отправлен: 15.05.2003, 22:50
Отправитель: Raptor

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

Отвечает Илья

Здравствуйте, Raptor!
Теоретически, можно какой-либо COM перекрестно соеденить с самим собой. Т.е. ножичком по шлейфу, перекрестить нужные проводочки... Полученная заглушка будет автоматически пересылать данные туда, откуда они пришли. Дальше можно все это читать, пересылать... Только я не знаю, на сколько это реально. На практике никогда не пробовал, а в теории (если не забыл архитектуру ПЭВМ) все выглядит даже очень реально.

Ответ отправлен: 15.05.2003, 23:54
Отправитель: Илья


Отвечает Bob Johnson

Добрый день, Raptor!
> но тогда придется остаться без мыши
А USB и PS/2 тебе зачем? В них мышь работает лучше чем в ком порте (частота опроса выше). Потом, в принципе, можно воткнуть мультикарту или контроллер RS232 и получить еще парочку com-портов.
Ну и ближе к делу (телу): если трогать программу не хочется, определи, как она обращается к com-порту, например, с помощью CreateFile и WriteFile. Тогда ты можешь написать драйвер (VxD - это легко под 98), который будет патчить функции CreateFile и WriteFile таким образом, чтобы если происходит обращение к Com порту, реально открывался LPT порт и данные (с нужными изменениями) шли в него.


Ответ отправлен: 16.05.2003, 19:45
Отправитель: Bob Johnson


 Вопрос № 3219

Здра!
Кто-нить подскажите плз формулу генератора случ чисел по нормальному закону. Генератор равномерного распределения у меня есть.
Если еще и реализацию дадите (на любом языке) - буду вдвойне благодарен...



Вопрос отправлен: 16.05.2003, 10:55
Отправитель: Alex

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

Отвечает Lynx

Здравствуйте, Alex!
Лично я пользуюсь следущими генераторами: ({}-дробная часть)
1. N(i+1) = { 37 * N(i) + 1 }
2. N(i+1) = { (Pi - 2 + N(i)) ^ 2 }
3. N(i+1) = { e ^ (N(i) + Pi) }
4. N(i+1) = { 11 * N(i) + Pi }
5. N(i) = ABS( FIX( COS( SIN( i ^ 2)) * const))
Если тебе надо для криптографии, то я напишу тебе про Рекурентные двоичные последовательности. Вышлю на мыльник (если дашь) дабы не засорять рассылку... Или используй потоковый шифр типа RC4 для генерации ПСП. Описание и реализацию на асме тоже могу выслать.


Ответ отправлен: 16.05.2003, 14:33
Отправитель: Lynx


Отвечает vitya

Здравствуйте, Alex!
В чем проблема-то?
Вычисляй нормальное распределение через формулу (1/2*pi.. и так далее), задавая на вход равномерное распределение.

Ответ отправлен: 16.05.2003, 12:50
Отправитель: vitya


Отвечает Maverick

Добрый день, Alex!
Мыло то дай, есть исходники от Юрова.
Maverick@nightmail.ru


Ответ отправлен: 16.05.2003, 14:50
Отправитель: Maverick


Отвечает Knignick

Добрый день, Alex!
Я знаю два способа:
1. Используя предельную теорему - просто k раз проссумировать равномерные значения.
2. Считать численно интеграл функции распределения, перебирая вероятность от 0..1. Т.н. метод обратных функций.
Реализация ушла бы мылом, если б ты его указал <:)


Ответ отправлен: 16.05.2003, 20:29
Отправитель: Knignick


Отвечает Bob Johnson

Доброе время суток, Alex!
Возьми график функции, которую тебе надо получить от генератора случайных чисел и заполни таблицу, по которой было бы возможно осуществить преобразование равномерно распределенных чисел в нормальный закон. Если диапазон чисел небольшой (например, не больше 32767), то и таблица будет небольшая (для современных объемов).


Ответ отправлен: 16.05.2003, 19:45
Отправитель: Bob Johnson


Отвечает Eugene

Приветствую Вас, Alex!
Есть класс ПСЧ, основанных на примитивных полиномах GF(2).
Только примитивные полиномы могут давать псевдо-случайные последовательности максимальной длиной (2^n - 1). Например примитивным является следующий полином: x^900 + x + 1.
Период повторения будет равен 2^900 - 1 = 8,45 * 10^270. В общем охренительный период. В приложении показано вычисление периода ПСЧ с помощью примитивных полиномов на языке для Matlab и на ассемблере. В принципе разобравшись можно написать и генератор. Написал бы более подробно, если бы указал мыло.

Приложение:

Ответ отправлен: 16.05.2003, 14:22
Отправитель: Eugene


 Вопрос № 3220

Привет, эксперты!
По поводу вопроса №3160. Когда-то я написал полноценный дебагер для Spectrum. Занимал он примерно 4К. И отнял у меня примерно полгода времени (а может и больше - не помню точно). С переходом на PC все НАМНОГО усложнилось, по крайней мере для меня. Написать дебагер, а тем более компилятор (это кстати намного сложнее будет!) в одиночку практически невозможно. Но вот написать интерпретатор, силами нескольких человек вполне реально. Это, конечно, почти бесполезное занятие (моим дебагером кроме меня и моих друзей по институту никто не пользовался), но это намного интересней, чем написание вирусов (всего-лишь мое мнение, может не совпадать с мнением остальных). Да и приобретенный опыт возможно пригодиться в дальнейшем. Так что, кто заинтересовался - пишите мылом. Может чего дельного получится!



Вопрос отправлен: 16.05.2003, 12:04
Отправитель: Дмитрий (demetrius2003@mail.ru)

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

Отвечает Maverick

Здравствуйте, Дмитрий!
Не, вирусы намного интересней, дебаггером будешь пользоваться только ты, а вирусом куча пользователей :)
Автор хорошего вируса должен знать все тонкости операционной системы и т.д. Это образование, проверка своих сил. Хороший полиморфный вирус, уже своего рода дизассемблер. Вобщем это искуство.
Кто заинтересовался, тоже пишите мылом.

Ответ отправлен: 16.05.2003, 14:50
Отправитель: Maverick


Отвечает Bob Johnson

Приветствую Вас, Дмитрий!
> Когда-то я написал полноценный дебагер для Spectrum
Клево... Только спектрум был гооораздо проще. Кстати, какая скорость трассировки была у твоего дебугера (по отношению к реальной скорости выполнения программы)?
> а тем более компилятор (это кстати
Если писать компилятор с языка АСМ, то это будет не сложнее, а проще, т.к. асм - это достаточно строгий язык, без всяких там typedef и все такое (я имею ввиду не OOD-Asm, который тоже наворочен).
> Но вот написать интерпретатор, силами нескольких человек
Интерпретатор чего? Я вот сам писал по заказу интерпретатор lisp (ну упрощенной версии, конечно) на С++ - и ничего за недели 2-3 написал и работает только в путь. Так что все зависит от языка программирования...
> но это намного интересней, чем написание вирусов
Ну да? Почему это еще? Это совершенно разные вещи - интерпретатор и вирус. Хороший вирус тоже интересно писать, т.к. он требует он программиста значительно больших знаний и языка, и ос, чем интерпретатор (возьми, например, cih - вообще великолепно написан... Такой вирус и написать не стыдно).


Ответ отправлен: 16.05.2003, 19:45
Отправитель: Bob Johnson


Отвечает shum

Доброе время суток, Дмитрий!
Знаешь судя по тому как ответили на вопрос 3160, энтузиастов 0. Во вторых полностью согласен и как инициатор вопроса №3160 Принемаю и жду реальных предложений.
nochnaya_bezdna@mail.ru

Ответ отправлен: 17.05.2003, 19:25
Отправитель: shum


 Вопрос № 3223

Maverick это исходник проги
Проблемы с переносом в файл
После screen: читаю из видиобуфера и в файл 3 РАЗА! (циклом)
Файл создает screen.txt в том же каталоге что и прога


Приложение:


Вопрос отправлен: 16.05.2003, 18:12
Отправитель: Денис

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

Отвечает Maverick

Добрый день, Денис!
Извиняюсь за задержку, инет был отключен :(
Ааа ну все ясно, нафигаж ты экран то 3 раза перерисовываешь?
Ты же говорил, что тебе нужно просто сохранить его 3 раза.
Вот и перерисуй его 1 раз, а в файл запиши 3 раза, в цикле.
Указатель не трогай, он автоматически на конец встает.

Ответ отправлен: 19.05.2003, 13:05
Отправитель: Maverick


 Вопрос № 3224

Посмотрел тут рассылку по ассемблеру и ответы на вопрос 3167 (см.Приложение).
В общем, Broken Sword на вопрос не ответил, Hangatyr дал правильный ответ, но не полный.
Сначала матчасть. Дочерняя программа - это программа, запускаемая другой программой (родителем). Она наследует от родителя окружение и часть данных в PSP (в т.ч. список открытых файлов). И при этом не важно, поддерживает ли операционная система многозадачность или нет. Просто в случае однозадачной ОС выполнение родительской программы приостанавливается до завершения выполнения дочки, а в многозадачной можно либо выполнять их параллельно, либо также ожидать завершения дочерней.
По условию задачи в вопросе не требуется параллельная работа родителя и дочки - родитель выполняем предварительную настройку, передает управление дочке, по окончании - выполняет завершающие действия.
Организация выполнения дочерней программы осуществляется достаточно просто с использованием функции 4b00h прерывания 21h. Перед вызовом нужно подготовить структуру параметров для вызываемой программы:
wEnvSeg dw 0
pfCmdTail dd PSP:80h
pfrFCB_1 dd PSP:5ch
pfrFCB_2 dd PSP:6ch
где PSP - сегментный адрес PSP родительской программы.
Адрес этой структуры нужно занести в регистры ES:BX. Регистры DS:DX должны содержать адрес строки с названием запускаемого файла, оканчивающуюся 0. Перед вызовом прерывания нужно где-нибудь сохранить значения ВСЕХ РЕГИСТРОВ (кроме CS и IP), потому что все значения будут потеряны.
Еще перед вызовом нужно освободить место для загрузки программы (функция 4ah прерывания 21h).
Передачу параметров можно осуществить несколькими способами:
1. Передать в командной строке
2. Передать с помощью области межпрограммного взаиможействия (IAC)
3. Через прерывания
4. Через область векторов прерываний
5. Еще как-нибудь :-)
Первый вариант не удовлетворяет условию задания.
Третий - достаточно понятен, в родительской программе пишешь обработчик какого-нибудь прерывания (например, 2fh), в котором через регистры возвращаешь нужные значения или адрес в памяти, где они находятся. Далее в дочерней программе вызываешь это прерывание с признаком "свои" и получаешь данные. Этот вариант вполне надежен.
Четвертый - берешь какое-нибудь неиспользуемое прерывание (например, 60h) и используешь место в области векторов прерываний для передачи параметров (4 байта по адресу 0:4*60h; для прерывания с номером N - 0:4*N). Минус - вероятность "отрубить" какую-нибудь программу, все-таки использующую это прерывание. И ненулевая вероятность вообще завесить машину, если это прерывание будет кем-нибудь вызвано.
Второй способ - в принципе аналогичен четвертому, только для передачи данных используется специальная область в сегменте данных BIOS'а, занимающая 16 байт и называемая IAC - Inter Application Communication area. Начальный адрес этой области - 0040:00F0. Эта область специально была задумана разработчиками именно для передачи данных между программами. Но не гарантируется, что данные в этой области не будет чем-нибудь перезаписаны.


Приложение:


Вопрос отправлен: 16.05.2003, 18:33
Отправитель: Ayl

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

Отвечает Ayl

В общем, отправил в рассылку...


Ответ отправлен: 16.05.2003, 18:46
Отправитель: Ayl


 Вопрос № 3226

Каким образом можно в реальном режиме работы процессора адресовать 4 Гб оперативной памяти с помощью 32-х разрядных регистров?



Вопрос отправлен: 16.05.2003, 22:37
Отправитель: Hoblin

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

Отвечает Bob Johnson

Добрый день, Hoblin!
Никаким. В реальном режиме можно адресовать 1 Мб + 64 Кб - 16 б и все тут. Единственной заморочкой является переход в защищенный режим, установка пределов сегментов на 4 гб, базы на 0, а потом возврат в реальный режим. Но это уже назвали "нереальным" режимом :)


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


Отвечает vitya

Приветствую Вас, Hoblin!

Увы, никак... Надо перейти в защищенный режим.

Ответ отправлен: 17.05.2003, 10:04
Отправитель: vitya


Отвечает Ramzes

Добрый день, Hoblin!
По моему нельзя.
Адресовать 4ГБ адресного пространства можно только в защищенном режиме, при включенной страничной адресации. Все-таки эти 4 ГБ у тебя виртуальные, и обеспечиваются за счет свопинга, а включить страничную адресацию в реальном режиме не удастся, процессор выдаст исключение.

Ответ отправлен: 17.05.2003, 11:00
Отправитель: Ramzes


Отвечает Lynx

Добрый день, Hoblin!
ИМХО никак. Real Mode видит только первые 640Kb памяти, а всякие Himem.sys всё равно работают через защищённый режим.


Ответ отправлен: 17.05.2003, 16:18
Отправитель: Lynx


Отвечает Knignick

Приветствую Вас, Hoblin!
В ДОС разве что через himem.sys но он вроде видит только 64Mb ОЗУ, к тому же 4Gb имеется ввиду вобщем случае виртуальной памяти, а где она в ДОС?

Ответ отправлен: 17.05.2003, 03:19
Отправитель: Knignick


Отвечает Hayk

Здравствуйте, Hoblin!
Dumayu nevozmono. Real'ni rejim ne pozvolyayet rabotat' s 32-x razryadnymi registrami. Ix prosto ne vidno.Maximal'naya pamyat' v real'nom reime eto 1MB + extended memory (po moemu 64 kb).

Ответ отправлен: 19.05.2003, 10:39
Отправитель: Hayk


 Вопрос № 3227

Привет.
Помогите ПОЖАЛУЙСТА!!!
Я написала курсовик скоро сдавать, а он не работает... Это должен быть хранитель экрана под дос.. Я стала писать отдельно резидент, и отдельно графику, а когда вставила методом copy-paste работающую графику в работающий резидент все перестало работать!!! В чем может быть ошибка????? cs: пред переменными подписан



Вопрос отправлен: 16.05.2003, 23:10
Отправитель: Mystique (mystique@bk.ru)

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

Отвечает Maverick

Доброе время суток, Mystique!
Хоть в чем может быть ошибка :)
Показывай исходник. Тут некоторые даже регистры русскими буквами пишут :)


Ответ отправлен: 19.05.2003, 13:05
Отправитель: Maverick


Отвечает Lynx

Доброе время суток, Mystique!
Код пришли. Может быть в нём ошибка.


Ответ отправлен: 17.05.2003, 16:18
Отправитель: Lynx


Отвечает Broken Sword

Добрый день, Mystique!
может забыла сохранить получившееся "нечто"
кидай исходник

Ответ отправлен: 17.05.2003, 19:05
Отправитель: Broken Sword


Отвечает Hangatyr

Приветствую Вас, Mystique!
И что я могу по-твоему ответить, не видев исходника? Тут сотня причин возможна.


Ответ отправлен: 17.05.2003, 00:33
Отправитель: Hangatyr


Отвечает Hayk

Добрый день, Mystique!
Opisaniye dovo'lo taki tumanno, no dumayu problema v napisanii cs: pered peremennimi. CS vsegda pokazyvayet na segment koda. V pervom variante programmi u tebya po vsey veroyatnosti byl odin edinstvenny sgment gde raspolagalis' kod i dannye. Vot i rabotalo. A kogda reshila napisat' razdel'nye 2 komponenti, poyavilis' neskol'ko segmentov(ya tak dumayu), tut to oshibka i vyyavila sebya. Ispol'zyu dlya adresacii peremennix drugie segmentnie registry krome CS i SS. Udashi.

Ответ отправлен: 19.05.2003, 10:44
Отправитель: Hayk



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (40)
C / C++ (30)
Perl (5)
Builder / Delphi (16)
Pascal (29)
Basic / VBA (13)
Java / JavaScript (12)
PHP (5)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (32)
"Железо" (30)
Поиск информации (14)
Администратору
Windows NT/2000/XP (19)
Linux / Unix (10)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (5)
КоАП (4)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2003 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное