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

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


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

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

Выпуск N 095

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

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


Вопрос №890

Привет всем.
Уважаемые эксперты у меня к вам такой вопрос, когда я подключаюсь к другому копьютеру (по модему), по протоколу TCP/IP в общем все нормально,но меня интересует другое, этот компьютер является сервером локальной сети (12 компов) как мне подключится к другим компам то есть залесть на их жеский диск через сервер, причем все пароли мне известны.
Как можно чтобы через удаленку запустить прогу на другом компьютере?

Ответ

Здравствуйте, Алексей!
Есть прога неплохая - Transmitter Lite! Вот емайл автора: vitaliy@thunder.nht.ru
Через интернет - по адресу http://thunder.nht.ru ! ВОТ!


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

Экспертная группа: Пользовательская работа с Windows

Вопрос №890

Привет всем.
Уважаемые эксперты у меня к вам такой вопрос, когда я подключаюсь к другому копьютеру (по модему), по протоколу TCP/IP в общем все нормально,но меня интересует другое, этот компьютер является сервером локальной сети (12 компов) как мне подключится к другим компам то есть залесть на их жеский диск через сервер, причем все пароли мне известны.
Как можно чтобы через удаленку запустить прогу на другом компьютере?

Ответ

Здравствуйте, Алексей!
По скольку мне известно это можно сделать под ОС UNIX (Linux), а под виндой ты этот файл скачаеш и запуститься он у тебя, а не на той машине :)


Отправил эксперт: Digger (www.digger-mib.chat.ru - Домашняя страничка)
Эксперт отправил ответов (всего): 1

Экспертная группа: Пользовательская работа с Windows

Вопрос №898

Уважаемые эксперты.
Прошу Вас рассказать о DTA, который расположен в PSP по смещению 80h. Объянсю свою настойчивость. Коваль Игорь Михайлович в своей книге «КАК НАПИСАТЬ КОМПЬЮТЕРНЫЙ ВИРУС» при нахождении файла при помощи функции 4eh узнает имя этого файла и его размер в DTA. Поэтому я и прошу рассказать вас о его структуре.
З.Ы.: Один эксперт ответил мне, что DTA нужно при работе с FCB. Хочу отметить, что с файлами работается в книге через описатели.

Ответ

Здравствуйте, Kiran!
Скорре всего тебе надо знать о PSP
см. Приложение
На русский впадлу переводить, в связи в Днем пива В Харькове(всех поздравляю!)
Думаю разберешься

Приложение:


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

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

Вопрос №898

Уважаемые эксперты.
Прошу Вас рассказать о DTA, который расположен в PSP по смещению 80h. Объянсю свою настойчивость. Коваль Игорь Михайлович в своей книге «КАК НАПИСАТЬ КОМПЬЮТЕРНЫЙ ВИРУС» при нахождении файла при помощи функции 4eh узнает имя этого файла и его размер в DTA. Поэтому я и прошу рассказать вас о его структуре.
З.Ы.: Один эксперт ответил мне, что DTA нужно при работе с FCB. Хочу отметить, что с файлами работается в книге через описатели.

Ответ

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

Префикс программного сегмента обеспечивает каждую программу 128-байтным встроенным DTA, начиная со смещения 80H и до 9FH. Программа может использовать его при нехватке памяти. Первоначально указатель на DTA указывает именно на этот буфер, поэтому если программа будет использовать его, то нет нужды устанавливать указатель. Этот буфер по умолчанию особенно удобно использовать с COM файлами, где DS указывает на начало префикса программного сегмента. Для файлов EXE может потребоваться небольшой добавочный код, чтобы использовать DTA по умолчанию.
Структура DTA.
Смещение Длина Содержимое в DTA
+00h 15h резервируется (используется в последующих вызовах 4fH Find Next)
+15h 01h атрибут файла для найденного файла
+16h 02h время создания/модификации в формате filetime
+18h 02h дата создания/модификации в формате filetime
+1ah 04h размер файла в байтах в формате DWORD
+1eh 0dh 13-байтовое ASCIIZ имя: "filename.ext",0
+2ch требуемый размер буфера

Формат FileTime:

7 6 5 4 3 |2 1 0 7 6 5 |4 3 2 1 0

часы (0-23) минуты (0-60) 2-секундные единицы (0-30)

7 6 5 4 3 |2 1 0 7 6 5 |4 3 2 1 0

год (1-119) месяц (1-12) день (1-31)

Примечание: после извлечения года к нему необходимо прибавить 1980.




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

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

Вопрос №895

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

После ответа на вопрос №881 попытался реализовать прог-му, но т.к. изучаю АСМ не продолжительное время возникли проблемы, вообщем есть ли ошибки и как дальше:
CSEG segmnt
org 100h
Begin:
mov dx,offset Ms_1
call Out_string
call Wait_key

mov ah,02h
int 1Ah
push cx
push dx

call Out_string
call Wait_key
mov ah,02h
int 1Ah
;как вычислить разность?
......

int 20h
Out_string proc
mov ah,9h
int 21h
ret
Out_string endp

Wait_key proc
mov ah,10h
int 16h
ret
Wait_key endp
Ms_1 db 'Press the key...$'
CSEG ends
end Begin

PS:прог-ма высчитывает время между двуя нажатыми клавишами.

Ответ

Здравствуйте Anton!
Вот прога, запускаешь, 2 раза нажимаешь, получаешь скока секунд прошло. Если прошло больше минуты - облом!!! Если тебе очень нада, то напишу с часами, минутами и секундами. Но тебе ведь не очень нада, верно?? ж)
з.ы. уважаемые... вопрошатели!!! задавайте свой вопрос ВСЕЙ ЭКСПЕРТНОЙ ГРУППЕ, а не адресуясь к конкретным ее обитателям, мы все одна команда ;), ато некрасиво как-то...

Приложение:


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

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

Вопрос №898

Уважаемые эксперты.
Прошу Вас рассказать о DTA, который расположен в PSP по смещению 80h. Объянсю свою настойчивость. Коваль Игорь Михайлович в своей книге «КАК НАПИСАТЬ КОМПЬЮТЕРНЫЙ ВИРУС» при нахождении файла при помощи функции 4eh узнает имя этого файла и его размер в DTA. Поэтому я и прошу рассказать вас о его структуре.
З.Ы.: Один эксперт ответил мне, что DTA нужно при работе с FCB. Хочу отметить, что с файлами работается в книге через описатели.

Ответ

Здравствуйте, Kiran!
Ну ведь рассказывал же уже, скока можна!!!
+00h: ASCII код буквы диска (бит7: диск - сетевой)
+01h: маска поиска (без пути)
+0Сh: атрибуты для поиска
+0Dh: порядковый номер файла в директории
+0Fh: номер кластера начала внешней директории
+11h: резерв
+15h: атрибут найденного файла
+16h: время создания файла в формате дос
+18h: дата создания файла в формате дос
+1Ah: размер файла
+1Eh: ASCIZ-имя найденного файла с расширением


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

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

Вопрос №897

Люди Кому не впадло прешлите текст проги резидентных часов katrin_viktor@ukr.net

Ответ

Здравствуйте, viktor!
мне впадло, но я все равно шлю.

Приложение:


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

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

Вопрос №899

Уважаемые эксперты.
Прошу Вас СКАЖИТЕ КАК УЗНАТЬ IP–АДРЕС ХОТЯ БЫ ЧЕРЕЗ DLL’ки(программно). Укажите название функции и ее формат (перечень вводимых параметров(желательно с пояснениями) и параметры при выходе). Или по крайне мере ссылки где можно задать подобные вопросы.

Ответ

Здравствуйте, Kiran!
Посмотри здесь описание WIN32_API на русском !!!
http://nikolayam.narod.ru/
Архив 220КБ


Отправил эксперт: Digger (www.digger-mib.chat.ru - Домашняя страничка)
Эксперт отправил ответов (всего): 2

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

Вопрос №894

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

После ответа на вопрос №881 попытался реализовать прог-му, но т.к. изучаю АСМ не продолжительное время возникли проблемы, вообщем есть ли ошибки и как дальше:
CSEG segmnt
org 100h
Begin:
mov dx,offset Ms_1
call Out_string
call Wait_key

