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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 104

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-09-27


Вопрос №1000

День добрый!
У меня такой вопрос:
могу ли я контролировать выходы, например, LPT порта, т.е. подавать определённое напряжение на определённые контакты?
И как это сделать?

Ответ

Здравствуйте, Виталий!
Для LPT порта можно задавать логические значения выходных сигналов на шине данных (8 выходов) и ещё на четырех управляющих линиях (через порты вывода). Произвольное напряжение на одном контакте, чисто программными средствами, задать нельзя. Однако, если использовать дополнительную схему (например, на резисторах), то можно, используя несколько выходных линий, задавать дискретные значения выходного напряжения (дискретность определяется количеством задействованных линий - чем больше линий, тем более непрерывно можно менять напряжение). Таким образом работает, например, Covox (устройство воспроизведения звука через LPT-порт). Похожая схема может быть использована и "на вход".


Отправил эксперт: AVC
Эксперт отправил ответов (всего): 11

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1008

Уважаемые эксперты!
Знаю что нельзя это писать но ОЧЕНЬ надо. Она ведь маленькая (прога) ну очень надо.
ПАМАГИТЕ написать прогу на асеме. Очень срочно надо ГАРЮ!!!!!
Прога конечно ламерская, но я не въезжаю.
---------------------------------------------------------------
Составте прорамму на языке ассемблер, задайте в старшем байте
суммарный возраст всех мужчин в вашей семье("60"), а в младшем
суммарный возраст всех женщин в семье("50"). Если число в старшем
байте окажется не меньшим числа в малдшем байте, то в младшем байте
значение всех четных битов замените на противоположные, иначе
старший байт сдвинте циклически влево на два разряда без учёта
флажка переноса.
момогите бедному студенту.

Ответ

Ну что, влип? студент...
Ну держи, раз горишь - я б написал твою лабу именно так.
p.s. единственное что... четные биты - я брал 0,2,4,6... препод если дубовый попадется, то может придраться и загрузить, что нада было 2,4,6,8, ты главное ему уверенно втирай, что существует нулевой бит ну и т.п.

Приложение:


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 164

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1011

Не подскажите что надо сделать, чтобы какой-либо резидент постоянно автоматически запускался при входе в ДОС?

Ответ

Здравствуйте, Speedy Gonsalez!

Запиши его в autoexec.bat или в config.sys
Эх, молодеж, молодеж... :)


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 140

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1011

Не подскажите что надо сделать, чтобы какой-либо резидент постоянно автоматически запускался при входе в ДОС?

Ответ

Здравствуйте, Speedy Gonsalez!
Я делал так:
Сделал для Command.com ярлык
В свойствах, на закладке Программа в поле Пакетный файл прописываешь
имя бат-файла. А в этом батнике прописываешь те программы, которые тебе надо запустить (сам Command.com прописывать не надо)


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 159

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1013

Здравствуйте эксперты.
Хочу обновить BIOS,хотя сам не знаю зачем.Так вот,где пишится версия Bios.Когда загружается комп пишет Award Modular BIOS v.4.51PG.Но в SISoft Sandra он пишет BOIS version 6.00PG.Чему верить?Да вообще зачем его обновлять,что хорошего (или плохого) это даст.Если можно то по подробнее.Чуть не забыл самое главное,как его обновлять и последствия.Спасибо.

Ответ

Здравствуйте, Max!
В качестве эксперта выступаю впервые... Так что попытаюсь ответить предельно кратко и ясно. :-))
1. Версия БИОС пишется при загрузке. Сисофту я бы не поверил... Полагаюсь на старые проверенные способы...
2. Обновляетб БИОС надо, если железо конфликтует с мамой (так, кажется, но это не последняя причина обновления...) Т.Е. Просто не желает работать, но работает с ошибками.
3. И, на последок, чуть не забыл... Об обновлении биос как правило написано в описании к материнской плате. Если последнего не наблюдается, то надо зайти на сайт производителя матери и скачать описание, а также файл - обновление биос.
Если мать не старая, то обновление обычно не такой сложный процесс.
"Скачанный файл перепишите на дискету, перезагрузитесь в ДОС и запустите его. Настоятельно не рекомендуется выключать питание компутера во время обновления..."... Это из описания к моей АОпен 440bx.



