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

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


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

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

Выпуск № 580
от 29.06.2003, 14:30

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.65
URL: Программирование
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 120.56
URL: Методы оптимизации работы ПК
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121.87
URL: мой сайт
[Подробней >>]
 
_vt
Статус: Опытный
Общий рейтинг: 121.84
[Подробней >>]
Zedr0n
Статус: Начальный
Общий рейтинг: 109.32
[Подробней >>]
Алексей
Статус: Начальный
Общий рейтинг: 117.39
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.44
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 122.39
Телефон: (8442) 750522
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 137.07
[Подробней >>]
 
Andrew Vext
Статус: Опытный
Общий рейтинг: 105.31
[Подробней >>]
VicSimon
Статус: Доверительный
Общий рейтинг: 102.17
[Подробней >>]
St
Статус: Опытный
Общий рейтинг: 107.59
[Подробней >>]
 
Hayk
Статус: Опытный
Общий рейтинг: 112.64
URL: Perosnal Web Page which has been created long ago.
[Подробней >>]


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

Вопрос № 3555. Все в жизни меняется.. Просьба: кто-нибудь может дать mailы бывших активных (подчеркиваю)членов груп... (ответов: 3)
Вопрос № 3556. Уважаемые эксперты, недавно, я задавал вопрос про регистр СХ, теперь по мере изучения ASM у меня воз... (ответов: 7)
Вопрос № 3558. Здравствуйте эксперты. Кому не жалко киньте плиз инфу по следующим темам: 1) Машиные коды чисел (пр... (ответов: 1)
Вопрос № 3560. Привет! Снова я. Извини за назойливость, но я так и не нашел ничего что мне подходит. Я сделал, так... (ответов: 1)
Вопрос № 3561. Здравствуйте! У меня появился вот такой вопрос: почему, если после имени файла в константе не припис... (ответов: 4)
Вопрос № 3563. Здравствуйте, Уважаемые Эксперты! Для тех кто не понял мой прошлый вопрос (3549 или 721). Просто мне... (ответов: 5)
Вопрос № 3564. К вопросу №3534. На процессорах Pentium и выше можно использоватьфункции QueryPerformanceFrequency и... (ответов: 2)
Вопрос № 3566. Доброго времени суток, господа. Ни найдется ли у кого простенького примерчика сервиса WinNT, который... (ответов: 3)

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


 Вопрос № 3555

Все в жизни меняется..
Просьба: кто-нибудь может дать mailы бывших активных (подчеркиваю)членов групп SMF(DVL) или SGWW?
Если кому-то это о чем-то говорит..
Пробел в форме так и не работает, давно это было..
Грустно.



Вопрос отправлен: 23.06.2003, 20:56
Отправитель: Наталья Березовец (stalmk@bk.ru)

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

Отвечает Bob Johnson

Здравствуйте, Наталья Березовец!
Сразу извинюсь в начале ответа, но мой социальный уровень развития не позволяет мне пропустить следующего: как-то двусмысленно получается - как правильно прочитать: "активных (подчеркиваю)" или "(подчеркиваю)членов"? Причем во втором случае между словами нет пробела, видимо он и есть правильный, да? Тогда даже не знаю... Могу только свой e-mail предложить... (хотя в группу SMF (Self-Mother-F**kers?) не ходил...)
> Все в жизни меняется..
Но все же некоторые вещи остаются неизменными (почти Матрица 2).
> Пробел в форме так и не работает, давно это было..
зачем_вообще_на_компьютере_нужен_пробел???
> Грустно.
Попробуй коноплю... :)
Да, не забудь зайти на мою страницу: bobjohnson.nm.ru

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


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


Отвечает Tigran K. Kalaidjian

Добрый день, Наталья Березовец!
DVL Посмотрите здесь:
FidoNet 2:5053/26.22
E-Mail smf@chat.ru
Данные взял из их первого журнала от августа 1998го года.
По Фидо я ответа так и не получил... Оставьте свой E-MAIL на kalaidjian@pochtamt.ru или какие-нибудь FTN-адреса на 2:5020/4567.24 Если у меня получится с ними связаться, то я Вас оповещу.


Ответ отправлен: 24.06.2003, 21:59
Отправитель: Tigran K. Kalaidjian


Отвечает Broken Sword

Здравствуйте, Наталья Березовец!
журналистка что ли? я немного не понял что именно вы подчеркнули в вопросе: активных или второе слово? если второе - они вам что то сделали наверное нехорошее?! мы можем собраться и отомстить за поруганную честь...
кстати, если вы собрались брать (подчеркиваю) интервью, то чем вам не подходит наша дружная братия на rusfaq? здесь вам ответят на любой вопрос, который любой действующий (подчеркиваю) член группы SMF или SGWW даже в своих умных книжках не найдет

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


 Вопрос № 3556

Уважаемые эксперты, недавно, я задавал вопрос про регистр СХ, теперь по мере изучения ASM у меня возник другой вопрос, для чего нужен регистр ВХ-базовый регистр.
Я знаю что регистры вобщем то можно неиспользовать по назначению, но мне бы хотелось знатьт какой регистр для каких целей предназначен?



Вопрос отправлен: 23.06.2003, 21:32
Отправитель: Ujin (twixt@rambler.ru)

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

Отвечает _vt

Здравствуйте, Ujin!
BX -используется как базовый регистр при индексной адресации.
Таких регистров четыре - BX, BP, SI, DI.
При операциях вида:
mov ax, [bx] ; переслать в ax слово по адресу ds:bx
mov dx, [si]+6 ; записать в dx шестой байт от базы по адресу ds:si
mov ax, [bp]-3 ; и т.д.
mov cx, [di][si]
подразумевается, что индексные регистры указывают на:
bx --> ds:bx
bp --> ss:bp
di --> es:di
si --> ds:si

---===*** E-Man 1.2 - Powerful toy***===---


Ответ отправлен: 25.06.2003, 23:41
Отправитель: _vt


Отвечает Bob Johnson

Приветствую Вас, Ujin!
bx в 16-разрядных прогах предназначен для хранения адреса массива данных в памяти:
mov al, [bx]
mov ah, [bx + si]
mov ax, [bx + 100h]

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


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


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Ujin!
Из Абеля:
Регистр BX является базовым регистром. Это единственный регистр общего назначения, который может использоваться в качестве "индекса" для расширенной адресации. Другое общее применение его - вычисления.
А я ведь это Вам на мыло уже отсылал... Читайте по-внимательнее.

Ответ отправлен: 24.06.2003, 22:00
Отправитель: Tigran K. Kalaidjian


Отвечает Zedr0n

Здравствуйте, Ujin!
BX - индексный регистр. В Досе для указания смещение можно использовать регистра bx,si,di,bp,sp. Хотя sp я использовать бы не рекоммендовал ;) Просто, например, такое не будет работать.
Buffer db 100 dup(?)
mov cx,3 ; хотим обратиться к 4ому элементу
mov al,Buffer[cx]
Но при индексации с использованием 32-битных регистров, любой подходит. Правда помните, что если вы находитесь в 16-битном режиме, то операция с любым из 32-битных регистров будет длинее на один байт из за префикса.


Ответ отправлен: 24.06.2003, 19:54
Отправитель: Zedr0n


Отвечает Алексей

Приветствую Вас, Ujin!
Вообще регистры можно использовать как удобнее программисту, просто существуют команды, которые неявно их используют. А выражение "базовый регистр" означает, что его можно использовать в качестве базы для работы с памятью, например mov [bx+1234h],10h (bx - база, 1234h - смещение).
ax - везде, где только можно, команды с его применением выполняются быстрее и занимают меньший размер
bx - в качестве базы
cx - неявно в качестве счётчика для loop, rep/repe/repnz
dx - как и ax, для хранения данных
si/di - для операций с цепочками
bp/sp - для работы со стеком

Ответ отправлен: 24.06.2003, 12:10
Отправитель: Алексей


Отвечает Ayl

Доброе время суток, Ujin!
Для использования базовой адресации. В 16-разрядных командах косвенную адресацию можно реализовать следующими способами:
- базовая: mov ax, [bx+NN]; mov ax, [bp+NN]
- индексная: mov ax, [si+NN]; mov ax, [di+NN]
- базово-индексная: mov ax, [bx+si+NN] и т.п.
Кроме этого, в некоторых командах этот регистр используется неявно. Например, команда XLAT: AL <- DS:[BX+AL]

Ответ отправлен: 24.06.2003, 12:33
Отправитель: Ayl


Отвечает Lynx

Добрый день, Ujin!
BX можно указывать в тех местах, когда надо обратиться к ячейке памяти. Например:
mov al, [bx]
mov dx, [si+bx]
Но обращение типа mov ax, [dx], У меня вызывало ошибку.


Ответ отправлен: 24.06.2003, 23:38
Отправитель: Lynx


 Вопрос № 3558

Здравствуйте эксперты.
Кому не жалко киньте плиз инфу по следующим темам:
1) Машиные коды чисел (прямой, обратный, дополнительный)
2) Математическая логика (лучше по-больше, самые азы у меня есть)
3) Основные логические устройства компа (инвенторы, триггеры, регистры, счетчики, сумматоры)
4) Исполняемые и неисполняемые операторы
5) Виды ошибок
Заранее большое спасибо всем ответившим.



Вопрос отправлен: 24.06.2003, 10:37
Отправитель: Delphist (delphist@list.ru)

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

Отвечает Tigran K. Kalaidjian

Приветствую Вас, Delphist!
Насчёт 3-го вопроса: советую купить книгу Ч.Петцольда "КОД". Там Вы сможете найти очень подробное описание лог. элементов и схем (триггеры, сумматоры, защёлки, счётчики, регистры, селекторы). В книге рассматриваются принципы "построения" и работы компьютера. Мне, по крайней мере, понравилось.

Ответ отправлен: 25.06.2003, 16:49
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3560

Привет!
Снова я. Извини за назойливость, но я так и не нашел ничего что мне подходит. Я сделал, так как ты мне сказал в ответе на вопрос номер 3400 и 3471(См. приложение). Выходят сайты с содержанием типа «Прямое моделирование Монте-Карло (ПММК) сверх / гиперзвуковых течений газа.»
( http://www.csa.ru/~grishin/work.htm) и тому подобные.
Если можешь, объясни более популярно (для тупых) какой именно сайт мне может помочь.
С уважением alexneta.


Приложение:


Вопрос отправлен: 24.06.2003, 20:35
Отправитель: alexneta (alexneta@bezeqint.net)

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

Отвечает masquer

Добрый день, alexneta!
Помочь я могу только теоретически, т.к. давным-давно надо было тоже с раскроем поработать и начал искать информацию, потом необходимость отпала. Но находил все через поисковики. Ну, можешь попробовать на rsdn.ru поискать.

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


 Вопрос № 3561

Здравствуйте!
У меня появился вот такой вопрос: почему, если после имени файла в константе не приписать ноль ('command.com',0) и попытатся открыть файл (по int 21 / 3Dh), то программа не запускается в DOS, НО тем не менее отлично исполняется в TurboDebugger по нажатия F9?
Спасибо.



Вопрос отправлен: 24.06.2003, 22:51
Отправитель: Nikita

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

Отвечает Zedr0n

Доброе время суток, Nikita!
Во-первых, имя файла должно быть ASCIIZ, то есть заканчиваться нулем, поэтому файл и не открывается. По поводу TurboDebugger у меня есть следующее соображение: при запуске программы вся область данных инициализируется нулями, что не происходит при запуске программы из DOSа, поэтому вызов прерывания и проходит успешно. Других путей я не вижу.


Ответ отправлен: 25.06.2003, 17:17
Отправитель: Zedr0n


Отвечает Ayl

Доброе время суток, Nikita!
Скорее всего, у тебя описание имени файла расположено последним в сегменте данных. При этом, когда прога выполняется под DOS, то состояние памяти неопределено. А при выполнении проги в TD последний сам очищает весь сегмент нулями. В результате, в твоей проге нуля нет, а в TD - есть. Вот вся разница.

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


Отвечает Broken Sword

Приветствую Вас, Nikita!
TD сам заполняет весь сегмент данных нулями

Ответ отправлен: 24.06.2003, 23:12
Отправитель: Broken Sword


Отвечает Bob Johnson

Доброе время суток, Nikita!
0 означает конец имени файла, если его нет на нужном месте, функция будет считать имя файла другим.
Посмотри в TD, что у тебя получается в переменной, видимо по какой-то причине следом за ней оказался 0.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 26.06.2003, 17:36
Отправитель: Bob Johnson


 Вопрос № 3563

Здравствуйте, Уважаемые Эксперты!
Для тех кто не понял мой прошлый вопрос (3549 или 721).
Просто мне забавно - программа Vesa Test:
vtest.exe 17125b 26.04.1990
у меня(Riva TNT) инициализирует разрешения 640x480,
800x600, 1024x768, 1280x1024 в 256 цветах
Также можно предположить, что эта программа 90-го
года была написана не только для моей tnt, и будет
работать с другими платами.
Далее вопрос: почему бы прогу, которая может на не малом
количестве vesa-совместимых видюх выставлять svga разрешения и
глубину цвета хотя бы в 8 бит, не переделать в крутой драйвер??
Хочу получить нормальный ответ от продвинутых asm'щиков или спецов
по windows!
P.S. Стандартный svga драйвер в win95
даёт max - 800x600@16colors
2expert Warlock: Более глюкавого ответа я еще не читал.



Вопрос отправлен: 25.06.2003, 08:50
Отправитель: div

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

Отвечает _vt

Приветствую Вас, div!
> Для тех кто не понял мой прошлый вопрос
Для тех, кто не понял ответ...
> эта программа 90-го года была написана не только для моей tnt
Уж точно не для tnt...
> Хочу получить нормальный ответ от продвинутых asm'щиков или спецов по windows
Все хотят, где их найти???...
> vesa-совместимых видюх
Так вот, именно для них-то можно написать, а для остальных? Твоя Riva TNT появилась намного позже чем Windows 95, и помимо этого, у каждой видеокарты свой специфический набор функций, отличающийся от стандартов VESA.
Ты тут писал о программах, которые выставляют "нормальные" разрешения и цвет, а ты обращал внимание на скорость вывода изображения? Может на tnt это незаметно, а на S3 Trio видно невооруженным глазом, а ведь она поддерживает VESA 2.0...А есть и более старые видеокарты, или наоборот слишком новые... В этих случаях используются самые общие, стандартные функции вывода, попробуй в Windows убери "Аппаратное ускорение" в свойствах видео полностью, увидишь тоже самое...
P.S. "Хотя бы в 8 бит" можно, может где найдешь...

---===*** E-Man 1.2 - Powerful toy***===---


Ответ отправлен: 25.06.2003, 23:41
Отправитель: _vt


Отвечает Andrew Vext

Добрый день, div!
из-за универсальности драйвер получается медленным и не использует никаких функций аппаратного ускорения. Поэтому такой драйвер пишется обычно для одного или двух разрешений (обычно для 800*600) и применяется только при начальной загрузке системы до того, как будет загружен родной драйвер видеокарты.

Ответ отправлен: 25.06.2003, 11:15
Отправитель: Andrew Vext


Отвечает Ayl

Приветствую Вас, div!
Во-первых, данная программа использует вызовы VESA BIOS. Данный интерфейс предоставляется самой платой. Но, с одной стороны, он доступен только в реальном режиме, с другой - работает очень медленно.
Драйвер устройства работает с последним напрямую, а не через BIOS (сервисы BIOS'а можно считать надстройкой над драйвером). Для того, чтобы драйвер мог корректно работать с SVGA платой, он должен знать ее характеристики. Плат существует достаточно много, все они стандартизированы только для поддержки VGA, что и дает возможность стандартному драйверу использовать только разрешение 800*600*16 (данный режим, хоть и нестандартен для VGA, но поддерживается всеми SVGA платами одинаково. Лишь бы хватило памяти).
К тому же, повторяю, драйвер виндов должен работать в защищенном режиме, где использование интерфейса VESA достаточно затруднительно (реентерабельность и т.п.).

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


Отвечает VicSimon

Добрый день, div!
Потому, что приведенная выше программа переключает режимы через вызовы VESA BIOS, размещенного на видео-карте. BIOS работает в реальном режиме. Современные ОС на уровне ядра НЕ РАБОТАЮТ с BIOS'ами - только через свой драйвер.

Ответ отправлен: 25.06.2003, 09:11
Отправитель: VicSimon


Отвечает Bob Johnson

Добрый день, div!
> Для тех кто не понял мой прошлый вопрос (3549 или 721).
А что там было не понимать???
Я тебе не стал отвечать, потому что не знаю, почему никто не сделает драйвер для виндов на основе vesa 1.2/2.0 (дело здесь не в проге). Если есть желание и возможности - попробуй сам. Видимо производители видеокарт предпочитают писать конкретный драйвер именно под свою карту, а не извращаться c VESA. Еще попробуй поискать в интернете - ведь кто-то же сделал драйвер для вывода звука через PC-Speaker...

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 26.06.2003, 17:37
Отправитель: Bob Johnson


 Вопрос № 3564

К вопросу №3534.
На процессорах Pentium и выше можно использоватьфункции QueryPerformanceFrequency и QueryPerformanceCounter обе имеют по одному параметру в первой адрес DWORD-а получающего количество тиков с секунду (примерно 1 193 180) во второй адрес DWORD-а получающего текущее количество тиков. Перевод в микросекунды следующий: получаем частоту hr_freg функцией QueryPerformanceFrequency (это можно сделать один раз при создании окна) далее делаем два замера функцией QueryPerformanceCounter вычисляем разницу t и вычисляем по формуле (t*1 000 000)/hr_freg. Далее проверка прошло-ли достаточно времени что бы продолжить программу если нет повторяем всё сначала (в смысле замеры и вычисления) на вычисления уходит гдето до 10 мксек.
Примерное использование в приложении.


Приложение:


Вопрос отправлен: 25.06.2003, 10:54
Отправитель: pas (pas1@e-mail.ru)

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

Отвечает St

Привет, pas!
Спасибо за совет, но проблема к сожалению не в том чтобы точно вычислить время (мне в принципе достаточно точности 1 мс), а как сделать цикл такой проверки или задержку на точное количество времени. Для реализации цикла я сделал сначала отдельный поток, но когда попытался просто зациклить его, но тогда процессор оказался постоянно занят на 100%. Елинственным вариантом было использовать функцию Sleep, которая вызывает остановку выполнения потока на нужное время (по хелпу с точностью 1 мс). Но оказалось, что точность Sleep совершенно недостаточна для моей программы, особенно в NT. Поэтому и было найдено решение использовать мультимедийный таймер с вызовом callback функции с точностью действительно близкой к 1 мс.
St

Ответ отправлен: 25.06.2003, 13:08
Отправитель: St


Отвечает Bob Johnson

Приветствую Вас, pas!
Я предлагал эту функцию. В том вопросе дело было не в низкой точности GetTickCount, а в низкой точности Sleep, а последнюю особо никак не увеличишь.
Кстати несколько замечаний по поводу твоего вопроса (самое главное - первое):
1. Обе названные тобой функции имеют действительно по одному параметру, но не по адресу DWORD, а по адресу LARGE_INTEGER, т.к. эти функции работают с 64-битными целыми числами.
2. Непонятно, причем здесь процессор Pentium. Я подозреваю, что эти функции используют системный таймер, а не rdtsc процессора pentium.
3. Количество тиков в секунду совсем не обязательно равно 1 193 180 и даже не примерно там. У меня, например, под ХР оно больше 3 млн.
Я использую функции так (см. приложение). При этом GetElapsedTime возвращает, сколько прошло времени с последнего ее вызова в секундах.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Приложение:

Ответ отправлен: 26.06.2003, 17:37
Отправитель: Bob Johnson


 Вопрос № 3566

Доброго времени суток, господа.
Ни найдется ли у кого простенького примерчика сервиса WinNT, который слушал бы определенный порт (через WinSock) и реагировал бы на поступление данных.
Проблема в том, что я, как случайно выяснилось, толком не умею писать сервисы и при этом еще и WinSock юзать... ;-)
Заранее благодарен...



Вопрос отправлен: 25.06.2003, 14:22
Отправитель: Gibbel

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

Отвечает Hayk

Доброе время суток, Gibbel!
Ушло на мыло.

Ответ отправлен: 26.06.2003, 09:48
Отправитель: Hayk


Отвечает VicSimon

Добрый день, Gibbel!
Исходников нету, но могу кое-что порекомендовать: если в сервисе используются DLL, их необходимо грузить САМОМУ (LoadLibrary). На этом один раз споткнулся.


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


Отвечает Bob Johnson

Приветствую Вас, Gibbel!
Пример работы с winsock на С++ есть в исходниках HTTP сервера, который я написал - на моей странице. Там как раз слушается порт (80) и происходит реакция на поступление данных.
Еще что скажу - непонятно почему, но когда я работал с non-blocking socket и вызывал функцию recv, то моя программа тупила на всех (или не всех) ОС, кроме Win XP - после определенного раза recv возвращал ошибку неверного параметра (я задавал сюда вопрос по этому поводу, но никто не ответил). Решением было использовать на момент получения данных blocking mode, а для эмуляции неблокирующего режима - функцию ioctlsocket для получения количества байт, находящихся в буфере приема. Это так, для справки.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 27.06.2003, 02:04
Отправитель: Bob Johnson



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (36)
C / C++ (23)
Perl (4)
Builder / Delphi (18)
Pascal (25)
Basic / VBA (10)
Java / JavaScript (11)
PHP (3)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (27)
"Железо" (21)
Поиск информации (15)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (5)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (5)
КоАП (4)

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




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


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


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

В избранное