Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
"Ассемблер? Это просто! Учимся программировать (FAQ)"
Выпуск № 226
от 25.03.2002, 02:05
Администратор: Калашников Олег
Сайт Администратора: Программирование на Ассемблере
Старейшины рассылки |
1. Broken Sword - ответов: 403. 2. Painbringer (нечто наподобие домашней страницы) - ответов: 371. 3. Sensey - ответов: 334. 4. Dron (Операционная система с нуля!) - ответов: 281. 5. DiGiT - ответов: 280. |
Новости |
Вопрос № 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, где и набирайте Ваш вопрос.
© 2000 - 2002 Россия, Москва. Авторское право: Калашников О. А. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||