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

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


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

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

Выпуск № 502
от 12.03.2003, 01:30

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


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

Broken Sword
Статус: Профессиональный
Общий рейтинг: 125.31
URL: моя рассылка по Protected Mode
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 137.79
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.21
URL: Программирование
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.1
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.44
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 116.41
[Подробней >>]
 
Joy
Статус: Доверительный
Общий рейтинг: 125.4
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 143.96
[Подробней >>]
Kostyan
Статус: Начальный
Общий рейтинг: 112.62
[Подробней >>]


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

Вопрос № 2722. U menia takoi vopros, budu o4en silno blagodarna esli vi pomozete v sleduiushem:podskazite pozaluist... (ответов: 2)
Вопрос № 2724. Во время очередной попытки сделать лабу по ассемблеру возникла такая проблемка: надо перехватить пре... (ответов: 6)
Вопрос № 2725. Приветствую Вас. У меня тут текстовый редактор намечается и вот таким образом я закружаю файл в памя... (ответов: 2)
Вопрос № 2726. Здравствуй, Bob Jhonson! В звуковой?.. ... ... ну в принципе, логично, кнешна... Надо было б и самом... (ответов: 1)
Вопрос № 2727. Здравствуйте, уважаемые эксперты! У меня есть Trial программа Acronis TrueImage 6.0 по созданию обра... (ответов: 3)
Вопрос № 2728. Я хочу налабать типа своего дизассемблера. Всё б нормально, но у меня нет кодов команд MMX, ExtMMX, ... (ответов: 3)
Вопрос № 2729. Всем привет . Хотелось бы в вашей рассылке поблагодарить Bob Johnson за ответ на мой вопрос 2678 . ... (ответов: 1)
Вопрос № 2730. Доброе вретя суток уважаемые эксперты. Есть ли еще какие нибудь отличия между командами pusha и push... (ответов: 3)
Вопрос № 2731. Добрый час! Windows. У Зубкова в начале оконной процедуры win_proc создаётся стековый кадр. Вопросы:... (ответов: 4)

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


 Вопрос № 2722

U menia takoi vopros, budu o4en silno blagodarna esli vi pomozete v sleduiushem:podskazite pozaluista gde v internete mozno naiti dannie o sleduiushem assemblere :
firma "silikon graphics" modeli Origin 2000 s processorom 64 BIT modeli R10000 proizvodstva MIPS Technologies (proizvodstvennoi gruppi SGI
(voobshem v kratze assembler nazivaetsa MIPS)
Budu o4en priznatelna za pomosh!



Вопрос отправлен: 06.03.2003, 19:46
Отправитель: Lana

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

Отвечает Broken Sword

Добрый день, Lana!
http://www.mips.com/
p.s. кстати, MIPS - это дочерняя компания SGI (Silicon Graphics). Силиконовцы в свое время даже умудрились прихватить Крэй. MIPS-ы использовала Nintendo в своих 64-битных приставках.
Позже, когда у силиконовцев возникли финансовые траблы, они толкнули MIPS со всеми потрохами и занялись IA-64, пропихиваемым интелом.

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


Отвечает Maverick

Доброе время суток, Lana!
Погляди в приложении, это из форума выдрано.


Приложение:

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


 Вопрос № 2724

Во время очередной попытки сделать лабу по ассемблеру возникла такая проблемка: надо перехватить прерывание от клавиатуры, но я не знаю какое. А нужно чтобы программка-резидент (com) делала следующее: при нажатии клавиши f1 выводили например дату и время. С написанием перехватчика прерывания проблем нет, но какое прерывание перехватывать не знаю. Помогите советом пожалуйста :) Прошу не кидать в меня тухлыми помидорами, я еще только учусь :)



Вопрос отправлен: 06.03.2003, 23:53
Отправитель: madleon

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

Отвечает Bob Johnson

Здравствуйте, madleon!
За клавиатуру отвечает прерывание 9 - когда нажимается клавиша, приходит это прерывание и в порту 60h можно прочитать скан-код. Только вот проблема: из его обработчика нельзя вызывать прерывания ДОС, т.к. может получиться ситуация, когда пользователь нажмет кнопку именно тогда, когда ДОС будет выполнять какую-либо задачу.


Ответ отправлен: 07.03.2003, 21:48
Отправитель: Bob Johnson


Отвечает Gibbel

Добрый день, madleon!
int 9h

Ответ отправлен: 07.03.2003, 09:57
Отправитель: Gibbel


Отвечает Ayl

Приветствую Вас, madleon!
Ну как какое? Конечно, IRQ1 = Int09
Аппаратное прерывание от клавиатуры. Про это в любой книжке написано.


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


Отвечает Maverick

Добрый день, madleon!
---------------------------------------------
INT 09 - IRQ1 - KEYBOARD INTERRUPT
- Прерывание от клавиатуры -
Вырабатывается при получении данных от клавиатуры. Обычно это скан-код,но
это может быть ACK или NAK (подтверждение или неподтверждение) команды на
клавиатуре класса AT.


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


Отвечает Dark_Lord

Доброе время суток, madleon!
int 9 (IRQ1) порты 60h-61h

Ответ отправлен: 08.03.2003, 16:26
Отправитель: Dark_Lord


Отвечает Joy

Приветствую Вас, madleon!
Такой длинный вопрос, а ответ всего int 09h.

Ответ отправлен: 07.03.2003, 08:29
Отправитель: Joy


 Вопрос № 2725

Приветствую Вас. У меня тут текстовый редактор намечается и вот таким образом я закружаю файл в память:
-----------------------------------------------------------
skip_getopen:
invoke CreateFile,ADDR buffer,
80000000h or 40000000h, 0, 0, 3, 20h, 0
mov edi, eax
invoke CreateFileMapping, edi, 0, PAGE_READWRITE, 0, 0, 0
mov hMapFile, eax
invoke MapViewOfFile, hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0
mov Pointer, eax
invoke SendMessage, hwndEdit, 0ch, ebx, eax
invoke UnmapViewOfFile, Pointer
invoke CloseHandle, hMapFile
invoke CloseHandle, edi
mov byte ptr flag_untitled, 0
call set_title
file_open_failed:
invoke SetFocus, hwndEdit
ret
------------------------------------------------------------
Вопросы:
1. При открытии файлов не малых размеров я могу только удалять символы из editа, и не могу ничего дописать! С чем это связано и как задать буфер для редактирования editа.
2. При открытии некоторых текстовых файлов они не отображаюся в editе, а если это-же файл поместить в edit черед буфер обмена, то каждый символ будет заменен на "?" (кроме пробела). Может это из-за кодировки?
3. Посылаю editу через SendMessage комунду WM_UNDO, а он (edit) реагирует на нее как-то странно - отменяет не последний редактируемый символ, а весь введенный текст.
4. Сам я недавно перешел с MS-DOSа на программирование под Win32 и вот как-то неловко - программированием, как таковым, я почти не занимаюсь. Все, что я делаю - это вызов API. Это нормально, что я все доверяю API или некоторые участки стоит самому написать (почему-то хочется убрать edit и самому обрабатыать нажатия клавишь). Я имею в виду, не позорно ли использовать API в серьезных проектах?
Очень признателен за помощь.



Вопрос отправлен: 07.03.2003, 09:35
Отправитель: GHopper

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

Отвечает masquer

Добрый день, GHopper!
mov edi, eax
...
invoke CloseHandle, edi
Если ты считаешь, что edi сохраниться до вызова CloseHandle, то вынужден тебя разочаровать. И если бы ты потрудится не значения флагов впихивать в код а их наименования, я бы больше рассказал, а так лень мне искать что 0ch WM_SETTEXT и так далее. В качестве совета - смотри все в отладчике, так понятней будет.
А без использования АПИ большого проекта и не напишешь. Ну и как и что доверять АПИ заисит от ситуации, но чаще стоит доверять, по крайней мере доводы должны быть серьезные, чтобы что-то самому делать.

Ответ отправлен: 07.03.2003, 11:02
Отправитель: masquer


Отвечает Bob Johnson

Приветствую Вас, GHopper!
Вот что пишется в MSDN по поводу лимита эдитов (см. сообщение EM_LIMITTEXT) - в вин2к - до 0x7FFFFFFE, в 98 - 0x7FFE для однострочных и 0xFFFF для многострочных. Соответственно, если хочешь делать текстовый редактор, используй свой контрол (а то получится как в блокноте).
4. Вполне нормально. Но желание убрать эдит оправдано (правда тут тебе самому надо будет написать что-то похожее).
Да, зачем ты используешь конкретные цифры, а не константы? Так ведь менее наглядно.


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


 Вопрос № 2726

