Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 579
от 27.06.2003, 18:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3586 Отправлено ответов: 10521 Активность: 293.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
ASMодей Статус: Профессиональный Общий рейтинг: 113.93 [Подробней >>] |
Eugene Статус: Профессиональный Общий рейтинг: 107.35 URL: мощный файловый архив [Подробней >>] |
Zedr0n Статус: Начальный Общий рейтинг: 110.37 [Подробней >>] |
Дмитрий Статус: Профессиональный Общий рейтинг: 137.08 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 121.93 URL: мой сайт [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 137.22 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.98 URL: Программирование [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.93 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Алексей Статус: Начальный Общий рейтинг: 108.82 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 112.3 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 120.24 URL: Методы оптимизации работы ПК [Подробней >>] |
Pin Статус: Опытный Общий рейтинг: 115.91 URL: My HOMEPAGE [Подробней >>] |
Andrew Vext Статус: Опытный Общий рейтинг: 105.36 [Подробней >>] |
Lynx Статус: Опытный Общий рейтинг: 121.94 Телефон: (8442) 750522 [Подробней >>] |
_vt Статус: Опытный Общий рейтинг: 121.87 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3549. Многие программы, которые работают вне основной ОС (многие графические boot-manager'ы,графич редакто... (ответов: 4)
Вопрос № 3550. Приветствую, ув. эксперты. Вопрос для профессионалов. Известно, что компилляторы с языков высокого ... (ответов: 3)
Вопрос № 3551. Товарищи!!! Сделал я 3d-куб на MASMe (под win) т.е. на простой форме вращается кубик, использовал ап... (ответов: 3)
Вопрос № 3552. здравствуйте, уважвемые эксперты! только начала учть asm - возник вопрос: почему в mes выдаетсяна э... (ответов: 4)
Вопрос № 3553. Ставилдве операционные системы. Одну поставил неудачно. Пришлось убрать.Другая стала нормально. При ... (ответов: 6)
Вопрос № 3554. Здравствуйте, уважаемые эксперты! Помогите пожалуйста разрешить такую проблему. В приведенной... (ответов: 5)
Вопросов: 6, ответов: 25
Вопрос № 3549 |
Многие программы, которые работают вне основной ОС
(многие графические boot-manager'ы,графич редакторы дисков)
во время своего запуска выставляют нормальные высокие
разрешения и нормальную глубину цвета.
Вопрос: есть ли универсальный видео-драйвер для Windows 95, чтобы винт с ним можно было втыкать в любой комп?
Спасибо вам всем за полезные ответы!
Вопрос отправлен: 22.06.2003, 08:50
Отправитель: div
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Доброе время суток, div!
Вообще-то есть стадрарт VESA, но я сомневаюсь, что для Windows есть универсальный видеодрайвер. Кто-бы его стал писАть? Все производители видеокарт пишут драйверы под свои видеокарты со своими особенностами.
Ответ отправлен: 23.06.2003, 07:53
Отправитель: ASMодей
Отвечает Eugene
Здравствуйте, div!
Такой драйвер есть, он по умолчанию стоит в винде. Только максимальное разрешение - 640*480 при глубине цвета в 16 цветов. А других ты и не получишь характеристик, если тебе действительно нужен универсальный драйвер. Ведь не все видео карты способны держать больше.
Ответ отправлен: 22.06.2003, 13:49
Отправитель: Eugene
Отвечает Zedr0n
Здравствуйте, div!
Все новые видеокарты поддерживают VESA. Это стандарт для работы в SVGA-режимах, так что при его использовании можно быть уверенным, что программа будет работать как надо. Можно использовать LFB и практически все видеорежимы. Хуже дело обстоит со старыми видеокартами. Чтобы с ними работать в SVGA-режимах приходилось знать специфические особенности каждой из видеокарт, или программировать только в VGA, что принципе, тоже не так ужасно. Для эмуляции VESA существует SciTech Display Doctor, но эмуляция - это все же всего лищь эмуляция. Советую просто почитать про VESA, так как все новые видеокарты совместимы с этим стандартом...
Ответ отправлен: 24.06.2003, 19:41
Отправитель: Zedr0n
Отвечает Дмитрий
Здравствуйте, div!
В свойствах системы, в параметрах видеоадаптера выбери обновить драйвер. Далее "указать расположение драйвера" и "выбрать из списка". Там есть стандартные драйвера VGA и SVGA. Попробуй их. В 99% случаев срабатывает.
Ответ отправлен: 24.06.2003, 06:47
Отправитель: Дмитрий
Вопрос № 3550 |
Приветствую, ув. эксперты. Вопрос для профессионалов. Известно, что компилляторы с языков высокого уровня, анализируя текст, переводят его в машинные коды соответственно строка за строкой для текст ЯВУ. Интересно, существуют ли компилляторы, у которых выходящий код является результатом перестановки асм-команд с нескольких строк текста ЯВУ, но не с целью оптимизации, например, загрузки нескольких одинаковых значений, переменных, промежуточных результатов (это само сабой), а именно с целью оптимизации под многоконвеерные процессоры, вплоть Athlon XP и P7. Особо интересуют ответы экспертов, хорошо владеющими указанным методом и имеющими своё мнение по этому вопросу. Желательно указать полные названия и версии компиляторов. Спасибо.
Вопрос отправлен: 22.06.2003, 14:05
Отправитель: s17 (s17_@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, s17!
да чего тут мудрить: лучший компиль сишный - это интеловский, под итаниум без подобной оптимизации компилятор вообще с трудом можно себе представить чтоб существовал
Ответ отправлен: 22.06.2003, 14:44
Отправитель: Broken Sword
Отвечает masquer
Добрый день, s17!
Окромя интеловского, по моему, никто такого не делает, хотя микрософтовский оптимизатор тоже очень неплох
Ответ отправлен: 23.06.2003, 10:44
Отправитель: masquer
Отвечает Дмитрий
Добрый день, s17!
"Особо интересуют ответы экспертов, хорошо владеющими указанным методом и имеющими своё мнение по этому вопросу". Я не профессионал и этими методами не владею. Так, что мой ответ можешь даже не читать. Вообще сишные компиляторы от Borland и Microsoft содержат неплохие оптимизаторы. Соответственно, чем новее версия, тем лучше оптимизация. Ребята из Microsoft не зря зарплату получают. Если встоенной автоматической оптимизации окажется недостаточно, то эти компиляторы могут рожать вместо exe-файла asm-файл, который потом можно будет оптимизировать вручную (ключ -S для Borland и -FA для Microsoft). Но эти компиляторы - ширпотреб. Сейчас я выскажу возможно крамольную мысль, но самые лучшие оптимизаторы, доступные на массовом рынке - это системы на основе Fortran 90! Там в поставку компилятора входят отдельные модули, заточенные под определенный вид систем. Бородато-яйцеголовые дядьки день и ночь кодят процедурки для своей любимой системы "Кариозный монстр 4" и неправильно расчитывают с их помощью погоду и курсы валют. Есть и юзерские варианты этих систем. Например Digital Visual Fortran от Digital Equipment или Fortran Power Station от Microsoft. За сим все!
Ответ отправлен: 24.06.2003, 07:10
Отправитель: Дмитрий
Вопрос № 3551 |
Товарищи!!! Сделал я 3d-куб на MASMe (под win) т.е. на простой форме вращается кубик, использовал апихи - line и moveto, но он мерцает как гад. Как этого избежать?
Вопрос отправлен: 22.06.2003, 22:01
Отправитель: birkoff (stn_spam@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, birkoff!
Создай в памяти bitmap и рисуй в него, а потом копируй на экран - тогда мигать не будет. Чтобы создать битмап надо:
1. создать контекст (CreateCompatibleDC)
2. Создать bitmap: CreateCompatibleBitmap (здесь укажешь параметром хэндл на любой контекст, но только не тот, что создал на шаге 1, иначе будет монохромным).
3. SelectObject (контекст, битмап)
и теперь туда рисуем, а потом - bitblt
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 23.06.2003, 22:51
Отправитель: Bob Johnson
Отвечает Gibbel
Доброе время суток, birkoff!
Создаем копию контекста окна (CreateCompatibleDC(), CreateCompitibleBitmap())-> рисуем в созданной копии -> Выводим копию в окно (BitBlt()).
Ответ отправлен: 23.06.2003, 12:04
Отправитель: Gibbel
Отвечает Дмитрий
Добрый день, birkoff!
Мерцает он по причине зрительной инерции. Чтоб зафиксировать изображение глазу необходимо время. А ты его скорее всего не предоставляешь. Вероятно все происходит следующим образом. Последовательно прорисовывается куча линий на экране. После прорисовки последней линии экран очищается и прорисовка начинается заново с новыми координатами. Вопрос: какое время держится нарисованной последняя линия? А ведь пока прорисовываются все остальные ее не видно! Вот и получается, что куб мерцает (мерцать, кстати, он должен неравномерно). Для того, чтобы уменьшить этот эффект необходимо выводить все линии ОДНОВРЕМЕННО! Этого можно достичь применив двойную буферизацию. Все достаточно просто. Куб прорисовываешь не на экран, а в буфер в памяти. А затем копируешь сразу всю картинку на экран. Так графика будет выглядеть гораздо лучше. Удачи!
Ответ отправлен: 24.06.2003, 07:24
Отправитель: Дмитрий
Вопрос № 3552 |
здравствуйте, уважвемые эксперты!
только начала учть asm - возник вопрос:
почему в mes выдаетсяна экран ы*( хотя задано по смещению
Приложение:
Вопрос отправлен: 23.06.2003, 10:36
Отправитель: наташа
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, наташа!
У меня твоя программа нормально заработала, только вместо русского текста отобразилось непонятно что. Попробуй для начала выводить какой-либо английский текст, т.к. русский надо писать в кодировке DOS, с этим могут быть проблемы (а может и не быть).
Еще, я компилирую программу так:
@cls
@SET FI=1
@f:\tasm\bin\tasm.exe /m2 %FI%.asm /zi
@f:\tasm\bin\tlink.exe /3 %FI%.obj /t
@rem @f:\tasm\bin\tlink.exe /3 /t %FI%.obj,%FI%.dat
@del %FI%.map
@del %FI%.obj
Может ты при линковке забыла указать "/t"? Тогда получается не com, а exe файл, а в нем уже надо настраивать сегментные регистры и может действительно выводиться непонятно что.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 23.06.2003, 23:37
Отправитель: Bob Johnson
Отвечает Алексей
Приветствую Вас, наташа!
Ну, во-первых вопрос задан как-то некорректно: что значит "почему в mes выдаетсяна экран ы*( хотя задано по смещению"???
Если вы имели ввиду, почему выводятся левые символы, отвечу: DOS выводит символы в кодировке ASCII =>, чтобы получить нормальные символы, нужно писать в соответствующем редакторе (я пишу в FAR).
Ваша программа выводит строку mes, ожидает нажатия esc, если это не esc, то опять выводит строку, если esc, то выполняется процедур b10. Кстати в процедуре необходимо поставить ret для выхода из неё. (Странно: прога должна завершиться некорректно, но у меня при нажатии esc завершается нормально). Если нужна помощь, пишите: aleksey_1@list.ru.
P.S. А что программа должна делать?
Ответ отправлен: 23.06.2003, 13:39
Отправитель: Алексей
Отвечает baldr
Здравствуйте, наташа!
Смещение - это от начала программы, но ты вызываешь функцию прерывания, которая выводит именно на экран!
А по смещению ты просто даешь адрес твоего сообщения, которое надо вывести.
Ответ отправлен: 23.06.2003, 10:45
Отправитель: baldr
Отвечает Tigran K. Kalaidjian
Доброе время суток, наташа!
Не понял в чем заключается вопрос(скорее всего Вы его не дописали), но в программе есть ошибка: в конце процедуры b10 нет команды возврата RET, поэтому при вызове этой процедуры происходит пропуск строк корректного завершения.
Исправленный вариант в приложении.
Если в процессе изучения возникнут какие-либо вопросы, пишите на kalaidjian@pochtamt.ru
Приложение:
Ответ отправлен: 23.06.2003, 17:22
Отправитель: Tigran K. Kalaidjian
Вопрос № 3553 |
Ставилдве операционные системы. Одну поставил неудачно. Пришлось убрать.Другая стала нормально. При загрузке остался след: необходимо выбиратькакую операционную загружать.Как убрать этот след
Спасибо. Александр.
Вопрос отправлен: 23.06.2003, 16:58
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Александр!
Удалить boot-manager и поставить загрузчик от той оси, которая осталась единственной. Но твои попытки это исправить могут окончиться еще одной переустановкой.
Кстати, было бы неплохо, если бы ты написал, какая ось у тебя осталась и какую пришлось удалить.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 23.06.2003, 23:37
Отправитель: Bob Johnson
Отвечает Pin
Приветствую Вас, Александр!
Если вторая система (живая) winnt/2000/XP, то подредактируйте файл boot.ini в корне загр. диска, если WIN95/98/ME - выполните комакнду "SYS A: C:", загрузившись с системной дискеты!
Ответ отправлен: 23.06.2003, 23:39
Отправитель: Pin
Отвечает Andrew Vext
Доброе время суток, Александр!
Либо убрать несуществующую операционку из файла boot.ini
Либо fdisk /mbr из оставшейся операционки.
К сожалению не знаю какие именно вы операционки ставили.
Ответ отправлен: 23.06.2003, 17:03
Отправитель: Andrew Vext
Отвечает Дмитрий
Доброе время суток, Александр!
FDisk /mbr. В крайнем случае еще раз переустановишь систему.
Ответ отправлен: 24.06.2003, 06:05
Отправитель: Дмитрий
Отвечает Алексей
Добрый день, Александр!
Откройте файл boot.ini в корневом каталоге на диске с системой и удалите строку с названием ненужной вам системы.
З.Ы. boot.ini доступен только для чтения, поэтому перед редактированием нужно убрать галку "только чтение", а потом поставить её.
Ответ отправлен: 24.06.2003, 12:10
Отправитель: Алексей
Отвечает Lynx
Доброе время суток, Александр!
1. Загрузиться с DOS/Win9x загрузочной дискеты
А теперь два способа:
2.1. Мягкий быстрый, но не всегда работает - команда fdisk /mbr.
2.2. Жестче, но еще ни разу не подводил - команда sys c:
естесно, что обе проги должны находиться НА ДИСКЕТЕ, а не на винте.
Ответ отправлен: 24.06.2003, 23:38
Отправитель: Lynx
Вопрос № 3554 |
Здравствуйте, уважаемые эксперты! Помогите пожалуйста разрешить такую
проблему. В приведенной ниже программе в переменную ver1 запись происходит
без проблем, а при записи в переменную ver2 возникает исключение. Как можно
произвести запись в переменную ver2, чтобы исключение не возникало?
Операционка W2000. И еще один вопрос. Отладчик td32 v.5.0 не может
загрузить эту программу, если в ней удалить секцию data или определение
переменной ver1 в ней или удалить ExitProcess. Это что глюк td32 или
глючит система?
Спасибо за ответы 1!
Приложение:
Вопрос отправлен: 23.06.2003, 18:32
Отправитель: 1 (privat-soap@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Добрый день, 1!
По умолчанию в сегмент кода запись запрещена, вот и возникает исключение. Это можно исправить... По поводу отладчика не понятно, что значит не может загрузить? Если удалить описание переменной, то программа просто не скомпилируется.
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 25.06.2003, 23:41
Отправитель: _vt
Отвечает Bob Johnson
Приветствую Вас, 1!
1. Чтобы писать в сегмент кода, надо вначале изменить защиту страницы, на которую приходится твоя ver2. Делается это с помощью функции VirtualProtect.
2. Если программа работает в таком виде, но не грузится в td - значит это его глюк. Если же она не работает, значит, после твоих модификаций она больше не соответствует представлению windows о exe PE файле.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 23.06.2003, 23:37
Отправитель: Bob Johnson
Отвечает Zedr0n
Добрый день, 1!
Если я правильно понимаю, то секция .code не writeable, поэтому и возникает исключение. При компиляции можно указать, какие флаги должна иметь каждая секция, так что надо указать, что .code - writeable, ну или править ручками в Hiew. Так что ничего ужасного тут нет.
Ответ отправлен: 24.06.2003, 19:49
Отправитель: Zedr0n
Отвечает masquer
Доброе время суток, 1!
Как можно? Хе-хе, свойства секции подредактировать, разрешающую не только чтение и испольнение.
Ответ отправлен: 24.06.2003, 10:50
Отправитель: masquer
Отвечает Andrew Vext
Приветствую Вас, 1!
Вы никак не произведете запись в ver2 из под Windows. Дело в том, что при загрузке программы Windows устанавливает для сегмента кода разрешение только на чтение. Читать из сегмента можно любые данные, а записывать ничего нельзя.
Ответ отправлен: 24.06.2003, 11:21
Отправитель: Andrew Vext
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (25) Perl (5) Builder / Delphi (19) Pascal (26) Basic / VBA (10) Java / JavaScript (13) PHP (5) MySQL / MSSQL (6) |
Пользователю Windows 95/98/Me (29) Windows NT/2000/XP (26) "Железо" (21) Поиск информации (16) |
Администратору Windows NT/2000/XP (14) Linux / Unix (7) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (5) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||