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

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


Служба Рассылок Subscribe.Ru

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

Выпуск № 226
от 25.03.2002, 02:05

Администратор: Калашников Олег
Сайт Администратора: Программирование на Ассемблере


Старейшины рассылки
(по состоянию на 25.03.2002, 02:05)

1. Broken Sword - ответов: 403.
2. Painbringer (нечто наподобие домашней страницы) - ответов: 371.
3. Sensey - ответов: 334.
4. Dron (Операционная система с нуля!) - ответов: 281.
5. DiGiT - ответов: 280.


Новости

[24.03] Эксперту наСИльник присвоен статус "Профессиональный".


 Вопрос № 330

Уважаемые эксперты!

Помогите разобраться!

1. Как открывать окна Shadow Memory на запись?

2. Как безопасно производить запись (чтение) в (из) файл(а) из драйвера устройства в ЛЮБОЙ момент?
(Я перехвачиваю Int 8,9,13,1c,23,24,28; запрещаю аппаратные прерывания, меняю стек, DTA, PSP - виснет реже, но виснет!!!)

3. Как некоторые программы (Manifest (by QEMM), Dr.Hard, Windows etc) определяют драйвер EMM (в смысле чей (какой) драйвер?)?

Если есть идей, плз лейте на мыло.

ЗЫ: Если оч. хочется исходник - см.выше

ЗЗЫ: Заранее благодарю.

Отправитель: Vladimir Miloslawsky (Miloslawsky@ua.fm)
Вопрос отправлен: 20.03.2002, 02:42
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Mr. BuS
Приветствую Вас, Vladimir Miloslawsky!
Насчет шадоу не знаю...
Насчет файловых операций... Ты наверное работаешь с файлами через функции DOS - а ведь они нереентерабельны. Возможно, причина в этом. Тогда, возможно, зря ты перехватил некоторые прерывания. Лучший выход - работать с файлами на уровне секторов. Через биос или вообще через адаптер IDE. О файловой системе FAT12/16/32 можно прочитать в серии "Библиотека программиста" (Том 18 или 19, Фроловы), и других книгах (может, сайтах). Но на крайний случай спроси, будет время, опишу :-)
Насчет EMM... Я вообще с ним в жизни не сталкивался... Только с XMM :-)


Отправлено: 21.03.2002, 03:07
Отправитель: Mr. BuS (регистрация: 19/03/2002, ответов на счету: 18)
Syros
РФ, Татарстан, Казань




 Вопрос № 331

Здравствуйте!
Проблема с веб-камерой. Не магу её задействовать.
После инсталировки включил ее программу. Выдало мне сообщение:
The "Dexa Webcam" camera divice is currently in use by another application.
Я разинсталировал ее и снова проинсталировал и опять та же историяб непомогло.
До того как я стер виндоус и заново установил, камера работала.
Кто поможет?


Отправитель: Mike (santaclaus121@hotmail.com)
Вопрос отправлен: 20.03.2002, 04:25
Подгруппа: Оптимизация программ

_______________

Отвечает VladK
Доброе время суток, Mike!
Деинсталлируй камеру.
Залезь в реестр (Пуск -> Выполнить -> Regedit)
Найди все ссылки на свою камеру (через поиск), удали их (предварительно сделав копию реестра), затем инсталлируй снова.
С ув.


Отправлено: 20.03.2002, 12:55
Отправитель: VladK (регистрация: 11/03/2002, ответов на счету: 15)
Student
Россия, Свердловская обл.




 Вопрос № 332

Всем привет! такой вопрос:
в рассылке (№13), после того, как мы переместили код программы в сегмент 7 видеостраницы, мы прыгаем на следующую строку (jmp dword ptr cs:[Off_move]), но кодовый сегмент уже будет равен 0ВF00h. Вопрос такой: как это получается, у нас 2 метки в памяти, одна на следующей строке, другая так же, но в 7 видеостранице, так почему СS меняется на 0ВF00h?

Отправитель: Sergey
Вопрос отправлен: 20.03.2002, 07:58
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает VicSimon
Добрый день, Sergey!
В этом случае имеет значение тип операнда в команде jmp. То есть dword ptr cs:[Off_move] значит взять 4 байта (полный адрес - СНАЧАЛА смещение, потом сегмент) и сделать по нему ДАЛЬНИЙ jmp. То есть переходим по адресу 0BF00h:offset Lab_jmp (См. переменные Off_move и Seg_move).