Здравствуй, Bob Jhonson!
В звуковой?.. ... ... ну в принципе, логично, кнешна... Надо было б и самому это мне предположить - ведь как-то в цифру вгоняют входные сигналы... А не подскажешь где подробно про то, откуда считывать цифровой код подаваемого напряжения? И в каких пределах по напруге работатет цап? У меня есть в Зубкове про программирование звуковых плат, но там как-то маловато и того, что нужно мне нет (или мне не по глазам)...
Спасибо :)



Вопрос отправлен: 07.03.2003, 13:21
Отправитель: 86 a5 ad ef (difuzion@mail.ru)

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

Отвечает Bob Johnson

Добрый день, 86 a5 ad ef!
По диапазону частот - в звуковом диапазоне, т.е. от 20 гц до 20 кгц, напряжение зависит от уровня записи (выставляется в микшере) - где нибудь 0,5в или 1в (это максимум, т.е. от -1в до +1в).
Чтобы получить данные можно воспользоваться любой программой (типа Cool Edit Pro или Sound Forge), в принципе даже sndrec32.exe подойдет (есть в винде), а потом сохранить в обычный (стандартный) wav файл и читать своей программой. Если тебе нужно что-то сделать разово, так будет наверняка удобнее. Если же надо в реальном времени обрабатывать сигнал, то тут уже придется самому читать - я бы использовал directsound (точнее DirectSoundCapture). Программирование звуковой карты напрямую - это отдает досом, да и современные звуковые карты уже аппаратно несовместимы с SB16.


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


 Вопрос № 2727

Здравствуйте, уважаемые эксперты!
У меня есть Trial программа Acronis TrueImage 6.0 по созданию образов дисков. Она полнофункциональная и работает 15 дней. При запуске появляется окно с напоминанием: «Осталось 15 дней…» и имеются две кнопки «Попробовать сейчас» и «Отмена», при этом ввода пароля нигде не требует. Прога имеет временную защиту, т.е. пишет дату инсталляции либо в файл, либо в реестр. Попробовал перевести время в Windows на месяц вперед, теперь прога при запуске выдает тоже окно, но с другой надписью: «Trial период закончился. Купите полную версию». Также кнопка «Попробовать сейчас» становится недоступной. Но так как я студент и денег соответственно нет, то я решил ее взломать, вроде защита элементарная. Попробовал отследить с помощью FileMon и RegMon куда прога обращается при запуске, но ничего не понял, может обращаться с прогами не умею. Пробовал отлаживать прогу Soft Ice 4.05, ставил бряки на GetLocalTime, прога прерывается, выскакивает S-Ice жму F12, выхожу из процедуры, но там столько различных функций, сравнений, что начинаю запутываться и сбиваться. Также ставил бряк на DestroyWindow, тоже не разобрался. Думаю теперь попробовать поставить бряк на функцию, которая отключает кнопку, но не знаю какая функция API за это отвечает (В C++ Builder это Button1->Disabled). В Help’е по API нашел только EnableWindow, но при этом надо знать хэндл окна.
Помогите мне, пожалуйста, хорошим советом. Может на какую-либо другую функцию можно поставить брейкпоинт, чтобы было легче разобраться в S-Ice; может на какие-нибудь команды в S-Ice нужно обращать внимание, а на остальные нет.
Поделитесь опытом, эксперты. Вы ведь наверняка этим занимались не раз.
P.S. Только не ругайте меня за такую просьбу, а просто не отвечайте! Я ведь Вас не прошу ее взломать за меня, а только помочь хорошим дельным советом. Просто очень нужна эта прога!
Заранее Вас всех благодарю!



Вопрос отправлен: 07.03.2003, 14:27
Отправитель: Эдуард (ed666@rol.ru)

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

Отвечает Bob Johnson

Здравствуйте, Эдуард!
1. Сходи на astalavista.box.sk и поищи кряк.
2. Если не найдешь, то придется самому что-то делать. EnableWindow - это именна та функция, которая тебе нужна. Хэндл окна для начала можешь взять из WinSight (идет в поставке CPP Builder или delphi) и потом попробовать не закрывая ту прогу запустить свою, в которой сделать EnableWindow (Handle, true) и посмотреть, даст ли это что-либо. Если нет, то тогда SoftIce... Если да, то можешь написать прогу, которая запускает эту, ждет ее инициализации (WaitForInputIdle), находит ее главное окно (FindWindow), находит кнопку (GetWindow), делает ее доступной (EnableWindow) и нажимает ее же (SendMessage WM_LBUTTONDOWN, WM_LBUTTONUP)...


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


