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

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


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

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

Выпуск № 626
от 27.08.2003, 22:50

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


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

[L2]Max
Статус: Опытный
Общий рейтинг: 129
Телефон: (0562) 323428
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 149.47
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.11
URL: Программирование
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 121.07
[Подробней >>]
dimka
Статус: Опытный
Общий рейтинг: 142.18
Телефон: (231)-4-43-85
[Подробней >>]
Lynx
Статус: Профессиональный
Общий рейтинг: 117.47
Телефон: (8442) 750522
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.07
[Подробней >>]
Greys
Статус: Доверительный
Общий рейтинг: 120.17
[Подробней >>]


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

Вопрос № 3980. Доброе время суток, эксперты. Я никак в своем WinAPI Help'е не могу найти ничего о том как прочитать... (ответов: 4)
Вопрос № 3981.

T

... (ответов: 1)
Вопрос № 3984. Если у кого есть исходники, доки или ссылки на маны по програмированию для двух(или более) процов, б... (ответов: 2)
Вопрос № 3985. Здраствуйте господа эксперты! Не могли бы вы подсказать варианты (чую их несколько)реализации с небо... (ответов: 2)
Вопрос № 3986. Почему эта программа удаляет файлы в своей директории,а не в той которая была задана через буфферизи... (ответов: 4)
Вопрос № 3987. Как не используя функцию 9h прерывания 21h вывести сообщение на экран. Н-р: Loading.... (ответов: 7)
Вопрос № 3988. Здравствуйте Уважаемые_эксперты! Кто писал(или знает как) дизасемблер(асемблер и др.) подскажите к... (ответов: 3)
Вопрос № 3989. В реальном режиме работы процессора с помощью прерывания int 10h(стандартов VBE) можно установить ра... (ответов: 2)


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


 Вопрос № 3980

Доброе время суток, эксперты.
Я никак в своем WinAPI Help'е не могу найти ничего о том как прочитать значение параметра ключа реестра или создать свой параметр. Может подскажете?
И еще какой API Help посоветуете? Где его скачать?
(SDK не предлагать - малость большеват :))



Вопрос отправлен: 21.08.2003, 20:49
Отправитель: UsAr

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

Отвечает [L2]Max

Приветствую Вас, UsAr!
Ищи описание ф-й RegCreateKeyEx(), RegOpenKeyEx(), RegCloseKey(HKEY),RegFlushKey(HKEY),RegSetValueEx(),
RegDeleteValue(),RegEnumKeyEx()

Ответ отправлен: 21.08.2003, 21:24
Отправитель: [L2]Max


Отвечает Евгений Иванов

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


Ответ отправлен: 21.08.2003, 22:56
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Здравствуйте, UsAr!
> Я никак в своем WinAPI Help'е не могу найти ничего о том как прочитать значение параметра ключа реестра
Для чтения подойдет функция RegQueryValueEx. Она есть в Win 32 prog ref, который идет вместе с дельфи. По ней в see also найдешь остальные.
> И еще какой API Help посоветуете? Где его скачать? (SDK не предлагать - малость большеват :))
Ок, SDK не буду - MSDN :) Есть на дисках и на сайте ms: http://msdn.microsoft.com

* EMan1.5: ---===*** The game we play ***===---


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


Отвечает _vt

Здравствуйте, UsAr!
Основные функции:
RegOpenKeyEx - открыть раздел
RegCloseKey - закрыть раздел
RegCreateKey - создать заздел
RegDeleteKey - удалить раздел
RegEnumKey - получить подразделы выбранного раздела
RegEnumValue - получить параметры выбранного раздела
RegQueryValueEx - получить значение для заданного параметра
RegSetValueEx - установить значение для заданного параметра
RegDeleteValue -удалить параметр
Параметры перечислять долго, поищи в справке...
> И еще какой API Help посоветуете? Где его скачать? (SDK не предлагать - малость большеват :))
Его и посоветую, качать не надо, найди диск с CBuilder или Delphi - он там есть...

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 22.08.2003, 01:37
Отправитель: _vt


 Вопрос № 3981

T


E


S


T




Вопрос отправлен: 21.08.2003, 22:12
Отправитель: Пупкин

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

Отвечает [L2]Max

Приветствую Вас, Пупкин!
T

E

S

T



Ответ отправлен: 21.08.2003, 22:26
Отправитель: [L2]Max


 Вопрос № 3984

Если у кого есть исходники, доки или ссылки на маны по програмированию для двух(или более) процов, буду очень благодарен.



Вопрос отправлен: 22.08.2003, 14:10
Отправитель: Tibor (tibor_ferencig@mail.ru)

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

Отвечает dimka

Доброе время суток, Tibor!
www.ekniga.ru
Пошукай там.


Ответ отправлен: 25.08.2003, 10:50
Отправитель: dimka


Отвечает Bob Johnson

Добрый день, Tibor!
Под Windows тебе ничего особенного в такой ситуации делать не надо - просто пишешь программу, в которой используешь 2 или более потоков. При этом ОС сама распределяет ресурсы двух процессоров между ними. Только учти, что будет необходимо серьезно решать вопрос с синхронизацией между этими потоками, т.к. в 2-х процессорной машине они могут и реально выполнятся одновременно.

* EMan1.5: ---===*** The game we play ***===---


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


 Вопрос № 3985

Здраствуйте господа эксперты!
Не могли бы вы подсказать варианты (чую их несколько)реализации с небольшим описанием, следующей задачи:
требуется переключать клаву (RU/EN) по клавише, скажем CapsLock в Win2k (XP).
Я пробовал написать, получается менять раскладку только своёму окошку, чужим не смог найти как это сделать.
С уважение Владимир, lam.
P.S. Кстати не пойму куда лучше кинуть... в WinAPI или на Assembler... IMHO: на асме универсалы :)



Вопрос отправлен: 22.08.2003, 14:13
Отправитель: lam

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

Отвечает [L2]Max

Здравствуйте, lam!
У тебя не получится сразу всем окнам поменять раскладку, винда хранит текущее состояние для каждого процесса, максимум что ты сможешь сделать, так это узнать HWND всех нужных процессов и поменять раскладку

Ответ отправлен: 22.08.2003, 14:29
Отправитель: [L2]Max


Отвечает Евгений Иванов

Приветствую Вас, lam!
Регистрируй быструю клавишу:


Creating a Hot-Key Control
The following function creates a hot-key control, uses the HKM_SETRULES and HKM_SETHOTKEY messages to initialize it, and returns a handle to the control. This hot-key control does not allow the user to choose a hot key that is a single unmodified key, nor does it permit the user to choose only SHIFT and a key. (These rules effectively prevent the user from choosing a hot key that might be accidentally entered while typing text.)
// InitializeHotkey - creates a hot-key control and sets rules
// and default settings for it.
// Returns the handle of the hot-key control.
// hwndDlg - handle of the parent window (dialog box)
//
// Global variable
// g_hinst - handle of the application instance
extern HINSTANCE g_hinst;
HWND WINAPI InitializeHotkey(HWND hwndDlg)
{
// Ensure that the common control DLL is loaded.
InitCommonControls();

hwndHot = CreateWindowEx(
0, // no extended styles
HOTKEY_CLASS, // class name
"", // no title (caption)
WS_CHILD | WS_VISIBLE, // style
10, 10, // position
200, 20, // size
hwndDlg, // parent window
NULL, // uses class menu
g_hinst, // instance
NULL // no WM_CREATE parameter
);

SetFocus(hwndHot);

// Set rules for invalid key combinations. If the user
// does not supply a modifier key, use ALT as a modifier.
// If the user supplies SHIFT as a modifier key, use
// SHIFT + ALT instead.
SendMessage(hwndHot, HKM_SETRULES,
(WPARAM) HKCOMB_NONE | HKCOMB_S, // invalid key combinations
MAKELPARAM(HOTKEYF_ALT, 0)); // add ALT to invalid entries

// Set CTRL + ALT + A as the default hot key for this window.
// 0x41 is the virtual-key code for 'A'.
SendMessage(hwndHot, HKM_SETHOTKEY,
MAKEWORD(0x41, HOTKEYF_CONTROL | HOTKEYF_ALT), 0);

return hwndHot;
}




Ответ отправлен: 22.08.2003, 18:23
Отправитель: Евгений Иванов


 Вопрос № 3986

Почему эта программа удаляет файлы в своей директории,а не в той которая была задана через буфферизированный ввод(как было задуманно).
.model tiny
.code
org 100h
start:
mov ah,0ah
mov dx,offset pit
int 21h


mov ah,3bh
mov dx,offset pit
int 21h
mov ah,4eh
mov dx,offset file_name
xor cx,cx
int 21h



delete:


mov ah,41h
mov dx,80h+1Eh
int 21h

next_find:
mov ah,4fh
mov dx,80h
int 21h
cmp ax,2
jc err:
call delete
err:


ret
file_name db "*.*",0
pit db fdh,0


end start



Вопрос отправлен: 22.08.2003, 20:13
Отправитель: Radmir (iradmir@nm.ru)

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

Отвечает Евгений Иванов

Доброе время суток, Radmir!
У тебя CD не работает!
Функция 10 записывает строку по смещению 2 от начала.
Так что:

mov ah,3bh
mov dx,(offset pit)+2
int 21h

Но там ещё нужно нолик добавить:

mov si, offset pit
mov [word ptr si], 0FDh
mov ah,0ah
mov dx,si
int 21h
mov al, [si+1]
cmp al, 2
jc err_0
sub ah, ah
xchg bx, ax
mov [si+bx+2], bh
mov ah,3bh
lea dx, [si+2]
int 21h
err_0:



Ответ отправлен: 23.08.2003, 12:28
Отправитель: Евгений Иванов


Отвечает [L2]Max

Приветствую Вас, Radmir!
В MS-DOS версии 2 и выше, для функции 0ah формат буффера предусматривает еще один 2 байт - ФАКТИЧЕСКИЙ ВВОД

Ответ отправлен: 22.08.2003, 23:47
Отправитель: [L2]Max


Отвечает Lynx

Здравствуйте, Radmir!
Функции удаления нужен 0 в конце буфера, а ты его не вставляешь. :)))


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


Отвечает _vt

Добрый день, Radmir!
Ну я же писал, ты должен подставить функции chdir строку такого вида:
ASCIIZ-String db "C:Windows", 0 ; строка с завершающим нулем
А полученная тобой с клавиатуры строка представляет собой следующее:
PASCAL-String db
0Ah, "C:Windows" ; строка с указанием длины с первом байте
Да еще вдобавок первым символом стоит FDh !!!
Естественно, MS-DOS не находит каталога FDh, 0Ah, "..." и возвращает ошибку...
А последующие функции работают с текущим каталогом...
Помимо этого она ипортит стек из-за некорректного рекурсивного вызова delete...
Ну и напоследок рабочий код...

---===*** Updated E-Man 1.5 - it's cool!***===---


Приложение:

Ответ отправлен: 22.08.2003, 22:11
Отправитель: _vt


 Вопрос № 3987

Как не используя функцию 9h прерывания 21h вывести сообщение на экран. Н-р: Loading.



Вопрос отправлен: 22.08.2003, 23:05
Отправитель: Alexey (sezemin@rambler.ru)

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

Отвечает Евгений Иванов

Приветствую Вас, Alexey!
Используй функции BIOS.
Например, 19 функцию 16-го прерывания.
Ну, там ещё можно и по символам выводить, 9,
10 функции.
Удачи!


Ответ отправлен: 23.08.2003, 11:22
Отправитель: Евгений Иванов


Отвечает vitya

Добрый день, Alexey!
например писать прямо в память, начиная с адреса B800

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


Отвечает [L2]Max

Приветствую Вас, Alexey!
mov ah,0x09
mov dx,offset message
int 21h
ret
message db 'Fucking WORLD !!!$'

Ответ отправлен: 22.08.2003, 23:39
Отправитель: [L2]Max


Отвечает Bob Johnson

Приветствую Вас, Alexey!
Еще можно выводить посимвольно, с помощью прерывания int 29h:
mov al, _код_символа_
int 29h

* EMan1.5: ---===*** The game we play ***===---


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


Отвечает Lynx

Добрый день, Alexey!
Способов куча, но самый быстрый, самый эфективный и, что самое главное, самый лучший, это через запись напрямую в видеобуфер! :) Адрес видеобуфера зависит от текущего видеорежима. (см. Архив рассылки)


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


Отвечает _vt

Добрый день, Alexey!
Вопрос необычайной сложности !!!... :-)
Судя по тексту твоего сообщения, ты решил не изучив функции DOS, сразу написать
новую, крутую операционную систему... :-)
Попробуй
прямым отображением в видеопамять: для текстового режима 80x25 сегмент видеобуфера: 0B800h.
Записываешь по четным адресам (0B800h:0000h, 0B800h:0002h и т.д.) цветовые атрибуты символа (например, 07h - серый цвет символов на черном фоне - стандартный), а по нечетным (0B800h:0001h, 0B800h:0003h и т.д.)сами символы.
Например, выводим твою строку:
.186 ; для команды push 0b800h
.model tiny ; com-программа
.code ; сегмент кода
org 100h ; начальный адрес com-программы
_start:
mov ax,3 ;инициализируем 3 видеорежим
int 10h ;иначе WinNT/2000/XP не покажет нам ничего :-)