Отправил эксперт: Anvar
Эксперт отправил ответов (всего): 1

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1011

Не подскажите что надо сделать, чтобы какой-либо резидент постоянно автоматически запускался при входе в ДОС?

Ответ

а не подскажете ли вы, чем в данном случае, резидент отличается от простой проги??? если это драйвер, то тода в конфиге, еси просто прога-резидент, то тода в автоэкзеке, вообще вопрос какой-то странный...


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 165

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1013

Здравствуйте эксперты.
Хочу обновить BIOS,хотя сам не знаю зачем.Так вот,где пишится версия Bios.Когда загружается комп пишет Award Modular BIOS v.4.51PG.Но в SISoft Sandra он пишет BOIS version 6.00PG.Чему верить?Да вообще зачем его обновлять,что хорошего (или плохого) это даст.Если можно то по подробнее.Чуть не забыл самое главное,как его обновлять и последствия.Спасибо.

Ответ

Здравствуйте, Max! Во-первых, СиСофт Сандра вообще много чего пишет (частоту памяти 133 вместо 100, производитель мамы вообще какой-то GigaByte хотя черным по белому написано Polaris...) ну да ладно. Короче, не верь подобным прогам, хотя в 90% случаях они правы. Во-первых, BIOS должен быть типа Flash. Почему-то везде кричат, что щас на всех материнах Flash-BIOS-ы; - не знаю как это с первого взгляда определить, но у меня и на 90% машин что я видел были ROM BIOS-ы - в такие уже ниче не заткнешь...
Зачем это нужно? нужно, и даже очень... например, если у тебя ДАЖЕ навороченный ASUS P2B, видит ВСЕ что другие мамки даже не слышат, никто ни с кем не конфликтует, держит сверхчастоты и даже не потеет - вообщем, самая навороченная года 1,5 - 2 назад... но!!!!! винтик больше 32 Gb не видит почему-то... и так его суешь, и этак перемычками тыкаешь, шлейфики один за другим, одним словом начинаешь нервничать и потеть... в чем дело??? а! БИОС то какого годочка??? 1999????... все. придется лезть в инет за обновами.
это самое распространенное применение "обновам". Еще если у тя в инструкции по материне (как у меня) написано, что мать держит не больше 500 пня... ну не вышел тогда еще 600!!!! и мать его действительно не увидит... опять в инет-за обновами.
Как обновлять? Нада два файла: XXXXXXXX.bin (тут вся инфа, которую ты собираешься прошить) и непосредственно какой-нить awardud.exe - чем ты будешь прошивать. Где взять?? как правило, www.ИмяПроизводителяМатеринки.com. В инструкции по применению к этому самому awardUD.exe где нада и где ненада, да и на самом сайте, красным двадцатым шрифтом заявляют, что НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ПОСЛЕДСТВИЯ, ВСЕ НА СВОЙ СТРАХ И РИСК, ЕСЛИ ДЕЙСТВИТЕЛЬНО НЕТ НЕОБХОДИМОСТИ, ТО ЛУЧШЕ И НЕ ПЫТАЙТЕСЬ и пр. Вообще, как мне кажется, опасность действительно существует, но не такого грандиозного масштаба, как кричат - просто если скаканет конкретно напряжение, когда "БИОС уже на 90% перепрошился" или вообще отрубят свет, то матери, прямо скажу, абзац... ну че ты с ней будешь делать??? выпаивать микросхемку БИОС-а и впаивать новую???
вообще я только один раз чето решил обновить себе БИОС, тоже так как и ты, "сам не знаю, зачем", достал заветные файлики, перезагрузился, запустил с довольной рожей awardUD.exe, сохранил (якобы) старую прошивку БИОС-а и...... конкретно припал кое на что - комп мертвым грузом повис... reset жать ужас как неохота. осторожно и быстро с перепугу ткнул ctrl-alt-del - никакого эффекта... ну думаю, все. Все мероприятия на месяц отменены... зашарил по комнате глазенками чеб такого на радиобазаре толкнуть... взгляд замер на пыльном видике под кроватью, как щас помню...
кароче, втыкал, втыкал и ткнул в reset... монитор погас и... заветный award BIOS 4.51PG засиял на экране. это был первый раз, когда я так радовался зеленой табличке Energy в углу...
как я потом дорубил, ниче и не могло произойти, у мя не Flash BIOS и вообще чето я расписался сегодня... ладно, пора прощаться...
... Последствия могут быть самыми ужасающими!!! ж)


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 166

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1008