Отвечает Kostyan

Приветствую Вас, Эдуард!
Если Вам нужен серийный номер, то
http://softaz.hop.ru/cgi-bin/yabb/YaBB.cgi?board=news;action=display;num=1039579372

Ответ отправлен: 07.03.2003, 21:30
Отправитель: Kostyan


Отвечает masquer

Добрый день, Эдуард!
Во-первых, с чего ты взял что кто-то этим занимался? Или каждый знающий ассемблер априори кракер, хакер и т.д. и т.п.? Во-вторых, советовать что-то и делиться опытом? Ну, опытом точно не поделюсь, а посоветовать - если сильно хочеться именно самому сломать, изучай код, смотри как компилятор его строит, наберешься опыта и сам сможешь отличать "зерна от плевел". А если хочешь просто программу получить - то путь тебе прямиком на китайские варезные сайты. Гугл по слову ретейл и акронис выдаст все, что тебе нужно...

Ответ отправлен: 07.03.2003, 16:39
Отправитель: masquer


 Вопрос № 2728

Я хочу налабать типа своего дизассемблера. Всё б нормально, но у меня нет кодов команд MMX, ExtMMX, SSE, SSE2, 3DNow! Ext3DNow! Где их можно взять? А заодно и, если можно, их хотя бы краткое описание, можно даже на Инглиш.



Вопрос отправлен: 07.03.2003, 16:30
Отправитель: Algebra (algebra@gala.net)

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

Отвечает Bob Johnson

Приветствую Вас, Algebra!
Ну тогда welcome to developer.intel.com...


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


Отвечает Gibbel

Приветствую Вас, Algebra!
Взять их можно на сайтах производителей процессоров: AMD и Intel.

Ответ отправлен: 07.03.2003, 16:46
Отправитель: Gibbel


Отвечает Joy

Приветствую Вас, Algebra!
Наверное мой ответ будет не оригинален, но:
1. www.intel.ru
2. www.amd.ru
Там есть что-то на русском, но большенство на англицком.

Ответ отправлен: 10.03.2003, 09:47
Отправитель: Joy


 Вопрос № 2729

Всем привет .
Хотелось бы в вашей рассылке поблагодарить Bob Johnson за ответ на мой вопрос 2678 . Ответ был очень содержателен . Большое спасибо .
Сергей



Вопрос отправлен: 07.03.2003, 23:13
Отправитель: Sergey (fot_sergey@mail.ru)

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

Отвечает Bob Johnson

Здравствуйте, Sergey!
В моей практике встречалось очень много современных плат от abit с такой неисправностью. Практически все после замены конденсаторов начинали работать нормально. У тебя та же проблема?


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


 Вопрос № 2730

Доброе вретя суток уважаемые эксперты.
Есть ли еще какие нибудь отличия между
командами pusha и pushad кроме того что pusha заносит в
стэк 16 битные регистры, а pushad 32 битные.



Вопрос отправлен: 07.03.2003, 23:58
Отправитель: Alexandr

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

Отвечает Bob Johnson

Приветствую Вас, Alexandr!
Нет... А что, этого мало?


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


Отвечает Dark_Lord

Добрый день, Alexandr!
нет, только если из 16битного сегмента 32битную команду или 32битного сегмента 16битную команду выполняешь, то на один байт больше занимает и на 1 такт дольше выполняется.

Ответ отправлен: 08.03.2003, 16:30
Отправитель: Dark_Lord


Отвечает Ayl

Доброе время суток, Alexandr!
В принципе, никаких. Различия в разрядности сохраняемых регистров и в изменении значения регистра SP (ESP). У этих команд даже код операции один и тот же - 60h.

Ответ отправлен: 11.03.2003, 13:07
Отправитель: Ayl


 Вопрос № 2731