Отправлено: 20.03.2002, 08:08
Отправитель: VicSimon (регистрация: 25/01/2002, ответов на счету: 38)
Россия, Красноярск

_______________

Отвечает Beeblebrox
Здравствуйте, Sergey!
Из общих соображений команда
jmp dword ptr cs:[Off_move]
делает следующие вещи:
ip <- word ptr cs:[Off_move]
cs <- word ptr cs:[Off_move+2]
причем обе эти строчки одновременно, а не последовательно.
То есть меняется и смещение, и сегмент, куда будет передано управление.
Так что разберись внимательно, что хранится в 32-битной ячейке по адресу cs:[Off_move], и помни, что [ ] есть операция доступа к содержимому ячейки, а не к ее адресу.


Отправлено: 20.03.2002, 10:49
Отправитель: Beeblebrox (регистрация: 13/03/2002, ответов на счету: 25)
URL: http://beeblbrx.narod.ru - Beeblebrox / TMA HomePage
ICQ #75393045
Ukraine, Kharkov

_______________

Отвечает Dron
Добрый день, Sergey!

Уже в который раз приходиться объяснять одно и то же...
может быть не очень доходчиво объясняю?

аргументом jmp является ссылка на 4 байта (dword) памяти.
в этих четырех байтах храниться новый ip и новый cs.

соответственно и cs и ip при переходе меняются.


Отправлено: 20.03.2002, 11:24
Отправитель: Dron (регистрация: 28/12/2001, ответов на счету: 281)
Информзащита
Адрес: Москва
URL: http://asmdev.narod.ru/asmos.html - Операционная система с нуля!
2144510
Россия, Москва

_______________

Отвечает Ayl
Доброе время суток, Sergey!

Мы прыгаем не на следующую строку, а на полный адрес, который записан начиная с адреса cs:Off_move. Занимает этот адрес 4 последовательных байта, первые два определяют смещение, следующие 3 - сегмент (в нашем случае там должно быть число 0bf00h, в памяти будет представлено как 00h, 0bfh).
В результате команды jmp dword ptr cs:[Off_move] процессор считывает двойное слово (у нас указано dword ptr!) по адресу cs:[Off_move], записывает старшее слово в регистр cs, младшее - в регистр ip и переходит к следующей команде. А следующая команда у нас определяется содержимым регистров cs:ip!



Отправлено: 20.03.2002, 13:23
Отправитель: Ayl (регистрация: 28/12/2001, ответов на счету: 178)
Россия, Санкт-Петербург




 Вопрос № 333

Подскажите как это сделать, а то к курсовую писать не дадут.
Вывести 3 массива соответственно 4, 5, 4 компонентов. Их надо увеличить в 2 раза. Вычеслить среднее арифметическое положительных элементо в массива в виде процедуры, среднее арифметическое в виде функции. Все на Pascal.

Отправитель: lizard (lizard2002@rambler.ru)
Вопрос отправлен: 20.03.2002, 08:46
Подгруппа: Оптимизация программ

_______________

Отвечает Sensey
Приветствую Вас, lizard!
Ха!
У нас типа нельзя писать вопросы "Напишите прогу", так как мы УЧИМ людей программировать, а не помогаем им учиться в ВУЗах...
Хотя, я сегодня добрый, держи прогу.
Хотя я такой добрый, как другие злые, поэтому не написал ни единой строчки комментариев, для того, чтобы ты сам разобрался. Пока разберешься, и выучишь, что как работает :)


Приложение:


Отправлено: 20.03.2002, 11:21
Отправитель: Sensey (регистрация: 28/12/2001, ответов на счету: 334)
Тел.: (0572) 41-76-04 д.
Украина, Харьков




 Вопрос № 313

Здравствуйте, эксперты!
Скажите, пожалуйста, как заблокировать СД-ром, чтобы его невозможно было открыть или закрыть? Какие АПИ-ф-ции используются при этом?

Спасибо!

Отправитель: Эдуард
Вопрос отправлен: 19.03.2002, 13:23
Подгруппа: Пользовательская работа с Windows

_______________

Отвечает DivX
Приветствую Вас, Эдуард!
Только написать нужную прошивку для этого СД-рома...А что очень нужно? Открытие-закрытие CD-ROM'а - это и программная и прежде всего аппаратная функция, поэтому никакая программа не сможет "приказать" не открывать ли сиди-ром или не закрывать ли его, если нет соответствующей команды микропрограмме.


Отправлено: 20.03.2002, 07:14
Отправитель: DivX (регистрация: 28/12/2001, ответов на счету: 233)




 Вопрос № 314

