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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 633
от 04.09.2003, 11:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 4083
Отправлено ответов: 12095
Активность: 296.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 148.64
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.3
URL: Программирование
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 107.33
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 121.68
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.07
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 134.15
[Подробней >>]
 
Илья
Статус: Опытный
Общий рейтинг: 102.83
[Подробней >>]
Greys
Статус: Доверительный
Общий рейтинг: 121.63
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 120.71
URL: мой сайт
[Подробней >>]
 
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 107.33
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Andrew Vext
Статус: Профессиональный
Общий рейтинг: 105.05
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.77
[Подробней >>]
 
Igoryk
Статус: Профессиональный
Общий рейтинг: 110.67
URL: CodeClimber.Com
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 4047. Здраствуйте!!! Раскажите мне, пожалуйста немного про программирование паралельного порта под Винду и... (ответов: 1)
Вопрос № 4049. Здравствуйте! Может, вопрос и не по ASM-у? Никак не получалось загрузить Windows Media Player 9. Про... (ответов: 1)
Вопрос № 4050. Здравствуйте, уважаемые эксперты! Я решил ДЕТАЛЬНО ознакомиться с управлением т.н. Windows-controls ... (ответов: 1)
Вопрос № 4052. Здравствуйте, Эксперты. К вопросу №4043. Я и правда забыл вставить приложение, за что и извиняюсь. Н... (ответов: 2)
Вопрос № 4054. Здравствуйте! Что означают верхняя и нижняя линия сканирования у курсора ... (ответов: 2)
Вопрос № 4055. Доброго время суток! 1. Проверте пожалуста правильно ли я задаю лимит и базу дескриптора GDT 2. Прав... (ответов: 1)
Вопрос № 4056. Здравствуйте, господа Эксперты. Мне нужна ваша помощь. Есть диалоговое окно содержащее помимо кнопок... (ответов: 2)
Вопрос № 4057. Здравствуйте, эксперты ! Как трассировать чужие dll-ки. Определить их состав. Dll оформлена в виде C... (ответов: 2)
Вопрос № 4058. Здравствуйте, подскажите, пожалуйста, как можно изменить громкость - ту, которая изменяется общим ре... (ответов: 2)
Вопрос № 4059. Вот раньше был сайт www.assembler.ru/ Так это был достаточно мощный сайт про Ассемблер! Сейчас же та... (ответов: 2)
Вопрос № 4060. Доброго времени суток, уважаемые эксперты :))) У маэстро Зубкова в одной из программ-примеров для... (ответов: 8)
Вопрос № 4061. Здравствуйте, Эксперты. Это снова я и у меня опять пара вопросов. Вопрос №1. При создании окна указы... (ответов: 4)

Вопросов: 12, ответов: 28


 Вопрос № 4047

Здраствуйте!!!
Раскажите мне, пожалуйста немного про программирование паралельного порта под Винду и Юникс. Если есть какие ссылки, милости прошу. А те материалы, которые есть на руках скиньте, пожалуйста на мыло.
И если на ноге порта выставлена логическая единица, то какое напряжение там будет (5, 12 и т.д.)
Спасибо!!!



Вопрос отправлен: 30.08.2003, 02:49
Отправитель: Torax (torax@dotes.west.energy.gov.ua)

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Torax!
Логическая единица в TTL-уровнях. Вроде 4.87 В.


Ответ отправлен: 30.08.2003, 09:52
Отправитель: Евгений Иванов


 Вопрос № 4049

Здравствуйте! Может, вопрос и не по ASM-у?
Никак не получалось загрузить Windows Media Player 9. Программа установки ругается (по-Microsoft-овски), что ей нужен Windows 98 SE, а у меня 98 SE русский (4.2222).
Архивариусом этоот пакет открывается, есть inf-файлы, только это всё нужно записать по нужным адресам, и в реестр.
Спасибо за рубрику.



Вопрос отправлен: 30.08.2003, 11:23
Отправитель: Ефимов Андрей (efimovspb@narod.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает --- Нет данных ---

Добрый день, Ефимов Андрей!
Это тебе в раздел юзеров надо!Причем тут асм?


Ответ отправлен: 30.08.2003, 11:59
Отправитель: --- Нет данных ---


 Вопрос № 4050

Здравствуйте, уважаемые эксперты!
Я решил ДЕТАЛЬНО ознакомиться с управлением т.н. Windows-controls (включая: common controls). В данный момент, меня занимает: TabControl.
Я перерыл кучу статей и книг по этой теме, но везде сталкивался с поверхностным подходом (не исключение здесь и, хвалимая многими и мной в том числе, книга Зубкова С.В. 'ASSEMBLER для DOS, Windows и UNIX') к интересующим меня вопросам. Меня ДЕТАЛЬНО интересует следующее:
1. Описание ВСЕХ сообщений и их параметров, которые я могу послать TabControl'у, а также их возвращаемых значений. Как Вы конечно же знаете, список этих сообщений можно найти в файле WINDOWS.inc. Все они начинаются, так: TCM_. Если есть еще какие ни будь сообщения, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
2. Описание ВСЕХ сообщений (или событий) и их параметров, которые TabControl посылает в мою оконную процедуру, а также их возвращаемых значений. Как Вы конечно же знаете, список этих сообщений можно найти в файле WINDOWS.inc. Все они начинаются, так: TCN_. Они передаются как подсообщения сообщения: WM_NOTIFY. Если есть еще какие ни будь сообщения, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
3. Описание ВСЕХ элементов, структур: TC_ITEM и NMHDR, и их возможных значений. Как Вы конечно же знаете, определение этих структур можно найти в файле WINDOWS.inc. Если есть еще какие ни будь структуры, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
Так вот, если кто-то из вас может дать мне подробную инфу по данному вопросу или ссылку на нее (инфа должна подходить для русифицированной Windows 2000 Pro SP3 или SP4), то сделайте это, пожалуста!!! Буду очень вам благодарен! Желательно, чтобы инфа была на русском языке (хотя я, конечно же, не откажусь и от англоязычной). Большая просьба: не ссылайтесь на MSDN, т.к. у меня ее нет, в продаже я ее, у нас в городе, я не видел, а работать с ней в ON-LINE я не имею возможности. При изучении программирования под Windows, я пользуюсь различными API-Helper'ами, книгами и прочей доступной мне инфой.
Ну, с этим пока все. Теперь перейду к другой теме, которая интересует меня исключительно в плане расширения кругозора. Тема: Функционирование КЭШа и кэширование памяти. Она не относится на прямую к теме данной рассылки, но близко связанна с ней. Некоторые из вас обещали постараться помочь мне разгрызть этот орешек, за что им БОЛЬШОЕ СПАСИБО!!!
Я, к большому сожалению, прочитал только две довольно устаревшие книги где рассматривались вопросы связанные с этой темой. Это книги Михаила Гука: 'Энциклопедия: Аппаратные средства IBM PC' и 'Процессоры: Pentium II, Pentium Pro и просто Pentium'. Сразу извенюсь за то, что вопросы могут быть ламерские!
Я не инженер-схемотехник, не дипломированный программист (хотя и работал на этой должности) и даже не студент... Хотя занимаюсь программированием на ассемблере уже довольно давно (начал я с кодинга для ZX-Spectrum48-совместимой машины еще в ТЕ времена). Я интересуюсь этим просто потому, что мне ИНТЕРЕСНО!!! Ну ладно, с отмазками вроде все... Перейду к вопросам:
1. Возьмем к примеру прцессоры: Pentium III (Coppermine)
и Athlon (Thundenbird). Насколько мне известно, в процессоре Pentium III КЭШ второго уровня является инклюзивным, т.е. в нем, в любой момент времени, дублируются данные из КЭШа первого уровня, а у Athlon'a - эксклюзивным, т.е. в его КЭШе второго уровня не дублируются данные из КЭШа первого уровня. Получается, что у Athlon'a эффективный размер КЭШа составляет 384Kb (128Kb + 256Kb), а у Pentium'а III всего 256Kb (вместо возможных: 288Kb(32Kb + 256Kb)). Вопрос: что дает Pentium'у III инклюзивность его КЭШа, т.е. зачем это сделано?! Мне не хочется думать, что его разработчики выкинули коту под хвост целых 32Kb, из итак по сути: мизерного, объема ценной памяти.
2. Насколько мне известно, у процессора Pentium III (Coppermine) КЭШ второго уровня работает на частоте ядра процессора, т.е. КЭШи первого и второго уровня работают на одной частоте. Далее, насколько мне известно (но, тут я могу ошибаться), оба они являются четырех канальными наборно-ассоциативными (если я тут ошибаюсь, то данный вопрос отпадет сам собой). Единственное их отличие в том, что КЭШ первого уровня функционирует по т.н. Гарвардской архитектуре, т.е. он делится на две половины по 16Kb, код и данные хранятся в нем раздельно, каждое в своей половине. Мне кажется что это не физическое разделение а скорее логическое, т.е. так его воспринимает логика процессора.
Вопрос: если верно все вышесказанное, то почему бы не объединить оба КЭШа в один?! Я не вижу, в таких условиях, смысла в многоуровневом кэшировании. Или он все же есть? Если он есть, то в чем он заключается? Объясните мне, пожалуйста! Может быть дело тут в аппаратном ограничении размера КЭШа первого уровня в 32Kb или в том, что у разработчиков не было времени на это объединение (ведь, в таком случае, пришлось бы перестраивать логику процессора, связанную с процессом кэширования)?
3. В чем заключается смысл создания многоуровневого КЭШа? В принципе у меня есть свое мнение по этому вопросу. Я считаю, что это связанно со стремлением удешевить готовую продукцию, на фоне повышения общей производительности, т.е. некий компромисс между ценой и производительностью. Но мне хотелось бы, чтобы высказали свое мнение люди которые лучше меня ориентируются в этой области.
Конечно, я понимаю что эти вопросы было бы уместней задать разработчикам. Но, к сожалению, я не владею английским языком в нужном объеме. Я задаю их просто в надежде, что кто ни будь сможет на них ответить.
Ну все, я думаю что для одного раза этих вопросов будет достаточно. Заранее благодарю за ваши ответы.
P.S.: Забыл сказать! Ребята я обратил внимание на то, что у некоторых из вас (да и не только у вас) бытует такая практика: если человек где то не совсем четко сформулировал вводные данные или вопрос, то одни начинают уточнять опущенные моменты, а другие и вовсе отказываются отвечать на такие вопросы. Я предлагаю вам изменить такой подход к делу (там где это возможно) на следующий: вы отвечаете на поставленный вопрос так, как его поняли. Если в водных данных или вопросе есть пробелы (т.е. места нуждающиеся в уточнении), то вы могли бы сами за них что ни будь додумать (главное, чтобы вопрос получился максимально сложным), а в ответе прямо указать на это. В этом случае в рассылке появится больше полезной информации, а задавший вопрос человек увидев ваш ответ сам поймет, что ему нужно уточнить. Главное: не считайте человека, который задал вопрос – ламером по умолчанию (где же презумпция невиновности?). Отвечайте ему по полной программе, если он не поймет ответа, то это его проблемы (в крайнем случае, в следующем письме он уточнит: что ему нужно). Не забывайте, что по мимо него ваш ответ прочитает еще куча народу и кому то он может пригодиться!!! А Вы сможете блеснуть своим профессионализмом. А так же, не забывайте, что большинство вашей аудитории составляют все таки не ламеры. IMHO ламеры тусуются в большинстве своем на рассылках по Visual Basic’у и Delphi. Поэтому, надо давать ламерских ответов! Я конечно вижу что многие из вас так и поступают, но все же не все (не буду пальцем показывать, чтобы не обидеть!). Хотелось бы, чтобы это стало общепринятой практикой на этой рассылке. И тогда всем будет хорошо!!!



Вопрос отправлен: 30.08.2003, 11:24
Отправитель: Олег (Oleg_SK@e-mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, Олег!
Ну ты и написал :)
1. По поводу Tab Control - ищи MSDN по любому, т.к. это наиболее полный справочник разработчика! Еще посмотри Win 32 Dev Ref, которое идет в составе с Borland Delphi или Builder - там значительно меньше, значительно хуже, но все же есть.
> в продаже я ее, у нас в городе, я не видел
Попробуй поговорить с теми, кто продает у вас диски и попросить привезти его на заказ.
2. Кэш. Естественно, что схемное решение как и атлона, так и п3 имеет какие-то основания на это, но они обычно сохраняются неизвестными простым юзерам разработчиками. Если хочешь более точной информации - попробуй почитать мануалы от Intel. Все что я напишу дальше является только моим предположением.
На счет инклюзивности и эксклюзивности - инклюзивное решение организовать проще, потому что логика его работы очевида. Когда процессору требуются новые данные, он обращается в кэш, а тот в свою очередь инициирует цикл чтения из памяти. При этом, если данные есть в кэше второго уровня, то кэш первого уровня их просто загрузит из него. С другой стороны, при эксклюзивном решении возникают вопросы - если требуются данные, которых нет в кэше, куда их помещать; если данные есть в кэше второго уровня, но требуются многократно, то как процессор это отследит и переместит их в кэш первого уровня? Также, что делать с теми данными, которые находятся в кэше первого уровня до помещения туда данных их кэша второго? Логичным кажется поместить их на место тех данных во второй уровень, но это потребует или дополнительного цикла передачи данных между кэшами, или дополнительной шины между ними, чтобы такая передача происходила незаметно. Все это усложняет архитектуру и, видимо, intel считает что это не дает значительного прироста производительности, сравнимого с усложнением технологии. Кроме того, размер кэша первого уровня сейчас настолько мал по сравнению с кэшем второго (в п4 его 512 кб), что это вряд ли повысит быстродействие реальных программ (не синтетических тестов!) хоть на сколько.
Далее, факты подтверждают (особенно на п3), что размер кэша второго уровня не сильно влияет на общую производительность системы, поэтому процессоры celeron от п3 изначально работали на частоте шины 66 Мгц, в то время как сам п3 - на 100 и 133 (чтобы была разница). Это можно объяснить так - большинство алгоритмов оптимизированы так, что кэша в 16 кб под частоиспользуемые данные им вполне хватает, в то время как они обрабатывают объем данных значительно превышающий 256 кб, так что он все равно не помещается в кэш второго уровня. Ты можешь даже сам проделать такой эксперимент - запустить какой-либо тест процессора (лучше реальный, например Quake :), потом перезагрузиться, отключить L2 Cache в BIOS и снова запустить тот же тест - результаты не будут сильно различаться. А вот если ты отключишь кэш первого уровня, то не дождешься, пока загрузиться Windows. Это потому, что он реально необходим процессору современной архитектуры, в то время как кэш второго уровня является как-бы "Hi-end довеском", немного повышающим общую производительность системы.
Кстати, хоть в пентиумах оба кэша работают на одинаковой частоте, но кэш второго уровня оказывается на практике в два раза медленнее кэша первого уровня (у меня на странице есть моя собственная программа измерения скорости чтения процессором оперативной памяти, если хочешь - посмотри ее).
> P.S.: Забыл сказать! Ребята я обратил внимание на то...
Все возможно :) Как говорят, If you want a thing well done - do it yourself! Так что если хочешь что-то исправить, присоединяйся (мне кажется, что ты вполне мог бы это делать :).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 31.08.2003, 21:10
Отправитель: Bob Johnson


 Вопрос № 4052

Здравствуйте, Эксперты.
К вопросу №4043. Я и правда забыл вставить приложение, за что и извиняюсь. Но с первым вопросом я сам разобрался. Зато у меня возник др. вопрос - если нет окна, то получается нельзя работать с сообщениями и делать много полезных вещей, например удалять таймер (ведь без хендла окна его ID игнорируется) и нельзя пользоваться глобальными сообщениями от RegisterWindowMessage?
И еще вопрос: как программа может узнать имя своего файла? Я думал, что надо искать в командной строке пробел. Но ведь имя файла может быть и таким: "new file.exe" или "new.exe .exe", к тому же в CommandLine могут попасться и "левые" параметры.



Вопрос отправлен: 30.08.2003, 15:45
Отправитель: MSoft

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Приветствую Вас, MSoft!
1. Если нужно, можно сделать невидимое окно, чтобы работать с сообщениями. Так делают многие программы.
2. Функция GetModuleFileName (0). После из возвращенной строки необходимо выделить имя файла по последнему "\".

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson


Отвечает Gibbel

Доброе время суток, MSoft!
1. Вообще-то, очередь сообщений привязывается к процессу, а не к окну. И, соответственно, вы можете обрабатывать некоторые сообщения, не создавая окна. Подробнее - см. PostThreadMessage.
2. Имя исполняемого файла можно получить функцией GetModuleFileName.


P.S.: Для подобных вопросов существует рассылка по WinAPI.

Ответ отправлен: 01.09.2003, 13:16
Отправитель: Gibbel


 Вопрос № 4054

Здравствуйте!
Что означают верхняя и нижняя линия сканирования у курсора



Вопрос отправлен: 30.08.2003, 16:58
Отправитель: Александр

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, Александр!
Это если про текстовый режим, то курсор (как и любой символ) изображается в пределах определенной матрицы (8*8 или 8*14). Линии сканирования нумеруются сверху вниз, начиная с 0. Т.е. стандартный курсор задается верхней линией 06 и нижней - 07. Максимальный курсор - 00 и 07...

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 30.08.2003, 23:30
Отправитель: _vt


Отвечает Евгений Иванов

Приветствую Вас, Александр!
Есть знакоместо. Оно имеет высоту от 1 до 32 линий. Вот такие шрифты и можно
применять в текстовых режимах!
А этими линиями сканирования ты выбираешь размер курсора.
Можно сделать прямоугльник, а можно полоску...


Ответ отправлен: 31.08.2003, 01:38
Отправитель: Евгений Иванов


 Вопрос № 4055

Доброго время суток!
1. Проверте пожалуста правильно ли я задаю лимит и базу дескриптора GDT
2. Правильно ли я загружаю gdtr
Это все на Nasmе
Спасибо!


Приложение:


Вопрос отправлен: 30.08.2003, 19:38
Отправитель: Madman

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Приветствую Вас, Madman!
Не понятно что за переменные gdt_cs, gdt_seg, gdt_size. И сразу в глаза бросилось, что в поля lim и limit ты пишешь размер, а надо писать размер минус 1 байт. В общем в приложении я тебе скинул как я это делал (там остается только выполнить lgdt fword ptr gdtr), посмотри.

Приложение:

Ответ отправлен: 01.09.2003, 10:10
Отправитель: ASMодей


 Вопрос № 4056

Здравствуйте, господа Эксперты.
Мне нужна ваша помощь.
Есть диалоговое окно содержащее помимо кнопок и статического текста строку редактирования. Надо чтобы в строке редактирования отображались более высокие (в 2 раза)
символы, чем основой фонт диалогового окна.
Можно ли как-нибудь указать собственный фонт для строки редактирования при описании ресурса или это надо делать программно.Если программно, то подскажите, пожалуйста, каким алгоритмом действий.
С уважением и благодарностью, Luc.



Вопрос отправлен: 30.08.2003, 19:32
Отправитель: Luc

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Luc!

WM_SETFONT
wParam = (WPARAM) hfont; // handle of font
lParam = MAKELPARAM(fRedraw, 0); // redraw flag

An application sends a WM_SETFONT message to specify the font that a control is to use when drawing text.



Ответ отправлен: 31.08.2003, 01:39
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Добрый день, Luc!
На сообщение WM_INITDIALOG пошли этому полю ввода сообщение WM_SETFONT с handle на тот шрифт, который тебя устроит. Сообщение посылается функцией SendDlgItemMessage, а шрифт создается - CreateFont, CreateFontIndirect.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:40
Отправитель: Bob Johnson


 Вопрос № 4057

Здравствуйте, эксперты !
Как трассировать чужие dll-ки. Определить
их состав. Dll оформлена в виде COM-сервера ?
Может какие тулзы посоветуйте ?



Вопрос отправлен: 30.08.2003, 19:57
Отправитель: IceWINteR (brothers@atnet.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, IceWINteR!
Для "определения состава" тебе нужен PE дизассемблер. Используй W32Dasm. Он же позволяет отлаживать программы.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:40
Отправитель: Bob Johnson


Отвечает masquer

Приветствую Вас, IceWINteR!
В олли есть флажок Break on new module, выставляешь, ждешь появления своей и отлаживаешь. Либо выбираешь из уже загруженных модулей. А с COM, помниться, были какие-то прилады со студией, но я этим не интересуюсь...

Ответ отправлен: 01.09.2003, 11:17
Отправитель: masquer


 Вопрос № 4058

Здравствуйте, подскажите, пожалуйста, как можно изменить громкость - ту, которая изменяется общим регулятором - не конкретно wav, midi ... с помощью api.



Вопрос отправлен: 30.08.2003, 20:57
Отправитель: Евгений

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Приветствую Вас, Евгений!
Используй WINMM.DLL.
Там есть все функции для работы со звуком и др.


Ответ отправлен: 31.08.2003, 01:42
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Доброе время суток, Евгений!
Смотри функции микшера: начни с mixerOpen. Также, поищи ее поиском в MSDN и найдешь какой-то пример для VB.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson


 Вопрос № 4059

Вот раньше был сайт www.assembler.ru/
Так это был достаточно мощный сайт про Ассемблер!
Сейчас же там полный маразм.
Если у кого есть зеркало или скачанная копия его, выложите где-нибудь!!!!!!



Вопрос отправлен: 31.08.2003, 02:13
Отправитель: Eugene Ivanov (Eugene_IvanovAT@mail.nnov.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Илья

Приветствую Вас, Eugene Ivanov!
Попробуй http://wasm.ru/docs/1/assemblerru.zip

Ответ отправлен: 31.08.2003, 02:26
Отправитель: Илья


Отвечает _vt

Доброе время суток, Eugene Ivanov!
Архив этого сайта лежит на WASM.RU

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 31.08.2003, 12:22
Отправитель: _vt


 Вопрос № 4060

Доброго времени суток, уважаемые эксперты :)))
У маэстро Зубкова в одной из программ-примеров для очистки экрана используется следующий код :
mov cx,25*80
mov ax,0F20h ;заполняет экран пробелами на черном фоне
xor di,di ;ES установлен на видеосегмент раньше по тексту
rep stosw
А не быстрее ли использовать тривиальное
mov ax,3
int 10h ; ?

Спасибо :)))
S/



Вопрос отправлен: 31.08.2003, 04:02
Отправитель: Sslash (assem@ukr.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Greys

Доброе время суток, Sslash!
Цель книги Зубкова научить разностороннему программированию на асьме, а не поиску тривиальных решений!
А что быстее будет работать-спорный вопрос, ведь в первом варианте идет прямое обращение к видеопамяти!
С уважением, Greys!

Ответ отправлен: 01.09.2003, 01:40
Отправитель: Greys


Отвечает Евгений Иванов

Здравствуйте, Sslash!
А чтобы не мигало.
А так всё гладко...


Ответ отправлен: 31.08.2003, 12:17
Отправитель: Евгений Иванов


Отвечает Broken Sword

Здравствуйте, Sslash!
не, никак не быстрее. отреверсь обработчик int 10h если не веришь. меньше - без базару

Ответ отправлен: 31.08.2003, 19:55
Отправитель: Broken Sword


Отвечает Bob Johnson

Здравствуйте, Sslash!
На счет скорости - не думаю, т.к. переключение видеорежима требует множества дополнительных операций. Ты можешь это проверить и сам - используй команду rdtsc, например:

rdtsc
push eax
...
rdtsc
pop ebx
sub eax, ebx
;eax = количество тактов, которое занимал код "..."

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson


Отвечает Beeblebrox

Добрый день, Sslash!
Короче, но не быстрее. Есть еще более быстрые способы, но уж никак не int 10h

Ответ отправлен: 01.09.2003, 09:46
Отправитель: Beeblebrox


Отвечает Andrew Vext

Добрый день, Sslash!
Проще - да, написать быстрее - да, а вот работает int10 гораздо медленнее.
Вывод прост - если вам безразлично время очистки экрана (ну чистится он у вас один раз в начале программы и все) - ставьте что хотите. Если же вам надо чтобы очистка экрана происходила как можно быстрее - обращайтесь напрямую к видеопамяти (как у Зубкова).

Ответ отправлен: 01.09.2003, 11:28
Отправитель: Andrew Vext


Отвечает Ayl

Здравствуйте, Sslash!
Вообще-то не быстрее. Потому что при выполнении функции установки режима производится куча действий по инициализации видеокарты. Т.е. множество операций типа In/Out, которые на современных процессорах выполняются очень медленно.
К тому же, если не ошибаюсь, в конце инициализации все равно выполняется цикл по заполнению экрана пробелами.
Ну и еще одно - инициализация режима приводит к установке по умолчанию экранного шрифта. Что неприемлемо при его изменении.

Ответ отправлен: 01.09.2003, 12:24
Отправитель: Ayl


Отвечает Igoryk

Здравствуйте, Sslash!
Я так понимаю, это был просто пример очистки памяти без применения прерываний BIOS. Только через видеопамять. Т.к. существует убеждение, что вызов прерывания - процедура медленная, то "быстрее" будет как раз первый вариант.

Ответ отправлен: 03.09.2003, 20:29
Отправитель: Igoryk


 Вопрос № 4061

Здравствуйте, Эксперты.
Это снова я и у меня опять пара вопросов.
Вопрос №1. При создании окна указываются его размеры и координаты. Я решил сделать окно на половину экрана и центрировать его. Как вы видите, для сохранения Y я использовал esi. Но если я использую для этого др. регистр, например ecx, окно создается вне экрана. Почему так происходит?
Вопрос №2. Можно ли создать (и если да, то как) окно без строки заголовка и границ без использования GetClientRect, CreateRectRgn и SetWindowRgn?
Заранее спасибо.


Приложение:


Вопрос отправлен: 31.08.2003, 11:32
Отправитель: MSoft

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Добрый день, MSoft!



  • 1. Регистры EBX, ESI, EDI, ESP можно использовать в своей программе для WIN32
    и не бояться за их изменение. Все другие меняются системными
    подпрограммами (ты тоже можешь их менять и не сохранять).



  • 2. Можно вообще создать любое окно.
    Убери WS_CAPTION и WS_BORDER.
    Типа в dwStyle при вызове CreateWindowEx ставь НОЛЬ




Ответ отправлен: 31.08.2003, 12:18
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Приветствую Вас, MSoft!
1. Потому что любая API функция сохраняет значение регистров ebx, esi, edi, ebp (ну и esp) неизменными, а ecx, eax и edx может изменять.
2. Можно - см. стили окна, кажется тебе нужен WS_POPUP.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson


Отвечает Beeblebrox

Приветствую Вас, MSoft!
Потому, что Win32 API функции не обязаны сохранять ecx. Можно быть уверенным только в esi, edi, ebx и ebp

Ответ отправлен: 01.09.2003, 09:49
Отправитель: Beeblebrox


Отвечает Gibbel

Доброе время суток, MSoft!
1. Тебе повезло, что хоть с esi оно работает. Вообще, функции WinAPI не сохраняют содержимого регистров.
2. Просто задай соответствующие стили окна.


Ответ отправлен: 01.09.2003, 13:33
Отправитель: Gibbel



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (38)
C / C++ (31)
Perl (5)
Builder / Delphi (18)
Pascal (22)
Basic / VBA (7)
Java / JavaScript (9)
PHP (10)
Криптография (9)
WinAPI (15)
Пользователю
Windows 95/98/Me (50)
Windows NT/2000/XP (65)
"Железо" (44)
Поиск информации (23)
Администратору
Windows NT/2000/XP (33)
Linux / Unix (10)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


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


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

В избранное