mov ah,02h
int 1Ah
push cx
push dx

call Out_string
call Wait_key
mov ah,02h
int 1Ah
;как вычислить разность?
......

int 20h
Out_string proc
mov ah,9h
int 21h
ret
Out_string endp

Wait_key proc
mov ah,10h
int 16h
ret
Wait_key endp
Ms_1 db 'Press the key...$'
CSEG ends
end Begin

PS:прог-ма высчитывает время между двуя нажатыми клавишами.

Ответ

Здравствуйте, Anton!
Зря используешь функцию №2 - лучше используй №0 того же прерывания, она в паре CX:DX возвращает кол-во тиков сист. таймера (18 тиков в секунду)
CSEG segment
org 100h
Begin:
mov dx,offset Ms_1
call Out_string
call Wait_key

xor ax,ax;№0
int 1Ah
mov dx,ticks;кол-во секунд * 18 с момента включения компьютера (сброса таймера)

call Out_string
call Wait_key
xor ax,ax
int 1Ah
sub dx,ticks
в dx - кол-во тиков между нажатиями клавиш

int 20h
Out_string proc
mov ah,9h
int 21h
ret
Out_string endp

Wait_key proc
mov ah,10h
int 16h
ret
Wait_key endp
Ms_1 db 'Press the key...$'
ticks dw ?
CSEG ends
end Begin


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

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

Вопрос №901

Здравствуйте!! у меня вопроc для Sensey'я:
Если память состоит из параграфов по 16 байт, то в 32мб опреативки их получается 1024*1024*32/16=2097152 параграфов.
Сегмент может занимать любое количество параграфов от 1 до 4096 (65536байт/16=4096пар.). Как тогда проц адресует такое большое количество памяти, сегмент может занимать лишь 1 параграф = 16 байт, а проц может адресовать лишь 16^4*16 байт =1мб оперативки. Заранее спасибо...

Ответ

Здравствуйте, Allegiance!
Я наверное плохо рассказал...
См. Приложение-кусок текста от Тома Свана


Приложение:


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

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

Вопрос №889

Простите за каламбур в прошлом вопросе, действительно это был регистр DL, глупо получилось=)))
Вобшем вопрос у меня такой:
Metka1 proc
push ax
push bx
ret
Metka1 endp
После команды ret произойдет операция анологичная
pop ax ;
pop bx ;в данном случае???
Тоесть можно не писать так (если он сам выравнитца):
Metka1 proc
push ax
push bx
pop ax
pop bx
ret
Metka1 endp

Ответ

Здравствуйте, Alex!
Не произойдет. Подтирать за тобой ж.. никто не собирается. Даже так у тебя тоже не получится:
metka1 proc
push ax
push bx
....
ret 4
endp metka1
т.к. в этом случае регистры не востановятся тоже (но в отличие от твоего примера стек будет сбалансирован.


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

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

Вопрос №892

Здравствуйте...
У меня несколько вопросов:
1. Почему когда запускаеш в одном окне отладчик, а в другом дос в
режиме debug, то значения регистров разные?

2. Мое понимание сегментации памяти: Вся память разделена на сегменты
изначально. Когда запускается программа, она загружается в оперативку
и занимает первый попавшийся свободный сегмент. При адресации используется
адрес из 8 шестнадцнеричных цифр (4 на сегмент и 4 на смещение). Можно
сказать что современный (32 разрядный - 32 бита на адресацию) процессор
может оперировать 16^8=4гб оперативки. Программа загрузившись в
опреативку занимает лишь только сколько ей нужно, остальное
же место в сегменте остается свостребованным, но другие программы
использовать его не могут,т.к. сегмент занят. Правильно ли я
понимаю эту тему. Если нет то укажите ошибки или представте подробное
описание сегментации.

3. Зачем нужен 9 бит в байте (контроль на четность), почему нужно
что бы было именно нечетное количество?

С уважением, Allegiace.

Ответ

Здравствуйте, Allegiance!
Ты бы головой думал, а не тем чем обычно... Если у тебя в одной дос сессии одна прога, а в другой другая то почему ты считаешь что у них должны быть общие данные и регистры?!!!! На то он и защищенный режим, что бы каждой задаче выделять свое адресное пространство и всё прочее.


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

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

Вопрос №901

Здравствуйте!! у меня вопроc для Sensey'я:
Если память состоит из параграфов по 16 байт, то в 32мб опреативки их получается 1024*1024*32/16=2097152 параграфов.
Сегмент может занимать любое количество параграфов от 1 до 4096 (65536байт/16=4096пар.). Как тогда проц адресует такое большое количество памяти, сегмент может занимать лишь 1 параграф = 16 байт, а проц может адресовать лишь 16^4*16 байт =1мб оперативки. Заранее спасибо...

Ответ

Здравствуйте, Allegiance!
Можно я отвечу, да? Никто и не спорит, что в реальном режиме процессор может адресовать только 1 Мб памяти (только из-за 20-битной разрядности). В защищенном режиме регистрики то 32-х битные!!! вот и вылазит 4 Gb оперативы...
может быть ты спросишь, почему некоторые проги (особенно игрушки) под ДОС кричат, что им нада минимум 4, 8, 16 Мб??? Так вот заметь, что перед запуском любой такой проги, загружается расширитель DOS (в игрухах чаще всего DOS/4GW), переводит комп в защищенный режим и позволяет работать уже с 32-х (!) битными приложениями. Так что не нада нас путать, уважаемый!

p.s. сегмент - это всегда 4096 параграфов (если ты правильно поделил!); а твоя идея с вариациями - это все равно, что утверждать, что час может состоять из любого количества минут - от 0 до 60 (60/1=60)


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

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

Вопрос №902

Доброе время суток, Эксперты!
У меня здесь еще пару вопросиков появилось:

1)В программе я ввожу данные с клавиатуры. А как мне сделать, чтобы после нажатия на ESC, все что я напечатал, выводилось на экран на следующей строке?

2)Как сделать то же, что и в первом вопросе, только если данные будут вводиться при помощи функции 0ah, прерывания 21?

3)Что такое многопроходная компиляция в TASM?

Влад.

Ответ

Здравствуйте, Влад!
1) Можешь все символы заносить в какую-нибудь переменную(буфер) и сделать проверку на нажатие ESC(скан-код 01h)! При нажатие ESC тебе останется вывести твой буфер на экран и очистить его для новых символов!
2) С 0ah еще проще, буфер по адресу DS:DX(только ты сам должен его определить) будет содержать коды нажатых клавиш, поэтому при нажатии ESC выводи данные из буфера на экран и очищай его!
3)Это, когда компилятор проверяет(компилирует) прогу несколько раз(за несколько проходов), в связи с этим может получиться более маленький код, убирает команды nop и всякий мусор между нужными командами!


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

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

Вопрос №903

Здравствуйте, эксперты.
Не подскажете, как сделать скорость подключения к инету (на диалапе) не больше заданной (знаю, что есть такие ключи в реестре) т.к. всЈ время подключаюсь на 44-48 kbps и ничего не качает, а при подключении на 30-38 всЈ OK.
С уважением
Shorty Dimon.

Ответ

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

Сделать скорость поменьше можно следующим способом: Панель управления -> Модемы; выбираешь модем, щелкаешь "Свойства", там на вкладке "Общие" изменяешь параметр "Наибольшая скорость" на нужную тебе.


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

Экспертная группа: Пользовательская работа с Windows

Вопрос №904

Здравствуйте, эксперты.
Не подскажете, как сделать скорость подключения к инету (на диалапе) не больше заданной (знаю, что есть такие ключи в реестре) т.к. всЈ время подключаюсь на 44-48 kbps и ничего не качает, а при подключении на 30-38 всЈ OK.
С уважением
Shorty Dimon.

Ответ

Здравствуйте, Shorty!
По-моему достаточно в Панеле управления в папке "Модемы"(Свойства) установить максимальную скорость подключения(допустим 38400)!Хотя..


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

Экспертная группа: Пользовательская работа с Windows

Вопрос №902

Доброе время суток, Эксперты!
У меня здесь еще пару вопросиков появилось:

1)В программе я ввожу данные с клавиатуры. А как мне сделать, чтобы после нажатия на ESC, все что я напечатал, выводилось на экран на следующей строке?