Уважаемые эксперты!
Знаю что нельзя это писать но ОЧЕНЬ надо. Она ведь маленькая (прога) ну очень надо.
ПАМАГИТЕ написать прогу на асеме. Очень срочно надо ГАРЮ!!!!!
Прога конечно ламерская, но я не въезжаю.
---------------------------------------------------------------
Составте прорамму на языке ассемблер, задайте в старшем байте
суммарный возраст всех мужчин в вашей семье("60"), а в младшем
суммарный возраст всех женщин в семье("50"). Если число в старшем
байте окажется не меньшим числа в малдшем байте, то в младшем байте
значение всех четных битов замените на противоположные, иначе
старший байт сдвинте циклически влево на два разряда без учёта
флажка переноса.
момогите бедному студенту.

Ответ

Здравствуйте, Владимир!
На кусочек (всё писать влом и вобще я спать хочу, так что прога не опробированная).

Приложение:


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 140

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1014

Написал резидент по выводу звёздочек место символов на экране, но не выводятся пробелы, одни звёздочки.
Пробелы я с Cmp-ерил на вывод на экран без замены на звёздочку, но они не выводятся. Вот код:
.286
CSEG segment
org 100h
Start:
jmp Init
Timero proc
cli
pusha
push ds
push es
push 0B800h
pop es
push 0B800h
pop ds
xor di,di
xor si,si
mov cx,2000
mov ah,1Fh
Next_s:
lodsb
cmp al,32
je Stoswo
mov al,2Ah
Stoswo:
rep stosw
pop es
pop ds
popa
sti
jmp dword ptr cs:[tim_pr]
tim_pr dd ?
Timero endp
Init:
mov ax,351Ch
int 21h
mov word ptr tim_pr,bx
mov word ptr tim_pr+2,es
mov ax,251Ch
mov dx,offset Timero
int 21h
mov dx,offset Init
int 27h
CSEG ends
end start

Ответ

Здравствуйте, Speedy Gonsalez!
Лажа полная! rep перед stosw убери. Читай не lodsb а lodsw. в cx помести 4000 (2000 на чтение, 2000 на запись, раз уж ты так пишешь, хотя лучше когда не изменяешь вообще не выводить, че время тратить). Ну и возвернись после stosw'а джампом каким нибудь


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 142

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1017

Уважаемые эксперты, подскажите, какой командой в АСМе выводить на экран двоичное число (BCD) например из регистра
AX . Заранее спасибо!

Ответ

Здравствуйте, niceman!
Чувак! Это тебе не BASIC! тут думать надо. Ну нет в асме команды что бы вообще чегото на экран вывести. Как реализуешь так и будет работать!


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 143

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1017

Уважаемые эксперты, подскажите, какой командой в АСМе выводить на экран двоичное число (BCD) например из регистра
AX . Заранее спасибо!

Ответ

Здравствуйте, niceman!
Вывести число на экран не так то и просто и в асме нет такой команды.
Например чтобы вывести 1 нужно прибавить к этому значению 32h


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 2

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1003