push 0B800h
pop es ;заносим в сегментый регистр es сегмент видеобуфера
xor di, di ; di = 0
mov si, offset your_string ; si указывает на твою строку
mov ah, 07h ; цвет выводимых символов: серый на черном
_loop:
lodsb ; эквивалентно командам mov al, ds:[si]
; inc si
; т.е. заносим в al первый символ строки, и передвигаем указатель
test al, al ; эквивалентно команде cmp al, 0
jz _end ; если al=0, значит строка кончилась, переходим на _end!
; иначе (если al<>0)
stosw ; эквивалентно командам mov es:[di], ax
; inc di
; т.е. заносим по адресу 0b800h:[di] символ и его цвет
jmp _loop ; повторяем сначала
_end:
mov ah, 10h ; ждем нажатия клавиши
int 16h
ret ; и после этого выходим
your_string db 'Loading cool program...',0

end _start

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 24.08.2003, 00:48
Отправитель: _vt


Отвечает Greys

Здравствуйте, Alexey!
Вывести текст на экран можно средствами ДОСа, БИОСа или путем записи в память видеоадаптера!
средствами ДОСа:
Функция DOS 02h — Записать символ в STDOUT с проверкой на Ctrl-Break
Ввод: АН = 02h
DL = ASCII-код символа
Вывод: Никакого, согласно документации, но на самом деле: AL = код последнего записанного символа (равен DL, кроме случая, когда DL = 09h (табуляция), тогда в AL возвращается 20h).
Функция DOS 06h — Записать символ в STDOUT без проверки на Ctrl-Break
Ввод: АН = 06h
DL = ASCII-код символа (кроме FFh)
Вывод: Никакого, согласно документации, но на самом деле: AL = код записанного символа (копия DL)
Функция DOS 09h — Записать строку в STDOUT с проверкой на Ctrl-Break
Ввод: АН = 09h
DS:DX = адрес строки, заканчивающейся символом $ (24h)
Вывод: Никакого, согласно документации, но на самом деле: AL = 24h (код последнего символа)
Функция DOS 40h — Записать в файл или устройство
Ввод: АН = 40h
ВХ = 1 для STDOUT или 2 для STDERR
DS:DX = адрес начала строки
СХ = длина строки
Вывод: CF = 0,
АХ = число записанных байт
средствами БИОСа:
INT 10h, АН = 00 — Установить видеорежим
Ввод: AL = номер режима в младших 7 битах
Вывод: Обычно никакого, но некоторые BIOS (Phoenix и AMI) помещают в AL 30Н для текстовых режимов и 20h для графических
INT 10h, АН = 4Fh, AL = 02 — Установить SuperVGA-видеорежим
Ввод: ВХ = номер режима в младших 13 битах
Вывод: AL = 4Fh, если эта функция поддерживается
АН = 0, если переключение произошло успешно
АН = 1, если произошла ошибка
INT 10h, АН = 02 — Установить положение курсора
Ввод: АН = 02
ВН = номер страницы
DH = строка
DL = столбец
INТ 10h, АН = 03 — Считать положение и размер курсора
Ввод: АН = 03
ВН = номер страницы
Вывод: DH, DL = строка и столбец текущей позиции курсора
СН, CL = первая и последняя строки курсора
INT 10h, АН = 08 — Считать символ и атрибут символа в текущей позиции курсора
Ввод: АН = 08
ВН = номер страницы
Вывод: АН = атрибут символа
AL = ASCII-код символа
INT 10h, АН = 09 — Вывести символ с заданным атрибутом на экран
Ввод: АН = 09
ВН = номер страницы
AL = ASCII-код символа
BL = атрибут символа
СХ = число повторений символа
INT 10h, АН = 0Ah — Вывести символ с текущим атрибутом на экран
Ввод: АН = 0Ah
ВН = номер страницы
AL = ASCII-код символа
СХ = число повторений символа
INT 10h, АН = 0Eh — Вывести символ в режиме телетайпа
Ввод: АН = 0Eh
ВН = номер страницы
AL = ASCII-код символа
INT 10h, AH = 13h — Вывести строку символов с заданными атрибутами
Ввод: АН = 13h
AL = режим вывода:
бит 0 — переместить курсор в конец строки после вывода
бит 1 — строка содержит не только символы, но также и атрибуты, так что каждый символ описывается двумя байтами: ASCII-код и атрибут
биты 2 – 7 зарезервированы
СХ = длина строки (только число символов)
BL = атрибут, если строка содержит только символы
DH,DL = строка и столбец, начиная с которых будет выводиться строки
ES:BP = адрес начала строки в памяти
вывод через видеопамять:
Для того чтобы изображение появилось на мониторе, оно должно быть записано в память видеоадаптера. Для этого отводится специальная область памяти, начинающаяся с абсолютного адреса B800h:0000h (для текстовых режимов) и заканчивающаяся на B800h:FFFFh. Все, что программы пишут в эту область памяти, немедленно пересылается в память видеоадаптера. В текстовых режимах для хранения каждого изображенного символа используются два байта: байт с ASCII-кодом символа и байт с его атрибутом, так что по адресу B800h:0000h лежит байт с кодом символа, находящимся в верхнем левом углу экрана; по адресу B800h:0001h лежит атрибут этого символа; по адресу B800h:0002h лежит код второго символа в верхней строке экрана и т.д.
Выбирайте,то что вам больше нравится и более подходит в конкретной ситуции, но помните, что я описал здесь текстовый режим,не путайте его с графическим!
С уважением,GREYS!

Ответ отправлен: 25.08.2003, 00:30
Отправитель: Greys


 Вопрос № 3988

Здравствуйте Уважаемые_эксперты!
Кто писал(или знает как) дизасемблер(асемблер и др.)
подскажите как создать структуру по которой
можно было бы определить ВСЕХ комманд CPU.
Необходимо решение для компактной(!) базы данных.
Для этого надо знать - modR/M,SIB,множители и др.
Документация есть кое-какая(zybkov,i386,i486..) но она не в том
чётком структурном виде в каком бы следовало находиться.
Может у кого есть чёткая документация(ссылки)
а желательно поделиться опытом.
Я думаю что я не первый кто с этим сталкивался.
...
Просто противно(!) писать на чужих компиляторах.
(Последняя надежда на этот форум).


Приложение:


Вопрос отправлен: 23.08.2003, 18:24
Отправитель: Yuri (ivanovx@inbox.ru)

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

Отвечает Евгений Иванов

Приветствую Вас, Yuri!
Попробуй HLA - есть исходник!


Ответ отправлен: 24.08.2003, 02:34
Отправитель: Евгений Иванов


Отвечает _vt

Приветствую Вас, Yuri!
Поищи статью Криса Касперски "Дизассемблирование в уме"(поможет в понимании) а также файлик pentium.zip (именно в таком виде валяется на многих сайтах четкое структурное описание всех команд процессора pentium(+MMX + 3dNow!))
P.S.
> Просто противно(!) писать на чужих компиляторах.
В таком случае, тебе должно быть также противно писать под "чужой" процессор и под "противные" операционные системы: начни c разработки собственного процессора :-))

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 24.08.2003, 15:30
Отправитель: _vt


Отвечает Bob Johnson

Приветствую Вас, Yuri!
На моей странице есть небольшой дизассемблер PE файлов с исходниками, написанный на асме. http://bobjohnson.nm.ru
> Просто противно(!) писать на чужих компиляторах.
Да уж... А можно узнать, почему?

* EMan1.5: ---===*** The game we play ***===---


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


 Вопрос № 3989

В реальном режиме работы процессора с помощью прерывания int 10h(стандартов VBE) можно установить разрешение экрана и много другой бяки, например:
mov bx,105h
mov al,02h
mov ah,4fh
int 10h
Как я могу осуществить аналогичную операцию в защищённом режиме?



Вопрос отправлен: 23.08.2003, 22:45
Отправитель: Алексей

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

Отвечает [L2]Max

Приветствую Вас, Алексей!
С помощью int 10 в реальном, а потом переключиться в защищенный (самый простой и одноразовый способ).
Чтобы переключить режим в защищенном режиме, тебе прийдется писать собственный драйвер.

Ответ отправлен: 24.08.2003, 01:42
Отправитель: [L2]Max


Отвечает Bob Johnson

Доброе время суток, Алексей!
Это, видимо, надо делать только один раз, так что переключись в реальный, вызови прерывание, после чего переключись обратно в защищенный.

* EMan1.5: ---===*** The game we play ***===---


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



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (37)
C / C++ (31)
Perl (5)
Builder / Delphi (20)
Pascal (25)
Basic / VBA (10)
Java / JavaScript (8)
PHP (9)
Криптография (9)
WinAPI (17)
Пользователю
Windows 95/98/Me (49)
Windows NT/2000/XP (62)
"Железо" (43)
Поиск информации (23)
Администратору
Windows NT/2000/XP (30)
Linux / Unix (13)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (6)

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




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


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


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

В избранное