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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное