Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 473
от 21.01.2003, 06:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2457 Отправлено ответов: 7411 Активность: 301.6 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Igoryk Статус: Опытный Общий рейтинг: 145.55 URL: IgorykSoft [Подробней >>] |
keleb-glin Статус: Опытный Общий рейтинг: 113.54 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.29 URL: Программирование [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114.1 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 146.35 [Подробней >>] |
Andrew Vext Статус: Опытный Общий рейтинг: 107.29 [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 121.63 URL: Страничка рассылки по Паскалю Телефон: +38 (0572) 41-76-04 д. [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.49 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 139.45 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Eugene Статус: Опытный Общий рейтинг: 108.63 URL: мощный файловый архив [Подробней >>] |
mang Статус: Доверительный Общий рейтинг: 110.58 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 126.99 URL: моя рассылка по Protected Mode [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2421. Здравствуйте Эксперты! У меня на компьютере такая же проблема как в вопросе №2323. По совету Bob Joh... (ответов: 9)
Вопрос № 2423. Здравствуйте уважаемые эксперты! У меня несколько вопросов. Как использовать: SysAnimate32 (Тут ... (ответов: 2)
Вопрос № 2424. Уважаемые эксперты, объясните, пожалуйста, почему у меня эта мулька не работает? Мне нужно удалить в... (ответов: 4)
Вопрос № 2425. >> Есть достаточно сложное 1 Мбайтовое приложение >> под Win32. При загрузке оно считывает >> неско... (ответов: 1)
Вопрос № 2426. Здравствуйте ! Помогите пожалуйста информацией (например, ссылочку)про написание драйверов под Windo... (ответов: 2)
Вопрос № 2427. Всем привет,я думал рассылка пропала, не получал 2-ва месяца, наверное глюкнолу что-то. Помогите реб... (ответов: 1)
Вопрос № 2429. Здрям! У меня к вам такой вопросец:-)) 1)В последнее время на меня прямо-таки обрушился поток вирусо... (ответов: 4)
Вопрос № 2430. Здравствуйте уважаемые эксперты. Помогите кто чем может. 1. Надо доки по защищенному режиму 1.1 Учеб... (ответов: 1)
Вопрос № 2431. Уважаемые эксперты! У меня возник такой вопрос: почему при запуске некоторых старых программ комп го... (ответов: 4)
Вопросов: 9, ответов: 28
Вопрос № 2421 |
Здравствуйте Эксперты!
У меня на компьютере такая же проблема как в вопросе №2323.
По совету Bob Johnson дизассемблировал драйвера видеокарты,
но получить исходники драйверов у фирмы изготовителя не удалось. Сейчас перевожу исходный код драйверов с Ассемблера
на Бейсик. Исходники получаются гораздо компактней, чем на Ассемблере. В связи с чем вопросы :
1. Зачем все таки нужен этот Ассемблер ?
2. Развитие процессоров приведет к тому, что мнемокод будет не нужен, что будете делать ? Например процессор оптимизированный под С++ .
Вопрос отправлен: 15.01.2003, 19:34
Отправитель: konst
[Следующий вопрос >>] [Список вопросов]
Отвечает Igoryk
Добрый день, konst!
Ассемблер это родной язык процессоров. Зачем он нужен? Затем, что это единственный язык на который можно перевести любую программу.
Ответ отправлен: 16.01.2003, 18:02
Отправитель: Igoryk
Отвечает keleb-glin
Доброе время суток, konst!
Ну, во-первых, не факт, что если исходник больше, то и скомпилированный код больше. Всё зависит от компилятора. Компиляторы языков высокого уровня добавляют в код много лишнего, т.к. должны сами заботиться о стабильности программы, да и к тому же не способны нормально оптимизировать код.
А теперь объясни, как ты представляешь себе оптимизацию под С++? Это что ли встроенный интерпретатор? Бред. Процессор воспринимает только машинные коды. Поэтому компактность и качество машинного кода ( или на асме, т.к. весь мнемокод переводится в машинный один в один ), а ни какого либо ещё определяет производительность.
Ответ отправлен: 15.01.2003, 20:47
Отправитель: keleb-glin
Отвечает Bob Johnson
Здравствуйте, konst!
> Сейчас перевожу исходный код драйверов с Ассемблера
на Бейсик
Как ты это делаешь, если "получить исходники драйверов у фирмы изготовителя не удалось"?
> Исходники получаются гораздо компактней, чем на Ассемблере
И это правильно. Ты же ведь используешь встроенную в VB поддержку Direct3D и OpenGl, поэтому драйвер видеокарты, написанный на VB всегда получается компактнее, чем на остальных языках.
> 1. Зачем все таки нужен этот Ассемблер ?
См. на моей странице в разделе FAQ (bobjohnson.nm.ru)
> 2. Развитие процессоров ... что будете делать ?
Курить бамбук и отвечать на вопросы на RusFaq. Это как анекдот социалистических времен:
У рабочего на заводе спрашивают:
- А вот если будет бутылка водки стоить 5 рублей, пить будешь?
- Буду!
- А если 10?
- Буду!
- А если 30?
- Все равно буду!
- А деньги-то на водку где брать тогда будешь?
- А какая разница - как была деталь - бутылка, так и останется!
(намек понял?)
> Например процессор оптимизированный под С++ .
А еще будет текстовый процессор, аналог MS Word, только в одной микросхеме - впаяй ее в обычную шариковую ручку и получи 15 русских шрифтов бесплатно! И еще изобретут телепортацию, но это будет уже при коммунизме, который уже на горизонте! А что такое "горизонт" - это воображаемая линия, удаляющиеся по мере приближения к ней.
И теперь серьезно - если все-таки и придумают процессор, понимающий С++, то будут языки программирования, работа в которых будет заключаться в перемещении цветных кубиков. И такие перцы, как ты будут кричать: "зачем нам С++", когда можно использовать их.
А если компьютеры научаться читать мысли... То вы и русский язык забудете...
Ответ отправлен: 16.01.2003, 22:52
Отправитель: Bob Johnson
Отвечает baldr
Приветствую Вас, konst!
Кажется, это вопрос про не слушающийся курсор мыши? Так, вроде, выяснили, что это
провод перетерся? Или я что-то путаю?
Переводить исходный код драйверов с ассемблера на Бейсик? :)) Ну, оно, конечно - исходники-то
будут короче... А ты скомпилируй-скомпилируй! :)) Хе-хе... :)) Я бы у себя такое запускать
не стал! Ты думаешь, производители драйверов пишут на Си и асме из-за того, что бейсика не знают?
Большой привет твоему процессору...
Я прямо жду не дождусь - когда же появятся процессоры, транслирующие C++ код! Особенно с
виртуальными функциями, организацией полиморфизма и множественного наследования от моих же
классов...
А уж если мнемокод будет не нужен, мы все прямо выйдем на площадь и дружно рядами повесимся! :(
Товарищ, ну глупости же говоришь! :( Ну просто надоело уже отвечать на такие вопросы, честное слово!
Почитай - какие вопросы здесь задают - вряд ли, когда потребуется изменить пару байт в защищенном
файле, будут брать С++! Это только один пример.
Ответ отправлен: 16.01.2003, 00:46
Отправитель: baldr
Отвечает masquer
Доброе время суток, konst!
1. Да не зачем он не нужен, а мы тут все просто фигней маемся.
2. Бред сумасшедшего. На Си даже толком стандарта единого нет (даже ANSI C, который все неописывает, не все соблюдают), так что ближайшую сотню-другую лет люди еще будут маятся с никому не нужным ассемблером.
Ответ отправлен: 16.01.2003, 11:20
Отправитель: masquer
Отвечает Andrew Vext
Приветствую Вас, konst!
Конечно, код на Бейсике (текст) компактней. Но скомпилируйте его - и что вы получите? Плюс к любому языку вы потащите runtime-библиотеку (даже к Си). Но когда напишете драйвер видеокарты на Бейсике - вы уж его где нибудь опубликуйте. Это будет наверно первый в мире драйвер на Бейсике.
Как вы себе представляете процессор оптимизированный под С++? Есть процессоры под Java - но опять же они выполняют не чисто Java, а скомпилированный байт-код. То есть байт-код является ассемблером для данного процессора.
Andrew Vext
Ответ отправлен: 16.01.2003, 12:10
Отправитель: Andrew Vext
Отвечает Sensey
Добрый день, konst!
И что, на Бейсике получается то же самое?
После того, как переведешь - откоппили, и посмотри что тебе Бейсик сделает - в смысле размера проги и быстродействия.
Далее, я как то задавал задачу:
Дано устройство: 1Кб под код, 128 байт под данные и стек.
Реализовать: Сканирование клавиатуры, вывод на текстовый экран 4х40 символов, передачу всего этого либо через RS232(COM), либо через RS485.
Сможешь ли ты это вместить, если будешь писать на Бейсике, С, С++ и иже с ними?
Ответ отправлен: 16.01.2003, 12:14
Отправитель: Sensey
Отвечает Ayl
Добрый день, konst!
Исходный код меньше? Ну так и не удивительно.
А ты компилировать не пробовал? И сравнить результаты. Ну и кто меньше? Я уж не говорю о том, что любой компилятор добавит в твою программу свои процедуры для обеспечения корректной работы твоего модуля. А на асме ты того же можешь добиться гораздо более простыми средствами - все в твоих руках.
2. А процессору мнемокод и сейчас не нужен. Мнемокод нужен человеку для удобства создания и понимания программ. Процессор все равно работает только с наборами битов. И насчет того, что будет создан процессор, оптимизированный под Си++ - сильно сомневаюсь. Просто дело все в том, что Си (так же, как и любой другой ЯВУ) слишком сложен и имеет очень много наворотов. И зашивать их в схемы? Насколько увеличится сложность процессора? К тому же, для такого процессора Си будет являтся ассемблером :-) Как это не парадоксально звучит. Все дело в том, что языком ассемблера называют символическое представление машинного языка. А так как в твоей воображаемой машине машинным языком являются команды Си, то и языком ассемблера будет язык Си.
Но это утопия.
Приложение:
Ответ отправлен: 16.01.2003, 12:27
Отправитель: Ayl
Отвечает Maverick
Добрый день, konst!
Непонял, на какой бейсик?
Ты когда закончишь переводить драйвер видюхи на бейсик покажи, плиз, что у тебя получится.
Ответ отправлен: 17.01.2003, 07:58
Отправитель: Maverick
Вопрос № 2423 |
Здравствуйте уважаемые эксперты!
У меня несколько вопросов.
Как использовать:
SysAnimate32 (Тут хотелось бы, если вам не трудно, чтобы был пример открытия и вывода на экран файла находящегося на жёстком диске).
CHECKBOX (тут есть ещё вопрос: что нужно сделать, для того чтобы настройки сохранялись после закрытия программы?).
Где можно достать справочник Win32API на русском языке?
Если вам не трудно отошлите мне ответы на мой ё-майл.
Заранее БА-АЛЬШОЕ вам спасибо!!!
Вопрос отправлен: 16.01.2003, 14:45
Отправитель: Drahus (Drahus@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Drahus!
CHECKBOX сохранять свое состояние не умеет. Ты должен делать это сам. Или в реестре, или в ini файлах (по последним, не пытайся читать их побайтно и самому разбираться в них - есть функции, например, GetPrivateProfileInt), или в своем формате.
Ответ отправлен: 16.01.2003, 22:52
Отправитель: Bob Johnson
Отвечает Eugene
Здравствуйте, Drahus!
Сохранять придётся ручками. Или в файл настроек, или в реестр. Соответственно при старте прожки восстанавливать настройки, читая из файла или из реестра.
Ответ отправлен: 16.01.2003, 15:21
Отправитель: Eugene
Вопрос № 2424 |
Уважаемые эксперты,
объясните, пожалуйста, почему у меня эта мулька не работает? Мне нужно удалить все файлы из двух директорий - спам, который собирается в них после работы почтовой проги по протоколу UUCP. Спасибо.
Приложение:
Вопрос отправлен: 16.01.2003, 15:48
Отправитель: stigmatt
[Следующий вопрос >>] [Список вопросов]
Отвечает Eugene
Добрый день, stigmatt!
Потому, что функция 41h не работает с масками. Попробуй запустить удаление другим способом. Например, функцией 4bh, указав в качестве программы command.com и с параметрами "/c del c:\maxi\*.*". А проще всего сделать батник, в котором это всё и написать.
Ответ отправлен: 16.01.2003, 17:03
Отправитель: Eugene
Отвечает baldr
Приветствую Вас, stigmatt!
Нет функции удаления по маске. Ты должен сам найти конкретный файл, а его имя
уже и передать в функцию.
Ответ отправлен: 16.01.2003, 23:20
Отправитель: baldr
Отвечает Bob Johnson
Приветствую Вас, stigmatt!
Потому что функций удаления файла не может удалить сразу много файлов! Ты должен или удалять по одному сам (предварительно посмотрев каталог, что там) или запустить command.com /cdel mypath\*.* и еще может параметров надо каких-нибудь, чтобы он не спрашивал "Are you sure".
В общем - тебе нужен батник!
Ответ отправлен: 16.01.2003, 22:52
Отправитель: Bob Johnson
Отвечает Maverick
Здравствуйте, stigmatt!
Из описания этой функции следует, что имя файла не может содержать ? и *.
Сделай так:
Находи эти файлы по маске, а потом удаляй их этой ф-ей.
Имя найденного файла находится в cs:[9eh].
...нашел файл....далее...
mov ah, 41h
mov dx,9eh
int 21h
Ответ отправлен: 20.01.2003, 05:33
Отправитель: Maverick
Вопрос № 2425 |
>> Есть достаточно сложное 1 Мбайтовое приложение
>> под Win32. При загрузке оно считывает
>> несколько символов из другого файла (текстового).
>> Я хочу, эти несколько символов запихать в сам exe
>> файл - т.е. чтобы считывалось уже оттуда.
>> Каким образом это можно сделать? Пожалуста
>> отвечайте как можно подробнее - с ассемблером знаком мало.
> Отвечает masquer
> Добрый день, Ivan!
> Сразу скажу, что если ты в этом ничего не понимаешь,
> то даже если я себе все клавишы разобью от набора
> подробной инструкции, то толку от этого мало будет.
> Кроме того, учись вопрос правильно задавать.
> 1. Как именно считывается файл,
> через ReadFile или Memory Mapping.
> 2. Несколько - это сколько и что
> потом с этими данными происходит.
> 3. Сами данные можно разместить и в области данных
> (если места хватит), но саму программу тебе патчить
> однозначно прийдется. А без знания ассемблера тут сам
> понимаешь...
> Так что, либо разбирайся в вопросе более детально и
> спрашивай по чуть-чуть, либо проси кого-нибудь.
> Дела там - на бутылку пива...
Во-первых - благодарю за ответ.
Далее: Сказать что я в этом вообще ничего не понимаю будет неверно. Также неверно будет и сказать, что я в этом разбираюсь... Буду благодарен, если получу немного более четкие инструкции - так как вариант с пивом и знакомым отпадает - нету к сожалению таких знакомых. На вопросы отвечаю:
1. ReadFile
2. Несколько символов - это минимум 26, максимум 32. Данные представляют из себя ключевое слово и IP адресс с портом. Соответственно при загрузке программы (уверен) эти данные куда-то помещаються, а потом, после нажатия на соответствующую кнопку проискодит подключение программы(-клиента) к серверу, адресс которого и был прочитан из файла. Интересно также то, что если до ключевого слова и IP в этом файле лежат еще какие либо латинские символы, то клиент все равно вытаскивает IP из файла без ошибок, а вот если символы не латинские, то IP не "вытаскивается" и при попытке соединения (после нажатия на кнопку) клиент виснет.
3.Сами данные в области данных я уже разместил. Что касается патча - вот тут то и нужна помощь. Обладаю навыками работы с W32DASM, HIEW. В наличии имеется Soft Ice - но если буден необходимо с ним работать - инструкции должны быть по-точнее.
Как уже говорил, знакомых с такими знаниями не имею, так что и обращаюсь к тебе. Если возможен вариант связаться через ICQ - то мое - 152052988, мыло мое уже известно, но на всякий случай напомню: ivan@szoesp.spb.ru. Если помогать мне, тебе лень/нехочеться/на это не времени и прочее - тогда ладно - попытаюсь найти кого нибудь другого. В любом случае - очень тебе благодарен.
Иван.
Вопрос отправлен: 16.01.2003, 18:20
Отправитель: Ivan
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Ivan!
Думаю, айс тебе понадобится для понимания сути. Смотри:
ReadFile считавыет из файла и помещает информацию в буфер. Дальше постарайся в айсе определить что дальше происходит с этим буфером, возможно он будет перемещаться (программа может его копировать из адреса в адрес). Дальше постарайся найти функцию/функции которые работают с этим буфером. И именно эти функции тебе и прийдется патчить на нужный адрес в секции данных. В качестве совета, посмотри описание формата PE, глубоко можно не зарываться, а основные моменты нужно прояснить, это - секции, виртуальные адреса.
Все это не сложно, и с нуля можно за пару часов решить.
Ответ отправлен: 16.01.2003, 19:09
Отправитель: masquer
Вопрос № 2426 |
Здравствуйте !
Помогите пожалуйста информацией (например, ссылочку)про написание драйверов под Windows (WDM).
Спасибо
Вопрос отправлен: 16.01.2003, 19:15
Отправитель: Magpie
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Magpie!
Если тебе нужно будет писать драйвер под 9х - то зайди ко мне на страницу и скачай небольшое описание, как это сделать (vxd). (bobjohnson.nm.ru).
Но если же тебе нужен именно WDM - то она тебе ничем не поможет.
Ответ отправлен: 16.01.2003, 22:52
Отправитель: Bob Johnson
Отвечает Igoryk
Доброе время суток, Magpie!
На wasm.ru точно есть.
Ответ отправлен: 17.01.2003, 16:46
Отправитель: Igoryk
Вопрос № 2427 |
Всем привет,я думал рассылка пропала, не получал 2-ва месяца, наверное глюкнолу что-то. Помогите ребята, нужен самый простой вирусок под винды (Мне нужно разобраться с PE заголовком. Не для пакостей, а только для написания защиты своих программ).
С ув. Igor@dja.sf.ukrtel.net
Вопрос отправлен: 16.01.2003, 23:38
Отправитель: Игорь (igor@dja.sf.ukrtel.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Приветствую Вас, Игорь!
Ого-го, в любом поисковике набери: вирус исходник win
Тебе столько исходников будет...
Ответ отправлен: 17.01.2003, 07:58
Отправитель: Maverick
Вопрос № 2429 |
Здрям!
У меня к вам такой вопросец:-))
1)В последнее время на меня прямо-таки обрушился поток вирусов. Приходят они по почте на мой рабочий адрес в России. Причем, судя по заголовку, от меня самого, с этого же самого адреса (сам я с него сейчас писать не могу, и вряд ли кто им пользуется от моего имени). Может подскажете, как такое может быть, как это зародилось, в чем причина и как это безобразие прекратить
Вот заголовок сообщения
Return-Path:
Received: from mail.nfi.kiae.ru ([192.168.0.45])
by mail.nfi.kiae.ru (8.11.1/8.11.1) with SMTP id h0GFnt529808
for my_account@nfi.kiae.ru; Thu, 16 Jan 2003 18:49:55 +0300 (MSK)
(envelope-from my_account@nfi.kiae.ru)
Message-Id: <200301161549.h0GFnt529808@mail.nfi.kiae.ru>
From: Grashin
To:
Subject: Re: AVAR(Association of Anti-Virus Asia Reseachers)
Date: Thu, 16 Jan 2003 18:46:31 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_000A_040EF622.0537CEBE"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2616.100 (Я не пользуюсь Outlook'om)
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2616.100
X-PMFLAGS: 570949760 0 1 P18E20.CNM - это имя локального файла, в котором содержится письмо
This is a multi-part message in MIME format.
------=_NextPart_000_000A_040EF622.0537CEBE
Далее идут прикрепленные файлы содержащие вирусы Unsafe JS, W32/Korvar
2)Хотел бы кое-что прокомментировать по вопросу 2378. Эта прога рульная, но в ней есть один недостаток.Когда я впервые запустил эту прогу, то она выдала мне море " левых " файлов. При чем системные файлы были не исключением.Все эти файлы мне было лень просматривать и я их всех " Delete ". После рестарта появилось черное окно смерти и пришлось переустанавливать маздай.Что я сделал? Сразу же после переустановки маздая я снова прогнал этой прогой и она мне выдала только системные файлы.Скинул я их в игнор и щас она у меня прекрасно фурыкает.Выявляет только " левые " файлы. Да, Гатора она тоже постоянно выкидывает. Удалять его надо без всякого раздумывания.
ЗЫ.Еще на Казаа она реагирует.Там тоже какой-то файл " левый ".Но если удалить этот файл, то Казаа отказывается работать.Его я тоже игнорировал. От так вот....
Вопрос отправлен: 17.01.2003, 00:55
Отправитель: Murzilka (murzilka_3@gala.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Доброе время суток, Murzilka!
А ты уверен, что он не мог взломать твой адрес и не писать тебе с него?
Есть, кстати, проги для подстановки левого адреса.
Выход такой, если есть на сервере такая опция, то запрети все входящие с этого сервера, но если ты кому то крупно насолил, то он все равно достанет и с других адресов.
Ответ отправлен: 17.01.2003, 07:58
Отправитель: Maverick
Отвечает Igoryk
Здравствуйте, Murzilka!
Пректратить можно только перйдя на другую почту, либо же поставить ограничение на размер вложенных файлов.
Ответ отправлен: 17.01.2003, 16:46
Отправитель: Igoryk
Отвечает mang
Приветствую Вас, Murzilka!
Форматни хард и установи password.Если не уверен что(сам я с него сейчас писать не могу,и ВРЯД ЛИ КТО им пользуется от моего имени)может барабашка?
Ответ отправлен: 18.01.2003, 06:40
Отправитель: mang
Отвечает Bob Johnson
Доброе время суток, Murzilka!
В принципе, обратный адрес ты можешь указать любой. Все зависит от SMTP, которым ты пользуешься. Некоторые проверяют обратный адрес на правильность, некоторые нет. В последнем случае вообще можешь указать всякую фигню.
А так - ты можешь запустить the bat, установить в настройках, чтобы в редакторе писем показывалось поле "From" и спокойно внести туда те же самые данные, что и в поле "To" и получатель примет письмо от себя же самого.
Ответ отправлен: 18.01.2003, 15:48
Отправитель: Bob Johnson
Вопрос № 2430 |
Здравствуйте уважаемые эксперты.
Помогите кто чем может.
1. Надо доки по защищенному режиму
1.1 Учебники по асму российских авторов
2. Доки по форматам файлов(трекеры(mod,xm,amf и тд.,midi,звуковые файлы)
Ссылки на и-нет не давать, кидайте на мыло (ящик 20 мегов)
ОГРОООМНОЕ СПААСИБА заранее!!!
Вопрос отправлен: 17.01.2003, 05:58
Отправитель: Максим (maximsh@rbcmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Igoryk
Доброе время суток, Максим!
wasm.ru и sasm.narod.ru
Ответ отправлен: 17.01.2003, 16:46
Отправитель: Igoryk
Вопрос № 2431 |
Уважаемые эксперты! У меня возник такой вопрос: почему при запуске некоторых старых программ комп говорит что-то типа Runtime error 200 at 0774:0091 и прога закрывается (причём это не относится к старым компам: у меня раньше была "четвёрка", на ней всё было нормально). Мне кажется, что это из-за нулевого времени выполнения пустого цикла. Как этого избежать? Может, нужно написать резидент? Если да, то что он должен делать? Если у вас что-нибудь есть, PLEASE киньте на мыло.
Вопрос отправлен: 17.01.2003, 06:04
Отправитель: Roman (sparxx13@hotbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Eugene
Здравствуйте, Roman!
Вот, что можно найти в инете:
Дополнение от Игоря Зайцева:
На самом деле Runtime Error 200 - это не только деление на ноль, но и переполнение при делении. В данном случае число сделанных циклом итераций делится на некоторую константу (не равную нулю), и на быстрых процессорах результат не помещается в 16-битный регистр. При этом и происходит ошибка.
Runtime error 200 лечится поиском в *.exe пpограммы, котоpая вылетает, байтов: B9 37 00 F7 F1 (обычно встpечается 1 pаз) и заменой 37 на 6E. Для шестого паскаля необходимо искать строку B8 37 00 91 F7.
Ещё одно решение:
Hайти такyю последовательность: F7 D0 F7 D2 B9 37 00 F7 F1 или 8B C2 B7 37 F6 F7 (обычно встpечается только 1 pаз ) и испpавить байт 37h напpимеp на FFh.
Ответ отправлен: 17.01.2003, 09:52
Отправитель: Eugene
Отвечает Broken Sword
Доброе время суток, Roman!
Start-up Runtime Error 200
A problem occurs for a PC with an Intel 200 MHz (or better) CPU and any program using Borland's TP7 (DOS) or BP7 (DOS, DPMI) Crt unit; the program gives Runtime Error 200, "divide by zero", at start-up. TSFAQP #67 A3 refers, and see #124. There has been much activity in the c.l.p.b and b.p.t newsgroups. I have used only the fixes by Andreas Bauer (existing EXE files), and Pedt Scragg (new compilations). Some others are less than fully satisfactory; see below.
I have read that the Graph unit calls the Crt unit.
I've received a report that : "the bug can also be caused by over-enthusiastic PC emulators on PowerPC-based Macs".
A sufficient test program is :
uses Crt ; begin end.
A slightly better one (my crt001.pas) is
uses Crt ; begin Writeln('OK.') end.
Cause
The Borland Crt unit is included in the TURBO.TPL & TPP.TPL libraries; its initialisation routine will be linked if Crt is cited in a uses clause. The problem lies in the initialisation of Crt.Delay, but will appear if the Crt unit is cited regardless of whether Delay or any other Crt routine is called.
During Crt unit initialisation, a loop executed for 55 ms increments a counter. Up to and in TP6, this was a 16-bit counter, and would happily overflow on a PC above about 20 MHz, leading to subsequent incorrect delays.
The counter in TP7 & BP7 is now 32-bit, and should not itself overflow until processor speeds reach the 100 GHz region. But the count is divided by 55, and if the result cannot fit into a 16-bit word, the CPU raises a "divide overflow" error. This is reported by Borland as a "divide by zero" error, Runtime Error 200, since the only way that a user's Pascal code can cause a divide overflow is by dividing by zero. An asm test shows that "divide by zero" is indeed given for divide-by-non-zero overflow; the following program gives RTE200, but with $33 in cx does not:
begin asm mov ax,$333 ; mov cx,$3 ; div cl end end.
Ответ отправлен: 17.01.2003, 10:54
Отправитель: Broken Sword
Отвечает Sensey
Приветствую Вас, Roman!
Зайди по ссылке - там написано и даны несколько линков на исправление глюка!
Ответ отправлен: 17.01.2003, 11:44
Отправитель: Sensey
Отвечает Bob Johnson
Здравствуйте, Roman!
Обычно этим страдал паскаль. На компьютере больше 266 - 300 МГц он выдавал эту же ошибку. Происходит это не из-за нулевого времени, а потому, что там действительно есть пустой цикл, который выполняется слишком много раз за 18,2 сек (время между двумя ДОС прерываниями) и потом возникает переполнение деления, что эквивалентно делению на ноль (то же исключение). Если у тебя есть исходник проги - ты можешь исправить компилятор так, чтобы у него этот пустой цикл занимал больше времени (добавить в него небольшой вложенный цикл) и перекомпилировать прогу. Тогда сохранится полная ее работоспособность. Если же прога не твоя - можно просто исправить эту команду деления - заменить ее на mov ax, 0FFFFh - максимальное значение результата, но тогда скорость всей проги может возрасти (если она использует этот метод задержки). Если же хочется, чтобы прога работала полностью правильно - нужно будет найти в дизассемблере этот цикл и также удлинить его - но вот как, т.к. придется использовать дополнительную память.
Ответ отправлен: 18.01.2003, 15:48
Отправитель: Bob Johnson
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (37) C / C++ (29) Perl (5) Delphi (18) Pascal (22) Basic / VBA (12) Java / JavaScript (8) PHP (6) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (37) Windows NT/2000/XP (29) "Железо" (34) Поиск информации (19) |
Администратору Windows NT/2000/XP (11) Linux / Unix (14) |
Юристу Гражданское право (11) Семейное право (7) Трудовое право (6) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||