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

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


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

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

Выпуск N 107

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

Дата выхода: 2001-10-01


Вопрос №1054

Уважаемые эксперты!
Прошу прощения за то, что отстаю от изучения рассылки по Ассемблеру, но на это у меня есть причины. а точнее я пока еще служу.
У меня такой вопрос. В выпуске № 10 есть резидентная программа в которой мне не понятно несколько строчек. А именно:

Ответ

Здравствуйте, Иван! Ну и че тут непонятного? Комментарии для кого? Ладно, постараюсь более ясно....
Int_21h_proc proc ; это обработчик 21h прерывания, которое мы где-то в проге перехватили (скорее всего этот кусок кода (перехват) находится ПОСЛЕ конца нашего обработчика)
pushf ; сохраняем флаги в стеке (вообще для любого обработчика не только флаги надо сохранять, но и все регистры, что меняются в его "теле",
cmp ah,09 ; проверяем это функция 09h? ну мало ли какая еще может быть! у 21h прерывания их может быть FFh штук, но нас интересует только девятая
je Ok_09 ;Да, это девятая функция - углубляемся дальше в наш обработчик... (на метку Ok_09)
popf ; иначе - востанавливаем регистр флагов
jmp dword ptr cs: [Int_21h_vect] ; и прыгаем на старый обработчик, т.е. фактически если это не 9 функция, то мы возвращаем управление в руки старого обработчика
Ok_09: ; вот сюда-то мы и прыгнем, если функция все же девятая... ;)
push ds ; как раз то, о чем я говорил выше -
push dx ; сохраняем все изменяемые регистры
push cs
pop ds ; дело в том, что когда мы этот обработчик 21h прерывания повесим в память резидентом, то сегмент памяти, в котором находится этот НАШ ОБРАБОТЧИК будет уже отличаться от сегмента запущенной проги. (это естественно). Поэтому мы присваиваем сегменту DS той, запущенной проги, сегмент нашего обработчика... я надеюсь, не запутаю тебя еще больше если скажу, что если вызывать int 21h из вот этой самой проги, после повески обработчика 21h прерывания, то вот эти две команды (push cs и pop ds) уже совершенно ни к чему (сегмент кода и данных будут, естествнно, совпадать), но мы то его пишем не для самого себя, а для других прог... фуууу..... ;)

mov dx,offset My_string ; ну тут все ясно. Смещение строки - в DS
pushf ; тут не знаю зачем второй раз сохраняют флаги. надо смотреть всю прогу
call dword ptr cs:[Int_21h_vect] ; а тут уже прыгаем на старый обработчик, т.к. все что нам надо было изменить, мы уже изменили, а именно - подменили сегмент DS и изменили регистр DX на нашу строку
pop dx
pop ds ; ну тут DS ясное дело, нада восстановить ОБЯЗАТЕЛЬНО!!! (хотя теоретически, если больше данных в проге нет, то нафиг не нада...) а насчет DX еще можно поспорить...
popf
iret ;продолжим работу выйдем из прерывания

вообщем, ты спроси, че те конкретно непонятно. Ато так "я ничего не понял" не бывает. Ну что, непонятно что такое pushf? не верю в это. Ставь конкретный вопрос, мы его со всех сторон тебе обрисуем во всех чертах (бесах).


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

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

Вопрос №1047

Привет Спецы!!!
I need your help!!!

Кратко о себе. Меня зовут Алексей (Mahmud), мне 27, родился и живу в Таллине. Работаю сам на себя- таскаю лес из Вологды в Эстонию. До этого пиратствовал вместе с Москвой.Учусь в отделении МГИУ в Таллине(инфотехнологии) 1 курс, правда. С компом дружу по ночам. За Вашим сайтом слежу достаточно долго- подписан на рассылку по Assembler. Плотно за чтение взялся недавно и уже торможу!
Вопрос: Не могу сообразить Hex system! Чтобы получить 1Е к 30 надо умножить или прибавить? Может существует формула расчётов?Простите за глупый вопрос.
Заранее благодарю.
Sorry, моё мыло mahmud@hot.ee, пока не разобрался в identity from- Explorer oм пользуюсь второй день(раньше был Netscape).