Добрый час! Windows. У Зубкова в начале оконной процедуры win_proc создаётся стековый кадр. Вопросы: 1. Что это такое? 2. Зачем push EBP, mov EBP,ESP, не легче ли сразу через ESP адресовать? 3. Почему такая странная адресация? Если условно принять вершину стека(EBP) за 16, то когда положим в стек 4 параметра DWORD, ESP будет равно 0. Тогда почему начинаем сразу с [EBP+08h](идентификатор окна - первый параметр), хотя нужно вроде бы [EBP], [EBP+04] и т.д. Спасибо!



Вопрос отправлен: 08.03.2003, 01:29
Отправитель: ROCK

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

Отвечает Bob Johnson

Приветствую Вас, ROCK!
Стековый кадр - это место под локальные переменные и параметры процедуры.
2. ESP в процессе выполнения процедуры может измениться (если ты push сделаешь, чтобы, например, сохранить значение на время), это не очень удобно.
3. Потому что в стеке лежат следующие значения: по ebp лежит старое значение ebp (вспомни вначале push ebp), затем (ebp + 4) идет адрес возврата, а уже затем (ebp + 8) - первый параметр. А ниже ebp располагаются локальные переменные.


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


Отвечает Dark_Lord

Добрый день, ROCK!
Стековый кадр нужен для достижения параметров заданных через стек, использовать ebp удобно тем, что esp постоянно изменяется, тоесть в циклах переменные, заданные через стек использовать не получится. По остальному смотри приложение, думаю поймёшь, если нет пиши на Dark_Lord@RusFAQ.ru, постараюсь подробней объяснить!

Приложение:

Ответ отправлен: 08.03.2003, 16:38
Отправитель: Dark_Lord


Отвечает Gibbel

Доброе время суток, ROCK!
На первый вопрос тебе уже максимально подробно ответил Dark_Lord, так что повторяться не буду... ;-)
2. ESP постоянно меняется в процессе работы программы, когда ты сохраняешь что-нить в стек/вызываешь подпрограммы, поэтому тебе придется постоянно пересчитывать смещения относительно ESP, что неудобно. (VC++ при компиляции очень часто строит код, который адресуется через ESP - разбирать его просто ужас...)
3. Если ты используешь комбинацию push ebp mov ebp,esp, то в стеке значения располагаются следующим образом:
dword ptr [ebp] == старое значение ebp
dword ptr [ebp+4] == адрес возврата из подпраграммы (следующий байт за коммандой call)
dword ptr [ebp+8] == первый параметр...
Соответственно, если не сохранять EBP или адресоваться через ESP, то картина будет несколько иной...

Ответ отправлен: 10.03.2003, 12:37
Отправитель: Gibbel


Отвечает Ayl

Добрый день, ROCK!
1. Стековый кадр - это понятие ЯВУ при обращениях к процедурам. Он включает в себя передаваемые параметры, адрес возврата и локальные переменные.
2. Адресовать через ESP не проще, т.к. значение регистра ESP может довольно свободно изменяться для сохранения данных в стеке и т.п., что может вызвать необходимость пересчета смещений параметров в стеке. При фиксации адреса стекового кадра с помощью EBP мы гарантируем неизменность этих смещений. В результате становится возможным определение параметров/локальных переменных с помощью конструкции EQU.
3. А про адрес возврата ты забыл? Что происходит при вызове процедуры:
0. EPS -> ...
1. помещение параметров в стек (например, 4 DWORD'а):
ESP -> DWORD4
+4 -> DWORD3
+8 -> DWORD2
+12 -> DWORD1
2. call Procedure:
ESP -> return address
+4 -> DWORD4
+8 -> DWORD3
+12 -> DWORD2
+16 -> DWORD1
3. push EBP:
ESP -> EBP
+4 -> return address
+8 -> DWORD4
+12 -> DWORD3
+16 -> DWORD2
+20 -> DWORD1
4. mov EBP, ESP:
EBP, ESP -> EBP
+4 -> return address
+8 -> DWORD4
+12 -> DWORD3
+16 -> DWORD2
+20 -> DWORD1
Надеюсь, вот так понятно, что происходит и почему первый параметр - EBP+8.


Ответ отправлен: 11.03.2003, 13:23
Отправитель: Ayl



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (34)
C / C++ (28)
Perl (6)
Delphi (14)
Pascal (19)
Basic / VBA (10)
Java / JavaScript (10)
PHP (7)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (25)
"Железо" (29)
Поиск информации (14)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (13)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (4)

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




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

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


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

В избранное