Здравствуйте, господа эксперты!
Подскажите, плиз, как мне получить значения частоты и амплитуды сигнала, воспроизводимого звуковой картой.
С уважением, Николай.

Отправитель: Николай
Вопрос отправлен: 19.03.2002, 13:42
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Топор
Доброе время суток, Николай!

Могу предложить самопальный частотомер на Асме, правда, под DOS. Ну разве что передосить его под окна и прописать в исходнике номер порта (там понятно, где), в который выводится звук, если номер сей известен точно.


Приложение:


Отправлено: 19.03.2002, 23:13
Отправитель: Топор (регистрация: 15/03/2002, ответов на счету: 31)
Радио "Эхо Москвы в Самаре"
Адрес: 443011, Самара, ул. Советской Армии, 217
Тел.: (8462)160302, 162918
URL: http://listen.to/btemple - Хорошая Русская Металлическая команда
Россия, Самара




 Вопрос № 315

Господа!
Кому-нибудь когда-либо не попадались ли проги (типа Grapher'а), позволяющие изобразить 3D-график функции, заданной таблично? Ну, там, чтобы сечения показать и все такое.

Отправитель: Василий
Вопрос отправлен: 19.03.2002, 15:04
Подгруппа: Пользовательская работа с Windows

_______________

Отвечает Frank
Здравствуйте, Василий!
А MathCAD не пробовал там можно по-моему я уже не помню точно



Отправлено: 19.03.2002, 21:35
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 121)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев




 Вопрос № 276

Здравствуйте уважаемые эксперты!
Нужна помощь!!!! Помагите довести до 'COM или до EXE'
tlink ругается что 'No program entry point'
и укажите на недочёты или что исправить если возможно .
Зарание благодарен.


Приложение:


Отправитель: kew
Вопрос отправлен: 16.03.2002, 19:07
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Топор
Здравствуйте, kew!

Элементарно. Вы забыли указать точку входа в директиве END. Смотрите последнюю строку. Должно быть:

END START

Удачи !


Отправлено: 16.03.2002, 19:23
Отправитель: Топор (регистрация: 15/03/2002, ответов на счету: 31)
Радио "Эхо Москвы в Самаре"
Адрес: 443011, Самара, ул. Советской Армии, 217
Тел.: (8462)160302, 162918
URL: http://listen.to/btemple - Хорошая Русская Металлическая команда
Россия, Самара

_______________

Отвечает BMR
Здравствуйте, kew!

В конце поставь не End, а End START. У меня заработало.


Отправлено: 16.03.2002, 19:40
Отправитель: BMR (регистрация: 10/02/2002, ответов на счету: 109)
Россия, Пенза

_______________

Отвечает LAO
Доброе время суток, kew!
1) По структуре твоя программа близка к .COM (".model tiny" и "org 100h"), а поэтому тебе следует:
- убрать .DATA (строка 52), так данные и код в .COM-программах расположены в одном сегменте;
- строки 47-49 ("xor ax,ax", "int 16h" и "ret") заменить на "int 20h" (код завершения .COM-программ)
2) Последняя строка должна выглядеть как "END START". MASM эту ошибку игнорирует, а TASM - нет.
3) tlink ругается, так как для .COM tlink следует задавать с ключем /t (напр: tlink a.obj /t)
4) В строке 26 сделана маленькая опечаточка - пропушено двоеточие после объявления метки start_PM.
Я скомпилировал исправленный код как MASM 6.12, так и TASM - без проблем :))


Отправлено: 16.03.2002, 20:32
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 57)
Россия, Москва

_______________

Отвечает VicSimon
Добрый день, kew!
После ключевого слова END указывается метка точки входа. В твоем случае нужно написать в последней строке END START.
Кроме того, после метки start_PM и перед точкой с запятой не хватает двоеточия... ;)


Отправлено: 18.03.2002, 07:41
Отправитель: VicSimon (регистрация: 25/01/2002, ответов на счету: 38)
Россия, Красноярск




 Вопрос № 277

Здравствуйте,
можно ли сделать программу, которая позволяла бы переключение между
хотя бы двумя процессами, не чтоб они "одновременно" выполнялись
(речь не идёт о многозадачности), а именно переключение, допустим
при нажатии комбинации "Alt-Tab" ?
Может ли операционная система DOS позволить такое, или это исключено
в принципе ?

Отправитель: Ilyia (ged@istnet.ru)
Вопрос отправлен: 16.03.2002, 23:58
Подгруппа: Общие вопросы по программированию на Ассемблере под DOS

_______________

Отвечает Beeblebrox
Приветствую Вас, Ilyia!
Конечно можно, и даже не просто переключение, а одновременную работу. Не следует забывать, что Windows95 - не что иное, как DOS-приложение, по большому счету :))


Отправлено: 18.03.2002, 10:55
Отправитель: Beeblebrox (регистрация: 13/03/2002, ответов на счету: 25)
URL: http://beeblbrx.narod.ru - Beeblebrox / TMA HomePage
ICQ #75393045
Ukraine, Kharkov

_______________

Отвечает Артём Шегеда
Добрый день, Ilyia!

Решил реализовать многозадачку? С DOS'ом это сложно. Хотя бы потому, что нет механизма сохранения состояния процесса и из-за корявости большинства пользовательских приложений.
Несмотря на это, уже в версии 2.0 реализовано понятие "процесс" и "идентификатор процесса". Т.е. был замах на многозадачку. Кстати, рекомендую отыскать где-нибудь Windows версии 1. Потрясающая вещь! Может быть, тебе удастся поковырять код.


Отправлено: 18.03.2002, 11:29
Отправитель: Артём Шегеда (регистрация: 28/12/2001, ответов на счету: 82)
URL: http://www.shegeda.chat.ru/ - Пристанище неодинокого программиста
x-USSR, Харьков

_______________

Отвечает GL
Здравствуйте, Ilyia!
Можно, только переключаемые программы должны быть резидентами. Готовые программы вряд ли подойдут для этого метода. Придется самому писать.


Отправлено: 18.03.2002, 12:15
Отправитель: GL (регистрация: 02/03/2002, ответов на счету: 33)
Амурская обл., Благовещенск

_______________

Отвечает Ayl
Доброе время суток, Ilyia!

Между двумя ЛЮБЫМИ процессами или какими-то своими? Если между любыми - то исключено. Потому как в этом случае нужно писать монитор задач типа Win3.1, которая, как известно, не была полноценной операционкой, а просто расширением DOS для многозадачности и графического режима. Хотя если интересно попробовать... :)
Кстати, не забудь озаботиться обходом нереентерабельности прерываний DOS.
А если о своем приложении - так предусмотри возможность переключения и радуйся результату. Можно даже попробовать кого-нибудь разыграть :)


Отправлено: 19.03.2002, 04:57
Отправитель: Ayl (регистрация: 28/12/2001, ответов на счету: 178)
Россия, Санкт-Петербург




 Вопрос № 289

Где в инете можно утянуть winapi?
Отправитель: Эксперт StiGGeR
Вопрос отправлен: 17.03.2002, 16:37
Подгруппа: Общие вопросы по программированию на Ассемблере под Win32

_______________

Отвечает chert
Приветствую Вас, StiGGeR!
Парень привет!!!
Если тебе надо winapi,то могу тебе выслать на мыло(winapi.rar)
только маленькая проблема,я не знаю твоего мыла:))Так что если те надо то напиши на chert@pisem.net



Отправлено: 17.03.2002, 17:36
Отправитель: chert (регистрация: 16/03/2002, ответов на счету: 5)
Russia, Dolgopa

_______________

Отвечает LAO
Приветствую Вас, StiGGeR!
Что Вы понимаете под winapi? WIN API присутствует неотъемлемо в любой версии Windows. Это как прерывания DOS и BIOS в MS-DOS. А любое средство программирования под Винды, будь это MASM32, TASM32, BCB, Visual C++, Visual Basic..., если в нем это предусмотренно, включает поддержку Win API.
Если же Вы под winapi подразумеваете хелр на русском языке, зайдите на сайт http://ww.winnt.rsm.org.ru


Отправлено: 17.03.2002, 19:24
Отправитель: LAO (регистрация: 05/03/2002, ответов на счету: 57)
Россия, Москва

_______________

Отвечает masquer
Здравствуйте, StiGGeR!
Полнее чем на msdn.microsoft.com не будет. Вообще лучше купить 3 диска с MSDN. Поверь, там информации намного больше, чем в тех скудных обрывках, которые идуть с продуктами борланда (по крайней мере раньше)


Отправлено: 17.03.2002, 21:21
Отправитель: masquer (регистрация: 16/01/2002, ответов на счету: 63)
Украина, Николаев

_______________

Отвечает Frank
Приветствую Вас, StiGGeR!
http://nikolayam.narod.ru/api_help.zip
Небольшой! справочник по апи функциям.
А вообще поищи на винте или на своих компактах файл win32.hlp

MSDN я так понял тебя не устроит...


Отправлено: 17.03.2002, 21:25
Отправитель: Frank (регистрация: 14/01/2002, ответов на счету: 121)
КПИ,ФЭЛ,ДА-02
ICQ: 100341415 E-mail: Frank_U@mail.ru
Украина, Киев

_______________

Отвечает Blackeye
Добрый день, StiGGeR!
Если ссйлки на файлы то нате:
ftp://delphi-jedi.org/api/Win32API.zip
http://www.files32.narod.ru/Archiv/winAPI.rar


Отправлено: 17.03.2002, 23:04
Отправитель: Blackeye (регистрация: 15/02/2002, ответов на счету: 43)
URL: http://www.soft4master.h1.ru - Delphi, my programms...
Украина, Запорожье

_______________

Отвечает DiGiT
Добрый день, StiGGeR!
В смысле. Ты ж вроде эксперт. Если прототипы для асма,то они есть в масме и в тасме(win32.inc и прочее), если для сей, то в windows.h tlhelp32.h и прочие. Если про код ,то в kernel32.dll,user32.dll и прочие. Если про описание,то в людом борландовском продукте, кроме ТАСМА(win32.hlp) или в MSDN.
В чем суть вопроса то ? :(


Отправлено: 18.03.2002, 02:09
Отправитель: DiGiT (регистрация: 28/12/2001, ответов на счету: 280)
ICQ:133534725
Russia(),Student

_______________

Отвечает Beeblebrox
Доброе время суток, StiGGeR!
Самый простой способ никак не связан с инетом. Надо просто купить на базаре несколько компактов с MSDN. У меня MSDN на двух дисках от Visual Studio. Там хорошее описание API.


Отправлено: 18.03.2002, 10:59
Отправитель: Beeblebrox (регистрация: 13/03/2002, ответов на счету: 25)
URL: http://beeblbrx.narod.ru - Beeblebrox / TMA HomePage
ICQ #75393045
Ukraine, Kharkov

_______________

Отвечает jc
Добрый день, StiGGeR!
Описание WinAPi представленно очень хорошо представленно на api.wallst.ru
А если тебе нужно ополное описание всех API функций то лутчще достать MSDN там есть все ! С уважением...


Отправлено: 18.03.2002, 11:19
Отправитель: jc (регистрация: 05/02/2002, ответов на счету: 45)
Россия, Йошкар-Ола

_______________

Отвечает v4D
Приветствую Вас, StiGGeR!

Держите:

http://winnt.rsm.org.ru/winapi/winapi.htm

Вот есть справочник, который можно юзать прямо из инета:

http://gabber.2ajaxs.ru/api/winapi.htm


Отправлено: 18.03.2002, 22:44
Отправитель: v4D (регистрация: 17/03/2002, ответов на счету: 7)
Ukraine, Kiev

_______________

Отвечает MovBlack
Здравствуйте, StiGGeR!
www.winnt.ru/winapi


Отправлено: 19.03.2002, 11:09
Отправитель: MovBlack (регистрация: 13/03/2002, ответов на счету: 16)
AsmSOft
Адрес: -
Тел.: -
-
Россия, Владивосток

_______________

Отвечает Топор
Здравствуйте, StiGGeR!

Ну, вот здесь
http://winapi.h1.ru/

или здесь
http://www.compexp.ru/Articles/toolbar.html


Отправлено: 19.03.2002, 23:41
Отправитель: Топор (регистрация: 15/03/2002, ответов на счету: 31)
Радио "Эхо Москвы в Самаре"
Адрес: 443011, Самара, ул. Советской Армии, 217
Тел.: (8462)160302, 162918
URL: http://listen.to/btemple - Хорошая Русская Металлическая команда
Россия, Самара




Форма отправки сообщения
(действительна до момента выхода следующего выпуска рассылки)

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

В почтовых программах форма не работает!!! Открывайте рассылку в браузере Internet Explorer, где и набирайте Ваш вопрос.



 Персональные данные
Ваше имя:
Пароль (экспертам):
E-mail (подписчикам):
Опубликовать мой e-mail в рассылке


 Текст сообщения

Текст вопроса:

Приложение (если необходимо: программа, выдержка из закона и т.п.):



 Выбор подгруппы

Отправить всем экспертам выбранной подгруппы


SpyLOG be number one SUPERTOP

© 2000 - 2002 Россия, Москва. Авторское право: Калашников О. А.


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

В избранное