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

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 (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.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
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
Отписаться
Убрать рекламу

В избранное