Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 391
от 14.10.2002, 16:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1495 Отправлено ответов: 4654 Активность: 311.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
masquer Статус: Профессиональный Общий рейтинг: 155.8 [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 116.84 URL: Пристанище неодинокого программиста [Подробней >>] |
ASMодей Статус: Опытный Общий рейтинг: 121.55 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 119.62 URL: Мой сайтик... [Подробней >>] |
Bob Johnson Статус: Опытный Общий рейтинг: 151.98 [Подробней >>] |
Maverick Статус: Доверительный Общий рейтинг: 147.82 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 131.74 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 114.07 URL: Beeblebrox / TMA HomePage [Подробней >>] |
St Статус: Начальный Общий рейтинг: 111.84 [Подробней >>] |
LIFO Статус: Опытный Общий рейтинг: 130.87 Телефон: 8 01710 24758 [Подробней >>] |
Eugene Статус: Начальный Общий рейтинг: 119.71 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1452. Привет Всем!!! Вопросик вот какой. Сломал тут недавно защиту от копирования русской версии Ghost Rec... (ответов: 1)
Вопрос № 1453. Я недавно задавал вопрос по поводу сверхбольших адресов при инициализации и расположения ядра. Ну с ... (ответов: 4)
Вопрос № 1454. Привет коллеги! Приглашаю на ... (ответов: 1)
Вопрос № 1455. Позвольте небольшое дополнение к ответам на вопрос № 1409: 04.10.2002, 12:18 Covax wrote: С>Can I us... (ответов: 2)
Вопрос № 1456. Здравствуйте! Вот такая фича происходит: CSEG Segment Assume CS:CSEG, DS:CSEG, ES:CSEG org 100h ST... (ответов: 5)
Вопрос № 1458. Доброе время суток masquer! Спасибо, что Вы уделили мне внимание. Про то, что 32-код пробела я уже п... (ответов: 1)
Вопрос № 1459. Здравствуйте, эксперты! Может вы сталкивались с таким ассеблером, как wasm? Хотелось бы услышать ваш... (ответов: 3)
Вопрос № 1460. Уважаемый masquer, спасибо что откликнулись. К моему великому стыду, я не знаком с драйверами :(. Но... (ответов: 1)
Вопрос № 1461. Доброе время суток. Помогите найти asm под win32 Если у кого есть скинте на мыло. alexnemo@front.ru ... (ответов: 7)
Вопросов: 9, ответов: 25
Вопрос № 1452 |
Привет Всем!!!
Вопросик вот какой. Сломал тут недавно защиту
от копирования русской версии Ghost Recon:Desert Siege
(и какой идиот решил поставить защиту на локализацию
freewar'ного патча???). Так вот меня там заинтересовало
другое, а именно, защита exe-шника (некий DDem->PE engine).
Из-за него (по всей видимости) IDA просто выпадает...:)))
Если кто с ним сталкивался может расскажет попдробнее???
Заранее благодарен...:)
Вопрос отправлен: 09.10.2002, 14:37
Отправитель: Shader (shader@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Shader!
С таким, кажется, не сталкивался, но ида от многих вещей может упасть :)
Запускаешь программу под софтайсом, дампишь, правишь секции и точку входа.
Ну, так а как сломал - memory patch?
Ответ отправлен: 09.10.2002, 16:52
Отправитель: masquer
Вопрос № 1453 |
Я недавно задавал вопрос по поводу сверхбольших адресов при инициализации и расположения ядра. Ну с ядром все понятно - там действительно страничная адресация, а вот с инициализацией процессора...
У кого есть мануалы от интела - откройте плз главу 8.10. Видите рисунок справа? CS.BASE+EIP = FFFF FFF0h!
Далее. The first instruction that is fetched and executed following a hardware reset is located at phisical address FFFFFFF0h. The adress is 16 bytes below the processor's uppermost phisical address. :)) - виляют собаки!!
Далее у них действительно написано, что FFFFFFF0h лежит ниже 1 Мб в реальном режиме (как то не по-русски выходит ) и что база получается путем сдвига на 4 влево. Тогда все понятно. НО ОНИ УСИЛЕННО ПИХАЮТ ПО ХОДУ ПЬЕСЫ ЗНАЧЕНИЕ CS.BASE!!! ЗАЧЕМ, КАК ВЫ ДУМАЕТЕ?
Following a hardware reset (either through a power-up or the assertion of the RESET# pin) the processor is placed in real-address mode and begins executing software initialization code from physical adress FFFFFFF0h...
Е-мое! опять! как они связывают этот FFFFFFF0 с FFF0 ???
Вопрос в том, что понятно, что если CS=F000 а IP=FFF0, то ПЕРВАЯ ИНСТРУКЦИЯ ВЫПОЛНЯЕТСЯ ПО ФИЗИЧЕСКОМУ АДРЕСУ FFFF0 (ниже одного мегабайта, все ОК)... Но вопрос в том, почему бы так про это не написать???? Во всем мануале FFFF0 НИ РАЗУ НЕ ВСТРЕЧАЕТСЯ!!! Они все время усиленно пихают FFFFFFF0h!!!! К ЧЕМУ??? Что они скрывают?
(просмотрите всю 8 главу и сами убедитесь, что интел постоянно виляет и изобилует неоднозначностями)....
Или вот тоже момент:...However, during a hardware reset, the segment selector in the CS register is loaded with F000h. (казалось бы, вот тут то и надо написать про F0000+FFF0, но смотрите о чем они опять втирают:) and the base adress is loaded with FFFF0000h. The starting adress is thus formed by adding the base adress to the value in the EIP register (that is, FFFF0000+FFF0=FFFFFFF0).
Не, ну это же просто смещно уже. какой адрес базы если мы в реальном режиме!!! И так по ходу текста 200 раз повторяют, что "проц при ресете находится в RM, но адрес базы + EIP = FFFFFFF0H :)... что то здесь не так...
Кому это хотя бы кажется странным такое поведение интела, прошу ответить
Вопрос отправлен: 09.10.2002, 14:40
Отправитель: ?
[Следующий вопрос >>] [Список вопросов]
Отвечает Артём Шегеда
Добрый день, ?!
Да не переживай ты так! Всё там путём.
Дело в том, что даже в реальном режиме существуют теневые регистры (хранящие базу и размер сегмента). По сбросу в теневой регистр, отвечающий за базу селектора CS заносится FFFF0000h, а в сам селектор - F000h. Но значение селектора, мягко говоря, до фени. Поэтому в том же мануале чётко написано:
The first time the CS register is loaded with a new value after a hardware reset, the processor will follow the normal rule for address translation in real-address mode (that is, [CS base address = CS segment selector * 16]).
Поэтому, разработчики устройств на базе процессоров IA-32 должны учитывать эту фишку и:
1. Если ПЗУ реально размещена по адресам FFFF0000h не производить перегрузку CS, пока не будет создана GDT и процессор не будет переведен в защищённый режим. Так делают у нас в фирме.
2. Если есть возможность отобразить ПЗУ на адреса 000F0000h, то сделать это и только потом перегрузить CS (jmp far, call far, retf, iret). Так обычно делают производители материнских плат.
Ответ отправлен: 09.10.2002, 15:52
Отправитель: Артём Шегеда
Отвечает ASMодей
Добрый день, ?!
Да, действительно, при инициализации процессора для регистра
CS написано следующее:
CS Selector = F000h
Base = FFFF0000h
Limit = FFFFh
ну и всякие флаги ;)
Так вот, в реальном режиме процессор использует для адресации
ТОЛЬКО значение селектора. Он берет это значение, сдвигает его
влево на 4 бита и добавляет к нему значение IP, получая
таким образом адрес FFFF0h.
Для чего здесь нужна база я не знаю. Единственное, что приходит
на ум, это совместимость с будущими поколениями процессоров,
которые смогут стартовать сразу в защищенном режиме.
PS. Да, кстати, у меня эта глава носит номер 9, наверное это
новый мануал (2002г), так что лучше указывать название,
а не номер.
Ответ отправлен: 10.10.2002, 09:01
Отправитель: ASMодей
Отвечает Portnov
Добрый день, ?!
Да ничего особенно странного. Заголовок мануала видели - IA32? Т.е. они 16-ти битные процы считают просто недоделанной версией 32-хбитных. А в 32-хбитных процессорах адресация всегда, независимо от реального или защищенного режима, идет через CS:EIP и через всю эту схему с селекторами, дескрипторами и т.п. Так уж эти процы устроены. А в реальном режиме таблицы GDT, LDT, IDT и тому подобные структуры, которые приходится программировать в защищенном режиме, просто аппаратно устанавливаются так, что получаются 64х килобайтные сегменты, и все остальное, к чему вы привыкли при программировании 16-битных процов. Еще раз: регистр EIP никуда не девается! И именно он устанаваливается в FFFFFFF0 при запуске, хотя это и эквивалентно установке IP в FFF0. Так что все в мануалах правильно.
С уважением, Portnov.
Ответ отправлен: 09.10.2002, 21:41
Отправитель: Portnov
Отвечает Bob Johnson
Приветствую Вас, ?!
Нет у меня, к сожалению, этих мануалов, но сказать могу вот что: На самом деле современный процессор от интела не работает полностью в реальном режиме никогда! (подожди и не бросай в меня помидор). Начну по порядку.
Как ты знаешь, один дескриптор в памяти занимает 8 байт. Там есть и база и предел и все остальное. При любом обращении к памяти проц проверяет, не превысил ли ты предел сегмента и добавляет к нему базовый адрес. Естественно, он НЕ ОБРАЩАЕТСЯ ПРИ ЭТОМ К ТАБЛИЦЕ дескрипторов дополнительно. Потому что при каждом сегментном регистре есть теневой (т.е. никак не видимый для программиста) регистр, содержащий как базу, так и предел сегмента. Это для повышения скороси. Когда же проц находится в реальном режиме, НИКТО НИКУДА не девает этот теневой регистр. Он содержит действительную базу и предел сегмента. При загрузке любого значения в любой сегментный регистр проца, находящегося в рельном режиме, проц не читает DT, а просто умножат это число на 16, помещает в базу, а в предел - 65536 (или 65535, вот не помню), т.е. 64к. Если ты попытаешься обратиться в R-mode так:
mov esi, 010000h
mov eax, [esi] - получишь ошибку! - просто превысил предел.
Поэтому НИКТО не мешает при старте (или ресете) загрузить в cs физически 0F000h, а в его "теневую" базу - FFFF0000h, потому что ФИЗИЧЕСКОЕ число в сегментном регистре после загрузки НЕ НУЖНО НА ФИГ, а вот база и предел - нужны.
В доказательство могу сказать следующее. Попробуй, загрузись в чистый дос, скопируй у Broken Sword переход в P-Mode, загрузи в ds сегмент, с начальным адресом 0 и пределом 4Гб (т.е. всей памяти), вернисть обратно в реальный режим, но DS НЕ ТРОГАЙ и выполни следующее:
mov edi, 0B8000h
mov byte ptr [edi], '$'
И что получится? Ошибка?
Нет... А увидишь ты знак $ в левом верхнем углу текстового экрана... Потому что НИКТО не меняет значения в теневых регистрах при переключении из P в R-mode.
P.S. Значит ты прав с начальным адресом 0FFFFFFF0h...
Ответ отправлен: 09.10.2002, 23:37
Отправитель: Bob Johnson
Вопрос № 1454 |
Привет коллеги!
Приглашаю на форум по Правилам. Мы там с Тигром и Балдром кое-что сделали, хотим услышать ваше мнение. Писать желательно туда...
Обсуждение продлится еще дня 2-3, а потом Олег обещал это реализовать...
Вопрос отправлен: 09.10.2002, 15:56
Отправитель: Sensey
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Sensey!
Ну вот мы и попали... :-)
Ответ отправлен: 09.10.2002, 23:38
Отправитель: Bob Johnson
Вопрос № 1455 |
Позвольте небольшое дополнение к ответам на вопрос № 1409:
04.10.2002, 12:18 Covax wrote:
С>Can I use .FRM files from VB? Or perhaps some data from
С>them?
С>Sincerely yours, Covax.
К сожалению, Covax не указал свой email, я бы отправил ему директом. Ответьте в рассылку, чтобы прочитал (если сечет по-русски). Впрочем, может кому еще понадобится:
Есть утилитка, конвертирующая код VB .FRM в ASM: Похоже, именно это ему и надо. Там далеко не все контролы конвертируются, но самые популярные имеются :)
Download & enjoy: http://board.win32asmcommunity.net/attachment.php?s=448f9be6c89bca4d6dd4f555387690d4&postid=58263
WBR, Dmitry.
Вопрос отправлен: 09.10.2002, 22:53
Отправитель: Dmitry (dim__tv@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Здравствуйте, Dmitry!
Ответил!
Наверное первый :)
Ответ отправлен: 10.10.2002, 04:22
Отправитель: Maverick
Отвечает Dark_Lord
Приветствую Вас, Dmitry!
Для таких вещей, как дополнение к ответу существует форум forum.rusfaq.ru!
Ответ отправлен: 10.10.2002, 19:16
Отправитель: Dark_Lord
Вопрос № 1456 |
Здравствуйте!
Вот такая фича происходит:
CSEG Segment
Assume CS:CSEG, DS:CSEG, ES:CSEG
org 100h
START:
mov ah, 48h
mov bx, 0FFFFh
int 21h
ret
CSEG ENDS
END START
Компилируем, запускаем ... но в BX 0 !!!!!
Почему? Ведь должен быть размер свободной памяти в параграфах. Пробовал и в отладчике смотреть, и выводить DX. Под DOS и под WIN. Помогите плиз, или подскажите как узнать размер свободной памяти (простой, не расширенной).
Вопрос отправлен: 10.10.2002, 04:30
Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, Илья!
Сколько раз уже про это говорили!
DOS выделяет выполняющейся программе ВСЮ доступную память.
Так что для определения объема свободной памяти нужно сначала
освободить ненужную программе память (функция 4Ah).
Ответ отправлен: 10.10.2002, 09:02
Отправитель: ASMодей
Отвечает Bob Johnson
Приветствую Вас, Илья!
Твоя программа показалось настолько убедительной, что я ее откомпилировал и запустил в отладчике и тоже удивился, пока не увидел в AX число 8.
Дело в том, что (как много раз тут уже говорилось), после запуска программы, ДОС выделяет ей ВСЮ свободную память. Т.е. свободной памяти остается 0 (вот его-то и возвращает прерывание в BX). А узнаешь ты его правильно, только надо вначале изменить размер блока, который отведен твоей программе в меньшую сторону (сегментный адрес этого блока есть в CS, DS или ES после запуска com-программы).
Ответ отправлен: 10.10.2002, 21:12
Отправитель: Bob Johnson
Отвечает Beeblebrox
Добрый день, Илья!
Так и есть, СОМ файл съедает под себя всю память, так что остается 0 :)
Ответ отправлен: 10.10.2002, 17:51
Отправитель: Beeblebrox
Отвечает St
Привет, Илья!
Cвободной памяти действительно нет. Она вся принадлежит вашей программе. Если вам нужна свободная память, то сначала надо освободить ненужную вашей программе память, а потом уже проверять сколько ее осталось. О том, как это делается вам лучше всего посмотреть в соответствующих книгах - например у Джордэйна (Журдена) в "Справочнике программиста на персональном компьютере фирмы IBM" (к примеру здесь http://alex-justasu.narod.ru/131.html)
St
Ответ отправлен: 10.10.2002, 13:28
Отправитель: St
Отвечает Portnov
Добрый день, Илья!
Это не фича, это баг :)
Я долго думал, и наконец додумался повнимательнее прочитать TechHelp, а там написано:
It is usually necessary to shrink the allocation that starts at
your PSP (via fn 4aH) in order to make conventional memory
available for allocation.
Т.е. если вы хотите выделять память там же, где у вас PSP (т.е. в любой ком-программе), то надо предварительно урезать память (DosFn 49h). А вообще, правильно, ведь ком-программе при запуске отводится вся доступная память! Так что ничего удивительного, больше вам не отведут. Урежьте память, а потом запрашивайте. Или пишите тот же код в exe-формат.
С уважением, Portnov.
Ответ отправлен: 10.10.2002, 15:15
Отправитель: Portnov
Вопрос № 1458 |
Доброе время суток masquer!
Спасибо, что Вы уделили мне внимание.
Про то, что 32-код пробела я уже понял.
У меня проблема в следующем, у нас есть АЦП, есть к ней консольная программа
управления, которая написана на С++.
Мы хотели, используя C++Builder, написать к ней оболочку, для красоты и удобства.
Все переделали, откомпилировалось нормально, но при запуске комп вешается насмерть.
Причину я тоже обнаружил, но как её устранить не знаю.
Мои знания в ассемблере ничтожны, очень прошу вас помочь мне.
С уважением, Рифат.
Вопрос отправлен: 10.10.2002, 13:08
Отправитель: Рифат
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Рифат!
Дело в том, что инструкции, работающие напрямую с портами ввода-вывода (in, out) считаются привелегированными и в user-mode (ring3) выполняться не будут. Для этого, в общем случае, прийдется драйвер писать. А уже оболочка будет получать сообщения драйвера и отражать их соответственно.
Ответ отправлен: 10.10.2002, 13:52
Отправитель: masquer
Вопрос № 1459 |
Здравствуйте, эксперты!
Может вы сталкивались с таким ассеблером, как wasm?
Хотелось бы услышать ваше мнение о нем, т.е. достоинства и недостатки.
Просто столкнулся с ним недавно, и понравилась простота синтаксиса при написании программ.
Заранее благодарен.
Вопрос отправлен: 10.10.2002, 13:39
Отправитель: Maverick (Maverick@nightmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Добрый день, Maverick!
Ассемблер как осемблер, мелкие недостатки при работе с макросами и создании информации о компиляции. Странный протокол ехе файла в дос. Но это скорее хороший пункт, файлы, из-за пропуска ненужной информации, получаются гораздо меньше!!!
Ответ отправлен: 10.10.2002, 21:14
Отправитель: Dark_Lord
Отвечает Bob Johnson
Доброе время суток, Maverick!
WASM = Watcom Assebler.
Слышал я про него, причем что-то не хорошее.
Писал один мой друган программу и она у него не работала. Были проблемы с jmp. Причем проблемы WASM - какую-то фигню компилировал. Тогда он стал вставлять после каждого JMP команду NOP. Это помогло.
Программа росла и когда была завершена перестала работать. Потом я его несколько дней не видел, а потом снова встетил и он сказал, что доделал программу и она стала работать. На вопрос: "Как?" он ответил: "А я NOP'ы убрал.". Занавес.
Может, конечно, Watcom у него глюкавый был (10-й кажется)... А у тебя, кстати, какой?
Ответ отправлен: 10.10.2002, 21:12
Отправитель: Bob Johnson
Отвечает LIFO
Добрый день, Maverick!
Уже давно не обновляющийся...
Не советаю.
Ответ отправлен: 10.10.2002, 18:00
Отправитель: LIFO
Вопрос № 1460 |
Уважаемый masquer, спасибо что откликнулись.
К моему великому стыду, я не знаком с драйверами :(.
Но, у нас делают сейчас новую электронику и одновременно пишут для неё программу. Для обращения к портам один человек написал несколько функций с ассемблерными вставками и программа работает и электроника откликается. А эти функции можно назвать драйверами?
Вопрос отправлен: 10.10.2002, 14:48
Отправитель: Рифат
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Рифат!
Все зависит от операционной системы, с 9х я давненько не работал, там это может прокатить, но с НТ системами это точно не пройдет - для начала этот вопрос стоит прояснить, с помощью функций CreateFile, ReadFile, ReadFileEx тоже можно открывать и работать с Communication Device.
А драйвер - это программа, которая может работать на 0-м уровне привилегий, на уровне ядра системы, ну в общем такие дела...
Ответ отправлен: 10.10.2002, 16:52
Отправитель: masquer
Вопрос № 1461 |
Доброе время суток.
Помогите найти asm под win32
Если у кого есть скинте на мыло.
alexnemo@front.ru
Заранее благодарен.
Вопрос отправлен: 10.10.2002, 15:55
Отправитель: mastadont (AlexNemo@front.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Eugene
Приветствую Вас, mastadont!
http://asmfanat.narod.ru/soft/fasm.rar
На том же сайте есть примеры для этого ассемблера.
Ответ отправлен: 10.10.2002, 17:24
Отправитель: Eugene
Отвечает masquer
Здравствуйте, mastadont!
Тебе какой - masm, tasm, nasm, fasm...?
Выбирай и в поисковик...
Ответ отправлен: 10.10.2002, 16:54
Отправитель: masquer
Отвечает St
Привет, mastadont!
Пакеты MASM и TASM достаточно объемистые (4-6 Мб) так что не всякий почтовый сервер такие пропустит. Лучше скачайте их сами с http://www.wasm.ru/toollist.php?list=7 или http://hi-tech.nsys.by:8100/tools/compilers.php
Кроме того там есть и другие полезные программы.
St
Ответ отправлен: 10.10.2002, 17:51
Отправитель: St
Отвечает LIFO
Доброе время суток, mastadont!
masm32 или tasm
nasm - бесплатно
Ответ отправлен: 10.10.2002, 18:01
Отправитель: LIFO
Отвечает Portnov
Доброе время суток, mastadont!
Masm32 - www.movsd.com
Nasm - http://www.cryogen.com/Nasm
Ответ отправлен: 10.10.2002, 18:50
Отправитель: Portnov
Отвечает Maverick
Приветствую Вас, mastadont!
Совсем недавно писал!
Зайди на www.filesearch.ru (это поисковый сервер)
Там введи: Masm
Он тебе столько ссылок выдаст, залюбуешся.
Любые версии, какие надо-качай!
Ответ отправлен: 10.10.2002, 18:55
Отправитель: Maverick
Отвечает ASMодей
Здравствуйте, mastadont!
Найти помогу.
Подключаешься к интернет, заходишь на поисковый сайт
(www.yandex.ru, www.rambler.ru, www.aport.ru, ...)
вводишь в строке поиска "MASM32 download" и среди
выданных ссылок ищешь подходящую.
PS. MASM32 лучше всего подходит для Win-программирования.
Ответ отправлен: 11.10.2002, 08:22
Отправитель: ASMодей
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (41) C / C++ (31) Perl (5) Delphi (20) Pascal (24) Basic / VBA (10) Java / JavaScript (9) PHP (9) MySQL / MSSQL (13) |
Пользователю Windows 95/98/Me (37) Windows NT/2000/XP (25) "Железо" (34) Поиск информации (13) |
Администратору Windows NT/2000/XP (12) Linux / Unix (14) |
Юристу Гражданское право (5) Семейное право (4) Трудовое право (3) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||