2)Как сделать то же, что и в первом вопросе, только если данные будут вводиться при помощи функции 0ah, прерывания 21?

3)Что такое многопроходная компиляция в TASM?

Влад.

Ответ

Здравствуйте, Влад!
1. См. приложение. Все по заказу, но вообще говоря такая программа - чистый бред.
2. Тут не обойтись без вешанья обработчика на нажатие кнопки на клаве (непомню прерывание... эксперты - подскажите)
3. Многопроходная компиляция - компиляция многими проходами;
для больших прог имеет смысл, т.к. при компиляции 3 и более раза можно найти лишние nop и прочий лишак, который тока забивает память (при однопроходной компиляции часто возникают эти самые nop, особенно после вызовов процедур или переходов на метки... почему так получается - затрудняюсь ответить)

Приложение:


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

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

Вопрос №904

Здравствуйте, эксперты.
Не подскажете, как сделать скорость подключения к инету (на диалапе) не больше заданной (знаю, что есть такие ключи в реестре) т.к. всЈ время подключаюсь на 44-48 kbps и ничего не качает, а при подключении на 30-38 всЈ OK.
С уважением
Shorty Dimon.

Ответ

Здравствуйте, Shorty!
не нада никаких реестров - Модем-свойства-наибольшая скорость - попусти ее


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

Экспертная группа: Пользовательская работа с Windows

Вопрос №901

Здравствуйте!! у меня вопроc для Sensey'я:
Если память состоит из параграфов по 16 байт, то в 32мб опреативки их получается 1024*1024*32/16=2097152 параграфов.
Сегмент может занимать любое количество параграфов от 1 до 4096 (65536байт/16=4096пар.). Как тогда проц адресует такое большое количество памяти, сегмент может занимать лишь 1 параграф = 16 байт, а проц может адресовать лишь 16^4*16 байт =1мб оперативки. Заранее спасибо...

Ответ

Здравствуйте, Allegiance!
Отбираю у Sensey'я хлеб насущный... Это в real mode можно адресовать до 1Мб, а при 32-битной адресации... вобщем тебе на всю жизнь хватит. Так вот и адресует.


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

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

Вопрос №902

Доброе время суток, Эксперты!
У меня здесь еще пару вопросиков появилось:

1)В программе я ввожу данные с клавиатуры. А как мне сделать, чтобы после нажатия на ESC, все что я напечатал, выводилось на экран на следующей строке?

2)Как сделать то же, что и в первом вопросе, только если данные будут вводиться при помощи функции 0ah, прерывания 21?

3)Что такое многопроходная компиляция в TASM?

Влад.

Ответ

Здравствуйте, Влад!
1)Нужно после ввода следующей клавиши сравнивать её с кодом ESC:
lea di,buf
new_letter:
mov ah,10h
int 16h
mov al,[di]
cmp al,1bh
jz esc_pressed
mov [di],al
inc di
jmp new_letter
esc_pressed:
mov [di],'$'
и если нажат esc, вместо записи esc записывать на текущую позицию в буфере ввода '$'. В результате в буфере будет: 'text$'. Затем
lea dx,buf
mov ah,9
int 21h
И программа выведет всю строку до места, где нажали esc.
2)Практически так же, но нужно искать в буфере 0dh и заменять его на '$'. Затем как смещение к строке указываем buf+2. Вывод.
3)Дело в том, что любой компилятор не может за один проход сформировать минимальный по размеру код. Например, если мы прыгаем на метку, которая задана после инструкции перехода на неё (jmp label1; ...; label1), компилятор не может сразу определить, какое расстояние от инструкции до метки, и по умолчанию всталяет переход на 64K (при 16-битной адресации), а это 3 байта (jmp+адрес). Но если между меткой и инструкцией меньше 128 байт, оптимальнее сделать short jmp, который занимает два байта (jmp + +/-128байт). Во второй проход компилятор это учтёт, и вставит short jmp (т.к. ему уже будет известно расстояние от метки до инструкции). Надеюсь понятно выразился. Запуск тасм с многопроходной компиляцией - /m2, /m3, где число - кол-во проходов.


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

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

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

Рассылки 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

В избранное