Ответ

Здравствуйте, Алекс!
Коротко о себе. Меня зовут Михаил (Painbringer), мне 19, рост 188, вес 63 кг, глаза голубые, шатен, учусь на дневном отделении ДФ НГТУ, ХМФ специальность АТПП. С компом дружусь по ночам, дням и когда есть время. За чтение взялся давно и уже не торможу (да и раньше то не очень тормозил).
Ответ. Собственно если вопрос задавать по русски то спрашивается, как перевнсти 30 в шестнадцатиричную систему. Делаем так:
30/16=1 остаток 14 (0eh) => 1eh
возьмем число поболее.
543
543 / 16^2 (256) = 2 остаток 31
31 / 16^1 = 1 остаток 15 (0fh)
имеем 21fh.
Sorry мое мыло limansky@tut.by, сайт - http://limanskij.narod.ru


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

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

Вопрос №1048

Hello, guys!

Я вот тут давеча разобрался с ООП на Assm'е. А вам слабо?

Ответ

Здравствуйте, Basil!
НЕТ. ПРОСТО Я В ЭТОМ НЕ НУЖДАЮСЬ (Я ИСПОЛЬЗУЮ ДЛЯ ЭТОГО ЕСТЬ C++, Delphi (Object Pascal) И ДР) Т.К. ООП И УВЕЛИЧЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ВЕЩИ НЕСОВМЕСТНЫЕ.


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

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

Вопрос №1051

Здравствуйте уважаемые эксперты.
Написал программу бегущей строки, но tlink.exe выдает ошибку "invalid initial entry point adress".
Если можно, укажите, где находится эта ошибка.
Заранее благодарю.
P.S. Я пока еще чайник в этом деле, поэтому просьба не смеяться над ошибками.

Ответ

Здравствуйте, Trever!
вобщем мне влом копаться в твоей глючной проге. Не компилировался COM потомучто не поставил org 100h перед бегином.


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

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

Вопрос №1056

i have a littleproblem and may be you please can help me.
i installed masm 5.0 on windows 98.
and trying to bild this code .(PROJECT-->BILD ALL)
and i get error LNK1190 invalid fixup found (i thik this some problem with
linling the object file.)


CSEG segment
org 200h
My_name db 'ilya',0;
_start:
mov ah,9
mov dx,offset My_name
int 21h
int 20h
CSEG ends
end _start

How can I solve this problem?

Ответ

Здравствуйте, ilya!
Так не пойдет! Надо так:
CSEG segment
assume cs:cseg
org 100h
start:
jmp _start
My_name db 'ilya',24h
_start:
mov ah,9
mov dx,offset My_name
int 21h
int 20h
CSEG ends
end start


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

Экспертная группа: Работа с MASM/TASM

Вопрос №1059

Ну ответьте-то пожалуйста! Есть ли архив первых выпусков FAQ или нет? Так и скажите - НЕТУ никаких факов, а то молчите все, как рыба об лед!
Вал.Ик.

Ответ

Здравствуйте, Вал.Ик.!
Возьми тут:
http://subscribe.ru/archive/comp.soft.prog.faq/


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

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

Вопрос №1058

Здравствуйте, Ув. Эксперты!
В 9-ом номере рассылки есть такой фрагмент кода:

mov ax,3D00h
int 21h
mov Handle,ax

После выполнения функции 3Dh в ax возвращается
описатель файла(дескриптор файла,указатель файла,
handle...) если нет ошибки. Если я правильно понял
FAQ'ки, то когда в ax=05 -доступ запрещен. Вот
это меня и озадачило. Почему ДОС 6.22 запретил
доступ к файлу? Ладно там если из-под FAR'а в
виндовзе то возможно в доступе и должно быть
отказано(хотя я не вижу причин). Но! Я проделал
это на старой тройке в чистом ДОС 6.22!
Вот и вопрос: почему ax=0005 ?
З.Ы. Пытался открыть любой файл.

Ответ

Здравствуйте, Начинающий ламер!
А ты бит С смотрел?
Если он установлен, тогда только ошибка
Еще вариант- у тебя русское имя папки\файла, что нельзя


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

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

Вопрос №1061

Здравствуйте
Монитор LG Studioworks-57i,видиокарта S3 VIRGE DX/GX PCI
(режим разрешения видиоадаптера настроена:изображение 800x600 точек, глубина света True Color,Полоса пропускания
видиосигнала шириной 85Мгц.)Очень плохо себя чувствую(голова болит,глаза устают) после 5-6 часов работы.Дайте совет пожалуйста что мне делать поменят монитор или еще что нибуд.
Расстаться с комп.нехочется

Ответ

Здравствуйте, Муса!
Настройки отличные, поэтому дело не в железе...
Разве что поиграйся с контрастностью, гаммой итп
Работай так:40 мин работаешь, 5-10 мин куришь, сидишь с запкрытыми глазамми и тп.
Это наблюдается в первый-второй год работы, потом привыкаешь:)))
Хотя конечно можно и монитор поменять:)-это вряд ли поможет:(((


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

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

Вопрос №1050

Здравствуйте эксперты!
Не подскажите, где можно найти исходники, реализующие без сопроцессора арифметические операции с плавоющей точкой. Сам бы написал, но пока я врублюсь
во все это дело столько времени пройдет…
P.S. Большое сенькс Broken Sword за быстрый ответ на мой предыдущий вопрос.

Ответ

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

На си - без проблем. в любом Linux или FreeBSD оно есть. могу прислать. на асме реализаций не встречал.


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

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

Вопрос №1056

i have a littleproblem and may be you please can help me.
i installed masm 5.0 on windows 98.
and trying to bild this code .(PROJECT-->BILD ALL)
and i get error LNK1190 invalid fixup found (i thik this some problem with
linling the object file.)


CSEG segment
org 200h
My_name db 'ilya',0;
_start:
mov ah,9
mov dx,offset My_name
int 21h
int 20h
CSEG ends
end _start

How can I solve this problem?

Ответ

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

Почему org 200h??? откуда такие значения? очень похоже на предыдущий вопрос... только с другой стороны.


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

Экспертная группа: Работа с MASM/TASM

Вопрос №1058

Здравствуйте, Ув. Эксперты!
В 9-ом номере рассылки есть такой фрагмент кода:

mov ax,3D00h
int 21h
mov Handle,ax

После выполнения функции 3Dh в ax возвращается
описатель файла(дескриптор файла,указатель файла,
handle...) если нет ошибки. Если я правильно понял
FAQ'ки, то когда в ax=05 -доступ запрещен. Вот
это меня и озадачило. Почему ДОС 6.22 запретил
доступ к файлу? Ладно там если из-под FAR'а в
виндовзе то возможно в доступе и должно быть
отказано(хотя я не вижу причин). Но! Я проделал
это на старой тройке в чистом ДОС 6.22!
Вот и вопрос: почему ax=0005 ?
З.Ы. Пытался открыть любой файл.

Ответ

Здравствуйте, Начинающий ламер!

Доступ может быть запрещен если файл уже кто-то открыл...


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

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

Вопрос №1059

Ну ответьте-то пожалуйста! Есть ли архив первых выпусков FAQ или нет? Так и скажите - НЕТУ никаких факов, а то молчите все, как рыба об лед!
Вал.Ик.

Ответ

Здравствуйте, Вал.Ик.!

Сходи на http://subscribe.ru/catalog/comp.soft.prog.faq
там весь архив.


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

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

Вопрос №1040

Здравствуйте эксперты.
У меня вот какой вопрос.Частенько случается такое-Программа вызвала сбой обращения к памяти и будет закрыта или Программа ....вызвала ошибку обращения к стеку в модуле...по адресу.... .Из за чего такая фигня.Спасибо.

Ответ

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

Программа обращается к памяти которая либо не доступна ей вообще (отсутствует) или не доступна для чтения или записи или выполнения.

Обычно такая ситуация возникает в следствии ошибок в программе.


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

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

Вопрос №1054

Уважаемые эксперты!
Прошу прощения за то, что отстаю от изучения рассылки по Ассемблеру, но на это у меня есть причины. а точнее я пока еще служу.
У меня такой вопрос. В выпуске № 10 есть резидентная программа в которой мне не понятно несколько строчек. А именно:

Ответ

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

Я, чесино говоря, не очень понял, что именно вызвало затруднения. Поэтому попробую прокомментировать все строки.

Int_21h_proc proc
pushf ; сохраняем флаги - это наш долг перед прерванной
; программой. Хотя, по идее, при выполнении команды
; int 21h флаги сохраняются.

cmp ah,09 ; проверяем это функция 09h?
je Ok_09 ; Да

popf ; если нет востанавливаем регистр флагов и
jmp dword ptr cs: [Int_21h_vect] ; перейдем на оригинальный
; обработчик прерывания 21h. Все.
; На метку Ok_09 программа уже
; не вернется

Ok_09:
push ds ; Сохраняем регистры ds и dx
push dx ;

push cs ; Адрес строки должен быть DS:DX
pop ds ; Востанавливаем DS из CS

mov dx, offset My_string ; Теперь в регистрах ds:dx
; находится адрес нашей строки

pushf ; Сохраняем регистр флагов перед
; вызовом оригинального
; обработчика. Требуется для
; корректного выполнения
; инструкции iret
call dword ptr cs:[Int_21h_vect] ; Вызываем оригинальный
; обработчик 21-го прерывания для
; вывода строки

pop dx ; После вывода строки
; восстанавливаем сохраненные
; регистры dx и dsа также регистр
; флагов, сохраненный в начале
; процедуры обработки прерывания
pop ds
popf

iret ; завершение работы процедуры
; обработчика 21-го прерывания
Int_21h_proc endp


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

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

Вопрос №1058

Здравствуйте, Ув. Эксперты!
В 9-ом номере рассылки есть такой фрагмент кода:

mov ax,3D00h
int 21h
mov Handle,ax

После выполнения функции 3Dh в ax возвращается
описатель файла(дескриптор файла,указатель файла,
handle...) если нет ошибки. Если я правильно понял
FAQ'ки, то когда в ax=05 -доступ запрещен. Вот
это меня и озадачило. Почему ДОС 6.22 запретил
доступ к файлу? Ладно там если из-под FAR'а в
виндовзе то возможно в доступе и должно быть
отказано(хотя я не вижу причин). Но! Я проделал
это на старой тройке в чистом ДОС 6.22!
Вот и вопрос: почему ax=0005 ?
З.Ы. Пытался открыть любой файл.

Ответ

Здравствуйте, Начинающий ламер!

Я считаю, что никакого запрета доступа у вас не происходит. Просто DOS обычно при первой попытке открытия файла присваивает ему дискриптор под номером 5, и честно об этом сообщает в регистре ax. Первые 5 номеров (с 00 по 04) автоматически открываются DOS'ом для файлов стандартного ввода (00), вывода (01), ошибки (02) и еще 2 каких-то, сейчас не помню. Поэтому первый свободный дескриптор будет 5.
А ошибка при открытии файла сигнализируется установленным флагом переноса CF в регистре флагов. Поэтому более корректно открывать файл следующим образом:

Приложение:


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

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

Вопрос №1061

гДПЮБЯРБСИРЕ
лНМХРНП LG Studioworks-57i,БХДХНЙЮПРЮ S3 VIRGE DX/GX PCI
(ПЕФХЛ ПЮГПЕЬЕМХЪ БХДХНЮДЮОРЕПЮ МЮЯРПНЕМЮ:ХГНАПЮФЕМХЕ 800x600 РНВЕЙ, ЦКСАХМЮ ЯБЕРЮ True Color,оНКНЯЮ ОПНОСЯЙЮМХЪ
БХДХНЯХЦМЮКЮ ЬХПХМНИ 85лЦЖ.)нВЕМЭ ОКНУН ЯЕАЪ ВСБЯРБСЧ(ЦНКНБЮ АНКХР,ЦКЮГЮ СЯРЮЧР) ОНЯКЕ 5-6 ВЮЯНБ ПЮАНРШ.дЮИРЕ ЯНБЕР ОНФЮКСИЯРЮ ВРН ЛМЕ ДЕКЮРЭ ОНЛЕМЪР ЛНМХРНП ХКХ ЕЫЕ ВРН МХАСД.
пЮЯЯРЮРЭЯЪ Я ЙНЛО.МЕУНВЕРЯЪ

Ответ

гДПЮБЯРБСИРЕ, лСЯЮ!
дЮ... лНМХРНПВХЙ, ЙНМЕВМН МЕ ЯЮЛШИ ЩПЦНМНЛХВМШИ...
еДХМЯРБЕММНЕ, ВРН БЮЛ НЯРЮКНЯЭ ОНЯНБЕРНБЮРЭ, РЮЙ ЩРН СРПЮМЪРЭ НЬХАЙХ Б ЯЕАЕ... оПХБЕДС МЕЙНРНПШЕ ОПЮБХКЮ...
1. оНЯЮДЙЮ... нР МЕё ГЮБХЯХР ЛМНЦНЕ... кСВЬЕ БЯЕЦН ЯХДЕРЭ ОПЪЛН, ГЮ ЯРСКНЛ Я МЕ НВЕМЭ БШЯНЙНИ ЯОХМЙНИ. оНЯРЮПЮИРЕЯЭ ЯДЕКЮРЭ РЮЙ, ВРНАШ ЦКЮГЮ МЮУНДХКХЯЭ МЮ СПНБМЕ ЛНМХРНПЮ, ВРНАШ бЮЛ МЕ ОПХЬКНЯЭ НОЪРЭ ЯХДЕРЭ ЙПХБН.
2. нРДШУ. йЮФДШЕ ОНКВЮЯЮ, ВЮЯ ОЕПЕДНУМХРЕ, ОНОЕИРЕ ОХБН, ХКХ ЯДЕКЮИРЕ ГЮПЪДЙС ДКЪ ЦКЮГ... гЮЙПНИРЕ ЦКЮГЮ МЮ ЛХМСРС, ПЮЯЯКЮАЭРЕЯЭ. нРЙПНИРЕ, ЛНПЦЮИРЕ Я ВЮЯРНРНИ 0,5 ЦЕПЖ, МН ЛНПЦЮИРЕ Я ОПХЛХМЕМХЕЛ БЯЕУ ЛШЬЖ КХЖЮ. р.Е. ОНЙПНВХРЕ ПНФХ, БЯОНЛМХРЕ ДЕРЯРБН... :-)) щРН БЯЕЦДЮ ОНКЕГМН. щРН ЕЫё МЮ ОНКЛХМСРШ. гЮРЕЛ ОНЛЮЯЯХПСИРЕ БХЯЙХ, ГЮЙПНИРЕ ЦКЮГЮ, ОНДСЬЕВЙЮЛХ ОЮКЭЖЕБ ЯКЕЦЙЮ МЮФХЛЮИРЕ МЮ БЕЙХ. еЫё ОНКЛХМСРШ. оНЯЛНРПХРЕ Б НЙМН. яЛНРПХРЕ МЮ РНВЙС МЮХАНКЕЕ НРДЮКёММСЧ НР бЮЯ. щРНЛ ЛНФЕР АШРЭ ЯРНКА, ДЕПЕБН, ДПСЦНИ ДНЛ... ВЕПЕГ ЯЕЙСМДС ОНЯЛНРПХРЕ ЯЕАЕ МЮ МНЯ. гЮРЕЛ НОЪРЭ Б РС ФЕ РНВЙС... рЮЙ ОНБРНПЪИРЕ ПЮГ 10-15. бШЬЕНОХЯЮММНЕ ДНКФМН ОПНДКХРЭ бЮЬХЛ ЦКЮГЮЛ ФХГМЭ Х ЯМХГХРЭ СРНЛКЪЕЛНЯРЭ.
3. яНАЯРБЕММН, ДКЪ ВЕЦН Ъ ГДЕЯЭ ЯХФС... гЮЛЕМЮ ЛНМХРНПЮ... яОНЯНА, ПЮГСЛЕЕРЯЪ МЕ ЯЮЛШИ ПЮЖХНМЮКЭМШИ, МН ПЮГ СФ ОНОПНЯХКХ...
кСВЬЕ БЯЕЦН (ЙПСВЕ, ДНПНФЕ)... ЦНПЮГДН КСВЬЕ ОНЛЕМЪРЭ ЯБНЧ РПСАС МЮ LCD ЛНМХРНП... еЦН ОПЕХЛСЫЕЯРБЮ: гЮМХЛЮЕР ПЮГ Б 10 ЛЕМЭЬЕ ЛЕЯРЮ МЮ ЯРНКЕ, ДХГЮИМ МЕ ЯПЮБМХЛ МХ Я ВЕЛ Х ЦКЮБМНЕ - ЩПЦНМНЛХВМНЯРЭ. нМ МЕ ХГКСВЮЕР МХВЕЦН ЙПНЛЕ НАШВМНЦН ЯБЕРЮ... дКЪ АНКЕЕ ОНДПНАМНИ ХМТНПЛЮЖХХ ГЮИДХРЕ МЮ www.lcd.ru - ЯЮИРХЙ, ЙНМЕВМН МЕДНДЕКЮМ, МН РЮЛ ЕЯРЭ УНПНЬЮИЪ ЯРЮРЭЪ ОПН ОПЕХЛСЫЕЯРБЮ РЮЙХУ ЛНМХРНПНБ (ЩРН ЕДХМЯРБЕММНЕ, ВРН РЮЛ ЕЯРЭ). лНМХРНПШ КЯД ЯРНЪР ОНПЪДЙЮ 500-600$ ГЮ 15 ДЧИЛНБ. мН ЩРН ВСРЭ ЛЕМЭЬЕ, ВЕЛ 17 ДЧИЛНБ НАШВМНЦН ЛНМХРНПЮ. еЯКХ Я ДЕМЭЦЮЛХ ОКНУН, РН ОНЙСОЮЪ ЛНМХРНП, ЯЛНРПХРЕ ВРНАШ НМ НРБЕВЮК ЯРЮМДЮПРЮЛ TCO 99 ХКХ TCO 95.
4. х, МЮОНЯКЕДНЙ, ЯУНДХРЕ Й БПЮВС. аНКЭЬЮЪ БЕПНЪРМНЯРЭ РНЦН, ВРН С бЮЯ БМСРПЕВЕПЕОМНЕ ДЮБКЕМХЕ... хКХ ЕЫё ВРН-МХАСДЭ...
яОЮЯХАН, ВРН ОПНВХРЮКХ...
г.ш. оНВЮЫЕ ЯЛНРПХРЕ МЮ МЕАН... щРН ОНЛНЦЮЕР...


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

Экспертная группа: лНДЕКХ, БХДШ Х РХОШ ЙНЛОЭЧРЕПНБ (hard)

Вопрос №1062

Здравствуйте эксперты.
Спасибо за ответы. У меня такой вопрос.
В своем ответе на мой вопрос эксперт Broken Sword привел вариант своей программы. Там были такие строки:

mov dx,20000
mov ah,86h
int 15h

1. Что делает это прерывание?
2. Что означает в той-же программе описание выводимой строки:
stroka:
irpc char,<Бежит строка, ой как бежит!!!>
db '&char&',0Dh
Заранее благодарю за ответы.

Ответ

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

1. Прерывание 15h - прерывание расширенных функций для AT. В частности, функция 86h выполняет задержку на время, заданное в паре регистров cx:dx в милисекундах. Соответственно, в программе эксперта Brocken Sword задержка выполняется на 20000 мс, т.е. на 20 с.
2. Описание обозначает, что для каждого символа из заданной строки будет сформирована последовательность (символ, 0dh). Это директива компилятора.

Рекомендация. В качестве справочника по прерываниям BIOS, функциям DOS, системе команд и т.п. очень неплохо использовать программу Tech Help.


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

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

Вопрос №1062

Здравствуйте эксперты.
Спасибо за ответы. У меня такой вопрос.
В своем ответе на мой вопрос эксперт Broken Sword привел вариант своей программы. Там были такие строки:

mov dx,20000
mov ah,86h
int 15h

1. Что делает это прерывание?
2. Что означает в той-же программе описание выводимой строки:
stroka:
irpc char,<Бежит строка, ой как бежит!!!>
db '&char&',0Dh
Заранее благодарю за ответы.

Ответ

Здравствуйте, Trever!
Можно я отвечу? да? спасибо!
Первый кусок (int 15h) - формирование задержки (функция 86h) на интервал времени, наход. в CX:DX в миллисекундах (т.е. на 20000 миллисекунд). Вообщето если ее не "сформировать", то ни ты, ни кто либо другой ничего не успеют разглядеть, строка пронесется по экрану молниеносно...

во втором куске ты забыл довольно важную строку - endm (конец макроса повртоений). Вообщем так. Чтоб не писать db 'Б',0Dh,'е',0Dh,'ж',0Dh,'и',0Dh,'т' и т.д. (ведь видеопамять для каждого символа отводит по 2 байта (атрибут, АСЦ код), вот для этого то и придуман подобный ход. Т.е. в цикле в памяти будет определяться
"код символа в треугольных скобках, 0Dh", пока не долезет до конца строки (может быть хоть 64К символов), указатель инкрементируется автоматически.

p.s. наша рассылка постепенно становиться интернациональной... Ура товарищи!


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - УЛТЩФБС ТЕЛМБНБ...)
Эксперт отправил ответов (всего): 173

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД DOS

Вопрос №1063

Возможно, кто то сталкивался с вирусом
I-WORM.HIBRIS.B
Данных по нему нет, берется сентябрской базой.(AVP)
Заловил на СD-приложении к журналу Submarine.
Чем он опасен?
Данные по I-WORM.HAPPY есть это интернет червь.

Ответ

Здравствуйте, oleg!
А ручонки-то тебе бы и оторвать...
www.viruslist.com Gotcha!!!
Там усё и написано...


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

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

Вопрос №1063

Возможно, кто то сталкивался с вирусом
I-WORM.HIBRIS.B
Данных по нему нет, берется сентябрской базой.(AVP)
Заловил на СD-приложении к журналу Submarine.
Чем он опасен?
Данные по I-WORM.HAPPY есть это интернет червь.

Ответ

Здравствуйте, oleg!
Есть такая дрянь. Троян. В рунете встречается крайне часто. Всё зависит от того, какие плагины у него есть, и есть ли у него доступ в интернет. При соединении с интренетом он пытается скрытно соединится с web-страницей своего автора и качает от туда все лежащие там плагины, коие тут же пускает в использование. Насколько я знаю, его имеющиеся плагины:
1.делает полуполиморфным всеь код.
2.прёт пароли доступа в интернет, отсылает.
3.поговаривают, есть содержащие деструктивные функции.
Размножается: через e-mail - рассылка по адресам из адресной книги псевдо-порнухи; по WinEXE-файлам, т.е. крайне медленно.
Поставляется по e-mail в base64, у меня в хранилище есть полный перекодированный код.
А Submarine больше не читай, пошли авторам, что они последние олухи, и выкинь нафиг диск. Существует так много штаммов, что он практически неизлечим по стандартным базам.


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

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

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

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

В избранное