Здравствуйте эксперты.
Мой вопрос, а точнее вопросы такие:
1.Давно хотел иметь свои рамки в своих программах, но столкнулся с такой проблемой, маска символа для 11h функции 10h прерывания имеет ширину 8 бит, а видюшка риcует символы как 9-битные, так как мне установить 9-е биты в маске в неужные мне значения или как мне заставить видюшку выводить 8-битные символы?
2.Где можно скачать наиболее полное описание WinAPI на русском? Cам искать пробовал, но везде по капле :(((
3.Встретил вот такое описание макроса:
macro MessageVector message1, message2:REST
IFNB
dd message1
dd offset @@&message1
@@VecCount = @@VecCount + 1
MessageVector message2
ENDIF
endm MessageVector
Что означает REST?

Ответ

Здравствуйте, Serzh!

Отвечу на первый вопрос:

1) Для символов 192-223 9-ая колонка идентична 8-ой (VGA её дублирует)
2) Можно использовать процедурку (см. приложение)

Приложение:


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 123

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1012

Такой вот вопрос.
В win32SDk описаны функции: copymemory,fillmemory,movememory и zeromemory.
Но MASM на них ругается, в kernell32.dll и MASMовских библиотеках я их не нашел.
Это как?
Очень "интересные функции".

Ответ

Здравствуйте, ilya!

Насколько мне известно, это не API-шные функции, а функции стандартной
сишной библиотеки (как, например, printf). Поэтому в АСМе ими пользоваться нельзя.

Зато, вместо них существуют такие команды ассемблера как:


rep movs? = copymemory
ESI = откуда копировать
EDI = куда копировать
ECX = сколько копировать
rep stos? = fillmemory
EDI = куда записывать
AL/AX/EAX = что записывать
ECX = сколько записывать


? = b, w или d (Byte, Word или Dword)


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 125

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №1012

Такой вот вопрос.
В win32SDk описаны функции: copymemory,fillmemory,movememory и zeromemory.
Но MASM на них ругается, в kernell32.dll и MASMовских библиотеках я их не нашел.
Это как?
Очень "интересные функции".

Ответ

Здравствуйте, ilya!

В Win32 API таких функций нет. Эти функции описаны и реализованы только в библиотеке компилятора (C/C++, Delphi).


Отправил эксперт: $erge$
Эксперт отправил ответов (всего): 4

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №1014

Написал резидент по выводу звёздочек место символов на экране, но не выводятся пробелы, одни звёздочки.
Пробелы я с Cmp-ерил на вывод на экран без замены на звёздочку, но они не выводятся. Вот код:
.286
CSEG segment
org 100h
Start:
jmp Init
Timero proc
cli
pusha
push ds
push es
push 0B800h
pop es
push 0B800h
pop ds
xor di,di
xor si,si
mov cx,2000
mov ah,1Fh
Next_s:
lodsb
cmp al,32
je Stoswo
mov al,2Ah
Stoswo:
rep stosw
pop es
pop ds
popa
sti
jmp dword ptr cs:[tim_pr]
tim_pr dd ?
Timero endp
Init:
mov ax,351Ch
int 21h
mov word ptr tim_pr,bx
mov word ptr tim_pr+2,es
mov ax,251Ch
mov dx,offset Timero
int 21h
mov dx,offset Init
int 27h
CSEG ends
end start

Ответ

Здравствуйте, Speedy Gonsalez!
Во-первых пользуйся для загрузки в память 31h,
А во вторых повторное обнуление si и di не производится. И представь у тебя сколько раз в секунду должна тикать программа она должна висеть.


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 3

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1010

Добрый день эксперты!
Скажите, реально поломать игру с использованием отладчика?
К примеру она проводит сканирование диска а ты взял и кракнул ее! Если я не прав то как эта система происходит в реале?

Ответ

Здравствуйте, Alex!
Например так дебагишь ее и доходишь до строчки типа
cmp x,y
je exit
так вот подставляешь вместо x или y значение, чтобы выхода не было.
Ну это простейший пример.
Или например je exit так вот меняешь длину перехода и все.
А вообще все зависит от системы защиты.


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 5

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1013

Здравствуйте эксперты.
Хочу обновить BIOS,хотя сам не знаю зачем.Так вот,где пишится версия Bios.Когда загружается комп пишет Award Modular BIOS v.4.51PG.Но в SISoft Sandra он пишет BOIS version 6.00PG.Чему верить?Да вообще зачем его обновлять,что хорошего (или плохого) это даст.Если можно то по подробнее.Чуть не забыл самое главное,как его обновлять и последствия.Спасибо.

Ответ

Здравствуйте, Max!

BIOS нужно обновлять только в том случае, если у Вас не работает какая-то новая аппаратура, например, диск большой или видеокарта. Причем нужно быть точно уверенным, что в этом виноват BIOS. Это единственная причина, по которой стоит дергаться. Версия BIOS пишется при старте системы в самой нижней строчке, что то типа:
11/30/2000-i815EP-W83627-6A69RA1NC-WJ
Для каждой модели материнской платы BIOS уникален, попытка прошить BIOS от другой мамки приведет в лучшем случае к тому, что компьютер перестанет грузиться. Любые сбои в процессе записи приводят к тому-же, вам придется выковыривать микросхему BIOS, искать программатор, прошивать туда старый BIOS ... или покупать новую маму. По личному опыту программирования BIOS эта операция ОЧЕНЬ РИСКОВАННАЯ. Соответственно выполнять ее нужно в последнюю очередь, только в том случае, если все другие возможности исчерпаны и доказано, что виноват в проблеме BIOS.


Отправил эксперт: Bitman
Эксперт отправил ответов (всего): 19

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1021

К вопросу 1007или1008
Спасибо всем за программу!
НО!!!
При асемблировании masm.exe mmm.asm:
.model tiny
.code
org 100h
start:
mov ah,60
mov al,50
cmp ah,al
jnl then
shl ah,2
jmp exitx
then:
xor al,01010101b
exitx:
ret
end start

Выдаёт mmm.asm(9): error A2070: invalid instruction operands
(2) что такое: .model tiny
.code

Ответ

Здравствуйте, Владимир!

Сдвиг более чем на 1 байт работает на процессорах начиная с двушки.
поставь в начале программы
.286


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 141

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1022

Когда-то был вопрос, почему две планки памяти работают медленнее чем 1
Так вот самая точная инфа: В TX кешируется все нормально, это VX чипсет кеширует 64 Мб памяти. Глюка в другом: Контроллеры в чипсетах TX ZX BX поддерживают две(!) банки памяти, остальные спаренные! Спареные 1 со 2 и 3 с 4. Поэтому если в 1 и 2 банке стоит память PC133, результирующая ее частота 133/2 = 66 МГц!
Соответственно совет - ставить память в 1 и 3 слот-тогда все ок.

Ответ

Здравствуйте, Sensey!
Да, привет всем! (а то только мне - невежливо вроде:))
Опять че-нибуть написать, чтобы попало в рассылку:)
Кстати, опять не нашел вопроса, но помню что был: По поводу Prity Check Error памяти
1.Память надо ставить одинаковую, скоррее всего здесь собака порылась
Если даже разная, в биосе надо поставить самый щадящий режим-время доступа 70 нс, остальные параметры тоже побольше. Если заработает, тогда пробовать уменьшать...


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 161

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1019

предыдущий мой вопрос был под номером 991.Бальшое спасиба всем, кто ответил. Вопрос о подвисании компа в инете. Все дружно посоветовали избавиться от милениума. Избавился - не помогло!!!:-((. Касперский ничЈ не нашЈл. Вопрос - как жить дальше?:-)))

Vik

Ответ

Здравствуйте, vik!
Тут, возможно, несколько причин...
Для их устранения понадобится телефон и инет минут на 10.
1. Если пользуетесь одним и тем же провайдером, то возможно, проблема там. Обратитесь в службу тех. поддержки своего прова и у них узнайте. Так же Вы можете просто поменять провайдера... Попробуйте другого...
2. Закачать свежие драйвера на модем на сайте производителя.
Кажется, всё... Надеюсь, поможет.


Отправил эксперт: Anvar
Эксперт отправил ответов (всего): 2

Экспертная группа: Модели, виды и типы компьютеров (hard)

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное