Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 156 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-12-14
Вопрос №1839
Могут ли макровирусы содержаться в .rtf файлах? Или только в .doc?
Ответ
Здравствуйте, TanaT!
Нет, макросы в формате RTF (rich text format) не поддерживаются.
Отправил эксперт: Sheriff
Эксперт отправил ответов (всего): 10
Экспертная группа: Пользовательская работа с Windows
Вопрос №1840
Здравствуйте, уважаемые эксперты.
Вопрос вот в чем:
после покупки нового компьютера меня кое-что расстроило.
Раньше играя в quake я мог включить в winamp'е свою любимую группу Metallica и наслаждаться процессом - звуки выстрелов и вопли умирающих звучали на фоне музыки. Новая материнская Super Grace со встроенной звуковой AC97 такой радости мне не доставила - на выход идет звук только с одной программы.
Потом я поставил Windows2000 - в ней какая-то программная эмуляция микшера или чего не знаю - и почти все программы выводили звук одновременно, кроме тех, видимо, которые обращались к железу непосредственно (nfs4). W2000 - такую хламину я у себя держать не хочу. Я думаю есть наверное какой-то драйвер для 98-ой. Подскажите, где достать. Дело даже больше не в играх: скажем когда в инете не могу музыку слушать, боюсь пропустить звуки аськи. Заранее спасибо.
Ответов типа поставить в winamp direct sound plugin не предлагать - в 2000-ой все работает безо всяких там direct sound.
Ответ
Здравствуйте, kosstik!
Поставь WDM драйвера под звук - они позволяют под w98 выводить звук одновременно нескольким программам (из-за архитектуры, обычные так не могут).
Отправил эксперт: Sheriff
Эксперт отправил ответов (всего): 11
Экспертная группа: Пользовательская работа с Windows
Вопрос №1842
Здравствуйте эксперты.
Мой друг купил себе компьютер и не сколько игрушек. Ему так не терпелось поиграть, что он не прочитал не одной строчки про windows (да же книжки не держал windows для «чайников»). Вставил компашку, и установил игрушки, благо для этого особого ума не надо, но вот беда одна игрушка не захотела запускаться (вернее пару раз запустилась и всё). Друг мой, изнывая от нетерпения и желания, просто локти готов был кусать от незнания как эту капризную игру запустить. И тут ему пришла "светлая" мысль……!!!! Переустановить игрушку. Но по причинам выше указанным он поступил весьма радикально (однажды он видел, как в нортоне удаляют файлы) запустил нортон и удалил папку, в которой находилась игрушка. После всего со спокойной совестью стал заново ставить игру, но не тут то было…….. инсталлятор определяет наличие этой игры на компьютере и на отрез отказывается её устанавливать. Признаюсь, я в замешательстве, ведь моя репутация «супер профессионала по компьютерам пошатнулась» и потому прошу о помощи. А конкретно имею следующие вопросы:
1. Каковы причины обнаружения инсталляторам стертой игрушки?
2. Как мне помочь своему горе-другу?
Ответ
Здравствуйте, Федор Козлов!
Остались записи в реестре.
Нужно с помощью regedit'a
найти все ключи, относящиеся к игре (HKCU\Software, HKLM\Software) и удалить их вручную, потом игра может отслеживать наличие своих файлов, скопированных в %Win%\System, но это уже реже. Оптимальный вариант (но с чуть большими проблемами) - на другом компе взять и отследить установку при помощи FileMon'a и RegMon'а.
Отправил эксперт: Sheriff
Эксперт отправил ответов (всего): 12
Экспертная группа: Пользовательская работа с Windows
Вопрос №1842
Здравствуйте эксперты.
Мой друг купил себе компьютер и не сколько игрушек. Ему так не терпелось поиграть, что он не прочитал не одной строчки про windows (да же книжки не держал windows для «чайников»). Вставил компашку, и установил игрушки, благо для этого особого ума не надо, но вот беда одна игрушка не захотела запускаться (вернее пару раз запустилась и всё). Друг мой, изнывая от нетерпения и желания, просто локти готов был кусать от незнания как эту капризную игру запустить. И тут ему пришла "светлая" мысль……!!!! Переустановить игрушку. Но по причинам выше указанным он поступил весьма радикально (однажды он видел, как в нортоне удаляют файлы) запустил нортон и удалил папку, в которой находилась игрушка. После всего со спокойной совестью стал заново ставить игру, но не тут то было…….. инсталлятор определяет наличие этой игры на компьютере и на отрез отказывается её устанавливать. Признаюсь, я в замешательстве, ведь моя репутация «супер профессионала по компьютерам пошатнулась» и потому прошу о помощи. А конкретно имею следующие вопросы:
1. Каковы причины обнаружения инсталляторам стертой игрушки?
2. Как мне помочь своему горе-другу?
Ответ
Здравствуйте, Федор Козлов!
Причина здесь в том, что при инсталляции информация записывается в реестр. При повторной инсталляции, программа просматривает реестр и если находит, что игра уже установлена. Поэтому объясните Вашему другу, что программы надо удалять через Панель управления -> Установку/удаление программ. Попробуйте еще раз удалить игру через Установка/удаление программ. Скорее всего не получится, т.к. необходимые файлы были затерты. Тогда зайдите в реестр. Нажмите поиск и удалите все, что связано с этой игрой (то есть все каталоги, строки, в которых содержится название игрушки). Только не перестарайтесь и не удалите чего-нибудь лишнего. Также можно поискать файлы на компьютере, содержащие название игрушки (особенно c расширением *.ini) и тоже их удалить. После всего этого перезагрузиться и установить игру заново.
С уважением, Евгений!
Отправил эксперт: Evgeny (http://edu.ru.ru - Обучающие программы)
Эксперт отправил ответов (всего): 26
Экспертная группа: Пользовательская работа с Windows
Вопрос №1843
Здравствуйте,уважаемые эксперты!Подскажите пожалуста как
переключить раскладку клавиатуры В TurboDebugger 5.0
с русского на англиский. Спасибо за ответ.
Ответ
Здравствуйте, Юрий!
Левые Shift+Ctrl
Отправил эксперт: ScientiaCupidus
Эксперт отправил ответов (всего): 15
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1844
Привет всем!
У меня такой вопрос: Как лучше учить ассемблер? По каким книгам?
Ответ
Здравствуйте, irgi!
Если хочешь хорошо знать DOS, бери книгу Рудакова и Финогенова -"Программируем на языке ассемблера IBM PC".
Ели хочешь поскорее начать писать под Win32 - В. Юров "Assembler. Учебник"
И в любом случае, бери Зубкова - "Ассемблер для DOS,Windows,Unix"
Отправил эксперт: ScientiaCupidus
Эксперт отправил ответов (всего): 16
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1841
Здравствуйте эксперты !
Я написал программу, читающую физические сектора диска при помощи функции int 13h. И обнаружил весьма интересную вещь !!! На дискетах, как и положено, первый загрузочный сектор находится на стороне 0, цилиндре 0, сектор 1, а вот на винчестере первый загрузочный сектор находится на стороне 1, цилиндре 0, сектор 1. В связи с этим у меня возникли следующие вопросы:
1. Почему первый загрузочный сектор винчестера находится не на стороне 0?
2. Как в таком случаи происходит загрузка компьютера?
И ещё, не могли бы вы выслать или сказать, где найти смещения в первом загрузочном секторе для windows98, а то имеющаяся в наличии литература приводит смещения немного другие (она же сообщает, что формат загрузочного сектора меняется в зависимости от версий).
Ответ
Здравствуйте, Федор Козлов!
Мне кажеться ты ошибся...
на дискетах - все правильно, 0, 0, 1.
На винте то же самое. MBR находится именно там.
НО на винте есть еще и партишины, первый партишин начинается обычно с первого трека, и у него свой бутсектор.
Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 215
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1841
Здравствуйте эксперты !
Я написал программу, читающую физические сектора диска при помощи функции int 13h. И обнаружил весьма интересную вещь !!! На дискетах, как и положено, первый загрузочный сектор находится на стороне 0, цилиндре 0, сектор 1, а вот на винчестере первый загрузочный сектор находится на стороне 1, цилиндре 0, сектор 1. В связи с этим у меня возникли следующие вопросы:
1. Почему первый загрузочный сектор винчестера находится не на стороне 0?
2. Как в таком случаи происходит загрузка компьютера?
И ещё, не могли бы вы выслать или сказать, где найти смещения в первом загрузочном секторе для windows98, а то имеющаяся в наличии литература приводит смещения немного другие (она же сообщает, что формат загрузочного сектора меняется в зависимости от версий).
Ответ
Здравствуйте, Федор Козлов!
На самом деле это не совсем верно. Загрузочный сектор винчестрера, как ему и положено, находится на стороне 0, цилиндре 0, сектор 1. Только называется он Master Boot Record и содержит информацию о разделах, в том числе и об активном разделе.
А на стороне 1, цилиндре 0, секторе 1 находится загрузочный сектор для раздела C (и он, скорее всего, активный).
Учите матчасть, Шура! (с)
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 115
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1845
я хотел бы написать прогу блокирующая hdd, под дос и win,
можно ли ее написать как boot(?),то есть ее запустил и хряк
жд не читается совсем.:))
Без пароля.Или можно забить ее в биос???
Ответ
Здравствуйте, er_ager 00!
Элементарно, причём не надо быть семи пядей во лбу!
В MBR и DOS-разделах есть идентификатор (AA55h или 55h AAh).
Запускаешь DiskEdit из стандартной поставки NortonUtilites и пробиваешь в последние байты нулевого сектора своего физического(!) диска нули. После перезагрузки BIOS не видит MBR вообще (ну и загрузочный раздел в частности).
При загрузке с дискеты просто заменяешь эти же байты на исходное значение тем же способом.
Беда другая: при загрузке с дискеты в каких-то версиях MS-DOS (может даже Win95/98) загрузчик вешается. Эту инфу не проверял, посему экспериментировать без спеца под рукой (имеется ввиду не понтовый спец со второго курса, а тот, кто реально восстанавливал винты) не советую. Хотя можно воспользоваться аварийной дискетой Линуха а потом скопировать копию MBR в device hda (это уже лирическое отступление: типа я сказал как, но вина на мне не лежит - отмазался;)
Отправил эксперт: Артём Шегеда (shegeda.chat.ru - Личная страничка - ничего особенного)
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1843
Здравствуйте,уважаемые эксперты!Подскажите пожалуста как
переключить раскладку клавиатуры В TurboDebugger 5.0
с русского на англиский. Спасибо за ответ.
Ответ
Здравствуйте, Юрий!
Тут аозможны варианты. Все зависит от того, какой русификатор установлен у вас. Попробуйте следующие комбинации
- Left Shift + Right Shift
- Left Ctrl + Left Shift (переключение на русский - Right Ctrl + Right Shift)
- Left Alt + Left Shift
- Right Ctrl + Right Shift
- Right Ctrl
- Rigth Shift
- Scroll Lock
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 116
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1849
Здравствуйте, господа эксперты.
У меня небольшой вопрос, может быть глупый но он
просто вдруг возник и мне больше не у кого спросить,кроме вас. В чем разница между макросом и процедурой.
Ответ
Здравствуйте, Andrew!
Процедура вызывается в программе с помощью call и возвращает управление с помощью ret при этом требуется передача параметров через регистры или через стек.
Макросы обрабатываются на этапе компиляции, то есть компилятор вглючает тело макроса непосредственно в то место кода, откуда он был вызван. соответственно никаких call/ret в этом случае не требуется.
Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 216
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1849
Здравствуйте, господа эксперты.
У меня небольшой вопрос, может быть глупый но он
просто вдруг возник и мне больше не у кого спросить,кроме вас. В чем разница между макросом и процедурой.
Ответ
Здравствуйте, Andrew!
Макрос - конструкция, выполняющая некоторые действия на этапе компиляции (в частности, вставляющая инструкции процессора в исходный код). Процедура же - жестко заданная последовательность инструкций процессора.
То есть, процедуру написал - что написал то и будет. Макрос написал - ещё ничего не сделал, его нужно выполнить - а выполнится он во время компиляции.
Отправил эксперт: Артём Шегеда (shegeda.chat.ru - Личная страничка - ничего особенного)
Эксперт отправил ответов (всего): 10
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1849
Здравствуйте, господа эксперты.
У меня небольшой вопрос, может быть глупый но он
просто вдруг возник и мне больше не у кого спросить,кроме вас. В чем разница между макросом и процедурой.
Ответ
Здравствуйте, Andrew!
В принципе, если ты напишешь простенькую прогу, в которой будет и макурос и процедура-лучше поймешь, а словами звучит так
Процедура-это подпрограмма, то есть в код вставляется только вызов(2-3 байта), но тратится время на сам вызов-call достаточно долог
При вызове макроса в это место вставляется тело макроса, то есть время на вызов не тратится, но размер проги увеличивается...
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 228
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1846
Здравствуйте!
Как в Visual C 6.0 скомпилить sys-файл?
Исходники есть, DDK вроде тоже...
Ответ
Здравствуйте, Sensey!
Ели есть нормально установленный DDK и с установленными SET и PATH запусти build.exe (это от DDK) в директории где исходники - он все сам и сделает.
Иначе, с VC 6.0 придется повозиться, но это не сложно.
Компилировать исходники обычным образом, но следует ему указать путь к include файлам DDK.
А вот линкеру надо указать параметры:
/DRIVER, /ENTRY:DriverEntry, /LIBPATH:<путь к .lib-файлам DDK>, /OUT:
Также перчислить .lib-файлы DDK - они в директории примерно такой: C:\NTDDK\libchk\i386\, D:\NTDDK\libfre\i386\.
Возможно еще что-нибуть придется настраивать в параметрах компиляции и линковки, но сейчас на вскидку невспоминается. Лучше всего установить почеловечески DDK и использовать его build.exe, но учти что без VC или SDK он работать не будет.
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 15
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1850
Здравствуйте, эксперты !
Подкажите, как загрузить в SoftIce DOS-программы.
У меня версия 4.0.5. Open Module открывает только WIN32-проги.
Ответ
Здравствуйте, Ramil!
Я делаю так: ставлю останов на прерывании 21h (оно всегда вызывается ДОСовской программой хотя бы для проверки версии ДОС)
bpint 21
и запускаю прогр. обычным способом.
Первое прерывание по вектору 21 произведет останов программы.
Есть еще вариан (тоже им иногда пользуюсь и он работает для всех типов EXE): находишь стартовый адрес программы, сохраняешь в "уме" первый байт по этому адресу и заменяешь его на 0CCh (это int 3).
В SoftICE устанвливаешь i3here on или faults on, запускаешь прогр. и входишь в нее по ошибке и иногда попадаешь в тело обработчика ошибок OS. В последнем случае, это иногда и место в твоей программе с int 3, думаю, ты сам сможешь найти. Остается уменьшить значение EIP и заменить 0CCh на байт, что сохранили в "уме".
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 16
Экспертная группа: Дизассемблеры
Вопрос №1848
Здравствуйте, эксперты !
Подкажите, как работать с прерываниями INT 21h в WIN32.
Ответ
Здравствуйте, Ramil!
Для програм ДОС-сессий так же как и всегда. А для Win32 21h прерывание не документировано и вроде как не используется. В Win32 API нет ф-ций дающих возможность работать непосредственно с прерываниями - многоплатформенность... А в драйверах пожалуйста - сколько угодно.
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 18
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1845
я хотел бы написать прогу блокирующая hdd, под дос и win,
можно ли ее написать как boot(?),то есть ее запустил и хряк
жд не читается совсем.:))
Без пароля.Или можно забить ее в биос???
Ответ
Здравствуйте, er_ager 00!
Конечно можно. И к тому же, все можно.
Для ДОС и Windows 3.x надо перхватить прерывание 13h - BIOS сервис для дисков и делать с ним что душе угодно.
Для Win32, поскольку эти ОС напрямую обращаются к дискам, надо писать драйвера (это не очень сложно, это просто много всяких help-ов) и забыть о BIOS и его сервисах.
Но можно присовокупить и BIOS: в него вписать код, который при получении какой-либо критической информации (неверный пароль, нет ключевой дискеты и т.п.) отключит линию IDE, а это, правда, сразу два устройста на шине. Возникает соблазн не выключать линию, а указать, что на шине IDE нет такого-то устройства. Но Win32 немного неглупа и может находить эти не указанные в параметрах BIOS устройства. При отключении лини IDE (конечно надо разобраться с возможностью этой операции на конкретных материнках и может оказаться, что не все мат.платы поддерживают такое надругательство) на опыте было исчезновение устройст этой шины в Win32.
Может быть, даже такой код можно и в BOOT-сектор вставить, только антивирусы будут надоедать.
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 19
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1847
Здравствуйте эксперты!
Опять я к вам с этой же программой, в которой макрос не работает:(. Одну ошибку я смог убрать, осталась еще одна. С ней совладать никак не могу, помогите пожалуйста!
По совету Ayl, смотрел в книижку по Tasm 3.0, но там написано:
=<текстовая_строка> Заключенная в кавычки текстовая строка задает используемое по умолчанию значение аргумента (когда фактический аргумент является нулевым или состоит из пробелов).
Но так не работает, а работает вот так:
Ответ
Здравствуйте, ILYA D.!
Читать надо внимательнее!
Значит, так. Формат сакроопределения (в режиме MASM):
name macro list_parameters
body
endm
При этом в качестве list_parameters нужно использовать выражения вида:
имя_параметра[:тип_параметра], где имя_параметра - это символьное
имя, используемое для подстановки (вместо него) фактического
параметра, передаваемого макрокоманд при ее вызове.
Необязательный "тип_параметра" задает какую-то информацию о виде
фактического параметра, воспринимаемого при вызове макрокоманды.
Поддерживаются следующие типы:
-----------------------T----------------------------------------
¦ Тип ¦ Значение ¦
+----------------------+----------------------------------------+
¦ REQ ¦ Параметры не могут быть нулевыми или ¦
¦ ¦ состоять из пробелов. ¦
¦ ¦ ¦
¦ =<текстовая_строка> ¦ Заключенная в кавычки текстовая строка ¦
¦ ¦ задает используемое по умолчанию зна- ¦
¦ ¦ чение параметра (когда фактический па- ¦
¦ ¦ раметр является нулевым или состоит из ¦
¦ ¦ пробелов). ¦
¦ ¦ ¦
¦ VARARG ¦ Фактический параметр состоит из ос- ¦
¦ ¦ тальной части макровызова, интерпрети- ¦
¦ ¦ руемого как список параметров. Для ¦
¦ ¦ обеспечения этой интерпретации исполь- ¦
¦ ¦ зуются угловые скобки, запятые. ¦
¦ ¦ ¦
¦ REST ¦ Фактический параметр состоит из ос- ¦
¦ ¦ тальной части макровызова, интерпрети- ¦
¦ ¦ руемого как непосредственный текст. ¦
L----------------------+-----------------------------------------
Поэтому ваша программа должна иметь следующее определение макроса:
def_tabl type:=, len:REQ
tabl_&type d&type len dup (0)
endm
Только позволю себе заметить, что эта конструкция позволяет вам задать не более одной таблицы каждого типа, потому что при попытке формирования второй таблицы возникнет ошибка:
Symbol already defined alsewhere: TABL_<тип>
Так что думайте!
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 117
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1852
uvazaemie eksperti pomogite pozaluysta!!! moy vint nakrilsya, ya vishel v internet cherez OS QNX zagruzka s flupy 1.4 :(((( vint FUGITSU 4.3Gb v biose prosmatrivaetsya otlichno no pry zagruzke pishet chtoto vrode NOT SISTEM DISK PRES ANY KEY..... :( zagruzhaius s CD vint ne vidno :-0 ne FDISK ne FORMAT ne rabotaet chto delat ???????? vozmozno li vostanovit informaciu ili hotya bi sam vint???? kak ya ponyal eto boot sektor nakrilsya??? pppoooommmmggggiiiitttteeeeee!!!!!!!!!!!!!!!!!! (mogite pechatat otvet russkimi kludzikami)
Ответ
Здравствуйте, nikolay!
Попробуй на машине с Виндой подключить его вторым-может увидит...
Еще попробуй PQMagic, если он не поможет, только тогда LowFormat, но не простой, а от производителя-другим можно полностью убить винт
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 229
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1841
Здравствуйте эксперты !
Я написал программу, читающую физические сектора диска при помощи функции int 13h. И обнаружил весьма интересную вещь !!! На дискетах, как и положено, первый загрузочный сектор находится на стороне 0, цилиндре 0, сектор 1, а вот на винчестере первый загрузочный сектор находится на стороне 1, цилиндре 0, сектор 1. В связи с этим у меня возникли следующие вопросы:
1. Почему первый загрузочный сектор винчестера находится не на стороне 0?
2. Как в таком случаи происходит загрузка компьютера?
И ещё, не могли бы вы выслать или сказать, где найти смещения в первом загрузочном секторе для windows98, а то имеющаяся в наличии литература приводит смещения немного другие (она же сообщает, что формат загрузочного сектора меняется в зависимости от версий).
Ответ
Здравствуйте, Федор Козлов!
Да, на харде загрузочный сектор чаще всего находится на стороне 1, силиндр 0 и сектор 1, но это совсем не обязательное условие.
Вы забываете о секторе разделов томов (Partition Table). Он расположен по адресу: сторона 0, силиндр 0, сектор 1.
Вот он и грузится в первую очередь. Его код определяет активный загрузочный том, считывает в память загрузочный сектор этого тома (этот сектор чаще всего расположен на следующей стороне относительно начала тома и в секторе 1, но это тоже не обязательно) и передает ему управление.
Все это справедливо для платформ выполненных на базе x86. На других платформах эта процедура несколько отличается.
Специального смещения Windows98 или подобного в загрузочном секторе нет. Там содержится информация только о св-вах раздела.
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 20
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1857
uvazaemie eksperti pomogite pozaluysta!!! moy vint nakrilsya, ya vishel v internet cherez OS QNX zagruzka s flupy 1.4 :(((( vint FUGITSU 4.3Gb v biose prosmatrivaetsya otlichno no pry zagruzke pishet chtoto vrode NOT SISTEM DISK PRES ANY KEY..... :( zagruzhaius s CD vint ne vidno :-0 ne FDISK ne FORMAT ne rabotaet chto delat ???????? vozmozno li vostanovit informaciu ili hotya bi sam vint???? kak ya ponyal eto boot sektor nakrilsya??? pppoooommmmggggiiiitttteeeeee!!!!!!!!!!!!!!!!!!
Ответ
Здравствуйте, nikolay!
Вы правила отправки вопросов читали? Уже 7 раз ваш вопрос ко мне пришел!
Ну не знаю я, чем вам помочь!!!
Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 118
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1822
Здравствуйте.
По поводу вопроса №1804.
Получил несколько ответов, но, к сожалениею, они не помогли. Повторю вопрос.Надо написать программу, резидент. Суть в следующем: в любом текстовом редакторе, при нажатии на клавишу печатается соответствующий символ, надо сделать чтобы и при отжатии клавиши печатался этот же символ (специальные клавиши обрабатывать не обязательно). Делаю так:
1. Перехватываю int09h.
2. В своем обработчике определяю сканкод нажатой клавиши (читаю из буфера в памяти, или через порт 60h).
3. Старший бит(7) сбрасываю.(0-нажатие, 1-отжатие)
4. Записываю сканкод обратно в буфер по адресу 0:401е (или 0040:001е - это ведь одно и тоже?)
5.Завершаю работу обработчика одним из 2-х способов:
5.1. Передаю управление старому обработчику.
5.2. Завершаю работу, как написано в TechHelp.
Ни один вариант не работает, ни под окнами, ни под досом(Win-FAR,VC-DOS).
В связи с этим - вопросы:
1. Правильно ли я обращаюсь к буферу?
2. Если не правильно, то как правильно?(желательно очень подробно, как, что, сколько и откуда читать и записывать)
3. Если правильно, то почему не работает?(тоже, как можно подробнее)
Если это реально, пожалуйста, переделайте прогу, чтобы работала или объясните очень подробно про работу с буфером(если ошбка в работе с ним).
Зарание благодарен.
Антон.
Код прилагаю.
Ответ
Здравствуйте, Anton!
Несколько с опозданием, работы навалилось, но попробуй так:
.model tiny
.code
.186
org 100h
Start:
old_int09h:
jmp short initialize ; 2 bytes
dw 0 ;2+2=4
Int09h proc far
cli
push ax
in al, 60h
and al, 80h
jnz lab_KeyUp
lab_goto_orig:
pop ax
jmp dword ptr cs:old_int09h
lab_KeyUp:
push es
xor ax, ax
mov es, ax
mov ax, word ptr es:[041ch]
and ax, 0fh
sub ax, 02h
cmp ax, 01eh
jae lab_done
add ax, 03dh
sub ax, 01eh
lab_done:
mov word ptr es:[041ch], ax
pop es
jmp lab_goto_orig
; pusha
; mov ax,0040h
; mov es,ax
; mov ax,es:001eh
; and al,7fh
; mov es:001eh,ax
; popa
; sti ;*
; jmp dword ptr cs:old_int09h ;*
; in al,61h
; push ax
; or al,80h
; out 61h,al
; pop ax
; out 61h,al
; mov al,20h
; out 20h,al
; popa
; sti
; iret
Int09h endp
initialize proc near
mov ax,3509h
int 21h
mov word ptr old_int09h,bx
mov word ptr old_int09h+2,es
mov ax,2509h
mov dx,offset int09h
int 21h
mov dx,offset initialize
int 27h
initialize endp
end Start
Отправил эксперт: Kgm
Эксперт отправил ответов (всего): 22
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №1857
uvazaemie eksperti pomogite pozaluysta!!! moy vint nakrilsya, ya vishel v internet cherez OS QNX zagruzka s flupy 1.4 :(((( vint FUGITSU 4.3Gb v biose prosmatrivaetsya otlichno no pry zagruzke pishet chtoto vrode NOT SISTEM DISK PRES ANY KEY..... :( zagruzhaius s CD vint ne vidno :-0 ne FDISK ne FORMAT ne rabotaet chto delat ???????? vozmozno li vostanovit informaciu ili hotya bi sam vint???? kak ya ponyal eto boot sektor nakrilsya??? pppoooommmmggggiiiitttteeeeee!!!!!!!!!!!!!!!!!!
Ответ
Здравствуйте, nikolay!
Можно попробовать FDISK /MBR
хотя не разу не видел чтобы помогало
также можно попробовать воспользоваться другим загрузочным диском, может он поможет
а так-же на сайте Фужицу есть утилитка которая обнуляет первый кластер диска, так как у тебя дос винт не видет, то она может оказаться единственной альтернативой, хотя это можно сделть и при помощи Disk Edit
Отправил эксперт: VD (www.chat.ru/~vdragon_pas/index.htm - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 63
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1739
Здравствуйте, эксперты!
Где можно найти документацию по VxDCall на русском языке или на английском, хотя бы?
Ответ
Здравствуйте, Ivan!
Вся информация есть в DDK.
Скачать можно на сайте Microsoft.
Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 7
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1850
Здравствуйте, эксперты !
Подкажите, как загрузить в SoftIce DOS-программы.
У меня версия 4.0.5. Open Module открывает только WIN32-проги.
Ответ
Здравствуйте, Ramil!
ладно, поробую ответить на этот вопрос в пятый раз...
найди в папке SoftIce-а файл dldr.exe. Запусти его и увидишь все что нада.
А вообще какие проблемы? запускаешь прогу свою любимую (которая под ДОС) в виндах и жмешь ctrl+D, если SoftIce запучен, то произойдет break.
Отправил эксперт: Broken Sword (http://www.implozia.ru/imp/music/zemfira-traffic.mp3 - незнаю, зачемто вплел)
Эксперт отправил ответов (всего): 249
Экспертная группа: Дизассемблеры
Вопрос №1810
Уважаемые эксперты !
2 вопроса :
1) Не хочет работать turbodebuger (td.exe). Пишет "No entry
point".мОЖЕТ КТО ЗНАЕТ , что ему нужно для полного счастья?
2) Numega SoftIse. Пытаюсь поставить breakpoint на Win-функцию (bpx MessageBoxA). Функции типа MessageBox (без A,16bit) он принимает,а на функции типа MessageBoxA (32bit)
ругается : "Symbol not defined" . Windows стоит 98ю 32bit.
И чего это он функции не находит ?
Заранее спасибо.
ARa
Ответ
Здравствуйте, ARa!
А метки типа start,end start определены.
Скорее всего нужно разкоментировать строки с путями к DLL в файле
Winice.dat.
Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1851
uvazaemie eksperti pomogite pozaluysta!!! moy vint nakrilsya, ya vishel v internet cherez OS QNX zagruzka s flupy 1.4 :(((( vint FUGITSU 4.3Gb v biose prosmatrivaetsya otlichno no pry zagruzke pishet chtoto vrode NOT SISTEM DISK PRES ANY KEY..... :( zagruzhaius s CD vint ne vidno :-0 ne FDISK ne FORMAT ne rabotaet chto delat ???????? vozmozno li vostanovit informaciu ili hotya bi sam vint???? kak ya ponyal eto boot sektor nakrilsya??? pppoooommmmggggiiiitttteeeeee!!!!!!!!!!!!!!!!!! (mogite pechatat otvet russkimi kludzikami)
Ответ
Здравствуйте, nikolay!
Что за QNX такое? может там FAT другой совершенно, конечно тогда ничего не увидишь, если загрузишься с ДОС-овской дискетки (или CD, это пофигу)
В любом случае делай так.
1. Залазь в BIOS. Жми HDD Auto Detection. Если нашелся твой винт, значит см. пункт 2.
2. Ищи в том же BIOS-е HDD Low Level Format. Если есть такое, то лезь и форматируй. Если нет - откручивай его нафиг и иди ищи друзей со старыми материнами - там почти везде есть ета фича.
3. Третий вариант. Ничего форматировать вообще не нада, найди загрузочную дискету от виндов загрузись и запусти FDISK!!!!! Как это не работает???? ну как может в BIOS-е видиться, а FDISK видете ле не видит!!!! Это бред. Наоборот может быть. Ито если контроллер стоит нематеринский (на 16 винтов, есть такие чуда).
Отправил эксперт: Broken Sword (http://www.implozia.ru/imp/music/zemfira-traffic.mp3 - незнаю, зачемто вплел)
Эксперт отправил ответов (всего): 250
Экспертная группа: Модели, виды и типы компьютеров (hard)
Вопрос №1830
Привет эксперты, помоготе плиз разобратся с функцией CreateFile, мне непонятно какой вид должна иметь структура Security_struc, смещение которой я передаю. И где взять дискриптор(HANDLE) который передается последним.
За пример буду очень благодарен ;)
P.S. Случайно не подкинете ссылки на русские онлайновые справочники WinApi?
Ответ
Здравствуйте, Serzh!
Насчет параметра hTemplateFile в API сказано что этот параметр
для win95 должен быть ноль.
Security_struc тоже можно не передовать тогда аттрибут защиты будет
по умолчанию.
push 0
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push 0
push FILE_SHARE_READ or FILE_SHARE_WRITE
push GENERIC_READ or GENERIC_WRITE
push offset File_Name
call CreateFileA
Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 10
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1837
Уважаемые эксперты!
Подскажите, пожалуйста, где можно достать описание WinAPI (функции с параметрами, структуры, сообщения...)
Язык (английский, русский) некритичен, но желательно конечно на отечественном :)
Ответ
Здравствуйте, John!
В borland c++ есть полное описание API.
Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 11
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №1844
Привет всем!
У меня такой вопрос: Как лучше учить ассемблер? По каким книгам?
Ответ
Здравствуйте, irgi!
Можно и по книгам.
Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 12
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Форма подачи вопроса
ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!
Регистрация в качестве эксперта
Архив выпусков
Управляющий рассылкой,
Калашников Олег:
Assembler@Kalashnikoff.ru
ICQ No.: 68951340
URL сайта подписчиков:
http://www.Kalashnikoff.ru
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав. |
Реклама на сайте Kalashnikoff.ru
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||