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

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


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

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

Выпуск № 390
от 13.10.2002, 13:20

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


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

Dark_Lord
Статус: Профессиональный
Общий рейтинг: 131.68
[Подробней >>]
Bob Johnson
Статус: Опытный
Общий рейтинг: 153.08
[Подробней >>]
Maverick
Статус: Доверительный
Общий рейтинг: 145.71
[Подробней >>]
 
Eugene
Статус: Начальный
Общий рейтинг: 119.64
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 156
[Подробней >>]
DiGiT[old]
Статус: Доверительный
Общий рейтинг: 111.08
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 115.93
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
ASMодей
Статус: Опытный
Общий рейтинг: 121.85
[Подробней >>]
VicSimon
Статус: Начальный
Общий рейтинг: 103.48
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 125.26
URL: Страничка рассылки по Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
igorash
Статус: Профессиональный
Общий рейтинг: 118.49
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.98
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 119.7
URL: Мой сайтик...
[Подробней >>]


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

Вопрос № 1443. Привет Bob Johnson! Ответ на ваш ответ на письмо 1436 1) Насчет TRUE в InvalidateRect и Handle Creat... (ответов: 2)
Вопрос № 1445. Здравствуйте! Хотел скачать ассемблер на сайте указанном в "Справочнике по ассемблеру" , н... (ответов: 2)
Вопрос № 1446. И снова здравствуйте ув-ые эксперты! Если я еще не всех достал, то у меня несколько вопросов :): 1) ... (ответов: 5)
Вопрос № 1447. Приветствую! Суть вопроса: есть такая штука в BIOS как ATC Alarm (выход из ждущего режима в определе... (ответов: 1)
Вопрос № 1448. Здраствуйте уважаемые эксперты, сорри за оффтоп. Я насчет пароля BIOS (вопрос 1392). Не знаю как сей... (ответов: 4)
Вопрос № 1449. Подскажите пожалуйста нормальный компилятор HLP or CHM файлов. Если Вас не затруднит дайте линки. За... (ответов: 2)
Вопрос № 1451. Доброе время суток уважаемые Эксперты! Вроде бы проблема устранилась, точно не могу сказать, так как... (ответов: 9)

Вопросов: 7, ответов: 25


 Вопрос № 1443

Привет Bob Johnson!
Ответ на ваш ответ на письмо 1436
1) Насчет TRUE в InvalidateRect и Handle CreateCompatibleBitmap вы правы, но я посмотрел в своей программе и к моему огромному сожалению понял что там у меня всё написано как вы сказали (то есть правильно) и эти ошибки есть только в тестовых программах которые я писал на основе wap32.asm из TASM 5.0. Мои извинения по поводу введения вас в заблуждение :( .
2) Программа работает так: При нажатии на кнопку создается 2 потока - 1 для подсчета времени (по истечениии интервала посылается сообщение WM_USER+1, обработчик которого готовит нужные данные и вызывает InvalidateRect) и 2 для подготовки в спокойной обстановке картинки для вывода (в то время как программа будет выводить данные из одного CompatibleDC будет готовиться картинка во втором и затем эти DC будут меняться (пока не сделано выводится только первая картинка). Вывод на экран с BitBlt совершается в обработчике WM_PAINT главного потока программы (сейчас подумал что я использовал не общий DC а оконный (стиль окна CS_OWNDC) чтобы можно было его не отдавать - не может это влиять на скорость?). В Win98 на P166 скорость получилась всего ~5 кадров/сек хотя при выводе через ExtTextOut было до 60 (во всё окно 1024x768).
Что нибудь следует из моих объяснений?
Да еще - это работает под Win98, но почему-то не хочет под Win2000.
St



Вопрос отправлен: 08.10.2002, 14:33
Отправитель: St (st23@yandex.ru)

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

Отвечает Dark_Lord

Здравствуйте, St!
Существуе кнопка ответить для посылки ответов!!!!! Какого лешего надо засорять вопросы!!!!!

Ответ отправлен: 08.10.2002, 19:03
Отправитель: Dark_Lord


Отвечает Bob Johnson

Доброе время суток, St!
Нет, оконный DC только отнимает ресурсы у GDI (память - 64К) - на скорость он не должен влиять (а может и быстрее будет).
1. Вот и хорошо.
2. Можно, конечно делать так как ты написал. Но, если есть 2 DC в памяти, зачем, пока готовится один постоянно выводить другой на экран? Или выводится каждый раз немного сдвинутое изображение?
На счет вывода - если есть DC, постоянно отданный окну (т.е. стиль CS_OWNDC), то можно и не посылать сообщения, а просто делать bitblt в этот DC. Главное только не делать это одновременно из нескольких потоков :-)
Про скорость - все зависить от системы и видеокарты. В принципе, как я понял, функции GDI достаточно бысты, так что надо просто пробовать другие разрешения (может меньше цветов) или другие способы вывода.
Чтобы понять, почему программа не работает под 2к - попробуй ее там поотлаживать, посмотри, что не так. Я ничего тут не могу сказать - у меня 98 (все никак не собирусь снести Linux и поставить ХР).


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


 Вопрос № 1445

Здравствуйте!
Хотел скачать ассемблер на сайте указанном в "Справочнике по ассемблеру" , но его уже нет. Можно ли где-нибудь ещё скачать или можете ли Вы прислать по почте, если архив не привышает 18-19 Mb.
С уважением, Тимофей.



Вопрос отправлен: 08.10.2002, 21:25
Отправитель: Тимофей

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

Отвечает Maverick

Здравствуйте, Тимофей!
Есть такой сайт по поиску програмного обеспечения:
www.FileSearch.ru
Так вот ты определись какой ассемблер тебе нужен и там в строке поска введешь Masm или Tasm или хоть что.
А вообще очень хороший поисковик, так что рекомендую всем.


Ответ отправлен: 09.10.2002, 11:11
Отправитель: Maverick


Отвечает Eugene

Здравствуйте, Тимофей!
http://asmfanat.narod.ru/soft/fasm.rar
Интересная версия ассемблера.


Ответ отправлен: 09.10.2002, 09:42
Отправитель: Eugene


 Вопрос № 1446

И снова здравствуйте ув-ые эксперты!
Если я еще не всех достал, то у меня несколько вопросов :):
1) Как мне писать в LFB? Мне дали 32-х разрядный адресс буфера для работы в защищенном режиме (00h 00h 00h 38h). 1.1) Что мне дальше делать?
1.2) Как мне перевести проц в защищенный режим?
1.3) Если я запускаю com-прогу из Виндов то он уже в защещенном режиме или нет?
1.3.1) Если да, то как проги под дос работают защ. реж.?
1.3.2) Если нет, то что мне делать?
1.4) Разрешат ли мне винды использовать LFB? Или они (винды) сами его используют?
2) Может есть способы работы с большими разрешениями (1024*768*24) попроще? :)
3) Я не всех достал?
P.S. Вообщем, мне это все надо для написания чего-нить типа демки. Может есть хорошие книги посвещенные этому? Или ресурсы в нете?
P.P.S. На все это меня вдохновила дема Fr-08.



Вопрос отправлен: 09.10.2002, 00:28
Отправитель: Dron Gus (dron_gus_asm@pochtamt.ru)

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

Отвечает Maverick

Приветствую Вас, Dron Gus!
Интересуешся защищенным режимом?
Так вот у эксперта Broken Sword есть очень хорошая рассылка на эту тему: http://subscribe.ru/catalog/comp.soft.prog.intelpm
Почитай, там все хорошо описано.

Ответ отправлен: 09.10.2002, 11:29
Отправитель: Maverick


Отвечает masquer

Доброе время суток, Dron Gus!
Так зачем тебе вообще дос. Используй DirectX (в частности Direct3D), или OpenGL, как в предмете твоего вдохновления. Так будет попроще, а винда может и не дать тебе использовать vesa.

Ответ отправлен: 09.10.2002, 10:46
Отправитель: masquer


Отвечает DiGiT[old]

Здравствуйте, Dron Gus!
1. Найди доку соответсвующую.
2. Тоже самое найди доку. Я могу сказать что перевести cpu в защищенный редим достаточно mov eax, cr0; or eax,1;mov cr0,eax но этого недостаточно. Зайди на Alexfru.chat.ru.
3.Нет. Поймешь позже после того как разберешься с 2.

Ответ отправлен: 09.10.2002, 06:30
Отправитель: DiGiT[old]


Отвечает Eugene

Здравствуйте, Dron Gus!
Для перехода в защищённый режим есть 2 метода:
1)
smsw AX
or AX,1
lmsw
2)
mov EAX,CR0
or EAX,1
mov CR0,EAX
Когда ты запускаешь досовые проги под виндой, они работают в "виртуальном" реальном пространстве, а не в защищённом. А перейти в защищённый режим под виндой тебе не удастся, т.к. проц уже работает в нём. Собственно надо запускать свой прожект из под SAFE MODE DOS.


Ответ отправлен: 09.10.2002, 09:53
Отправитель: Eugene


Отвечает Bob Johnson

Здравствуйте, Dron Gus!
Да нет, всегда пожалуйста.
1. Просто. Как в обычную память:
mov edi, 38000000h
mov [edi + ..], ???
1.2. По этому поводу - к Broken Sword (вот только сегодня на работе посмотрел последний выпуск его рассылки и ... там как раз, как перейти в защищенный режим (ну и что-то про Гордона из Half-Life)). Но правильнее - писать прогу для работы в защищенном режиме через DOS-Extender, например, P-Mode, Dos32 или самый обычный DOS4GW.
1.3. Нет. Проц в виртуальном режиме, т.е. твоя прога думает, что он в реальном.
1.3.1. Используют дос-экстендер, который договаривается с виндами и те выделяют ему все необходимое.
1.3.2. Использовать дос-экстендер.
1.4. Я думаю, что да (скорее всего), прост он может находиться не по обычному адресу, а по другому.
2. Нет: LFB - Самый простой и эффективный (если не исп. аппаратное ускорение).
3. Нет.
P.S. Пиши лучше под винды (как бы это не показалось на первый взгляд смешно). Пример: jizz32 и stash32 - НУ Очень старые демки... Но ведь клевые. Преимущества - не надо разбираться с дос-экстендером, не надо заморачиваться с LFB, просто используй DC (для начала) или DirectDraw (Direct3D) - и тебе покажется это еще проще.


Ответ отправлен: 09.10.2002, 23:37
Отправитель: Bob Johnson


 Вопрос № 1447

Приветствую!
Суть вопроса: есть такая штука в BIOS как ATC Alarm (выход из ждущего режима в определенное время). Хотелось бы узнать возможно ли изменение данной опции без непосредственного обращения к BIOS при начальной загрузке (читай: из операционки).
Если кто сталкивался, подкиньте пример...



Вопрос отправлен: 09.10.2002, 00:38
Отправитель: Idle Sign

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

Отвечает baldr

Здравствуйте, Idle Sign!
Выход из спящего режима происходит по какому-то аппаратному прерыванию. Попробуй его сгенерировать... Или по таймеру - будильник установить? В общем, способы-то есть...

Ответ отправлен: 09.10.2002, 11:59
Отправитель: baldr


 Вопрос № 1448

Здраствуйте уважаемые эксперты, сорри за оффтоп. Я насчет пароля BIOS (вопрос 1392). Не знаю как сейчас, но к старым Award биосам есть же стандартные пароли, например AWARD_SW, так что, по моему это не очень безопасно.
Еще раз Sorry.



Вопрос отправлен: 09.10.2002, 09:45
Отправитель: Stark

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

Отвечает Maverick

Приветствую Вас, Stark!
Ну так можешь поизвращаться с win.com
Напиши что-нибудь вроде вируса, например чтоб прога прикреплялась к win.com стандартными вирусными методами, поэтому когда начнет грузится винда то управление передастся на твою прогу, а там твори что хочешь, хоть пароль спрашивай.


Ответ отправлен: 09.10.2002, 11:22
Отправитель: Maverick


Отвечает Eugene

Приветствую Вас, Stark!
Лучше конечно использовать новые материнки. Я встречал фичи, на АТХ мамах, там можно ставить пароль ещё на момент до включения компа.


Ответ отправлен: 09.10.2002, 09:58
Отправитель: Eugene


Отвечает baldr

Приветствую Вас, Stark!
Ламеры их не знают, а профи сломают любую защиту.

Ответ отправлен: 09.10.2002, 12:10
Отправитель: baldr


Отвечает Bob Johnson

Приветствую Вас, Stark!
Да! О как это было прикольно... И еще j256 j322 и что-то еще.
Для этих компьютеров - да, но, начиная с P-2 такого, кажется нет (т.е. нет стандартного пароля вообще).
Если же кто-то знает стандартные пароли на новые биосы - не делайте из этого тайны.
В таком случае ЗАЩИТЫ НЕВОЗМОЖНО СДЕЛАТЬ ВООБЩЕ - я знаю такой пароль, захожу в BIOS setup, ставлю загрузку с А:, свою дискету и компьютер в моей власти. Это недоработка (или переработка) AWARD. Что уж тут еще.


Ответ отправлен: 09.10.2002, 23:37
Отправитель: Bob Johnson


 Вопрос № 1449

Подскажите пожалуйста нормальный компилятор HLP or CHM файлов. Если Вас не затруднит дайте линки.
Заранее благодарен
Владимир Милославский (Miloslawsky@ua.fm)



Вопрос отправлен: 09.10.2002, 10:50
Отправитель: Miloslawsky (Miloslawsky@ua.fm)

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

Отвечает masquer

Приветствую Вас, Miloslawsky!
Help&Manual или Far - ссылок не помню - все шароварные.

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


Отвечает Maverick

Доброе время суток, Miloslawsky!
А почему в рассылку по ассемблеру?
Наверно при прочтении слова компиляция, возникают ассоциации с ассеблером :)
Поисковик лень поюзать?
Я сам когда то искал, и нашел без проблем.
Вот ссылка:
www.danish-shareware.dk/soft/shelpm/
Это для компиляции HLP, ничего прога, я сам ей пользуюсь.


Ответ отправлен: 09.10.2002, 12:13
Отправитель: Maverick


 Вопрос № 1451

Доброе время суток уважаемые Эксперты!
Вроде бы проблема устранилась, точно не могу сказать, так как АЦП пока отключено.
Вопрос у меня такой. Допустим вид функции такой :
Fun (unsigned short Param_1, unsigned short Param_2)
{
asm{
mov AL, byte ptr [Param_1];
mov DX, Param_2;
}
};
И теперь, когда мы определим Param_1 так:
unsigned short Param_1=32;
unsigned short Param_2=0x680;
то при вызове Fun(Param_1, Param_2)
в регистре AL будет содержатся не число 32, а символ пробела.
Прав ли я ?
И если да, то как это обойти ?
Пожалуйста, помогите мне.
Рифат.



Вопрос отправлен: 09.10.2002, 13:14
Отправитель: Рифат (orw@ngs.ru,abriofh@mail.ru)

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

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

Приветствую Вас, Рифат!
Нет не прав. Число 32 (оно же 20h) и символ пробела это
абсолютно одно и то же!
Тут недавно в рассылке тоже был кто-то (случайно не ты?),
кто никак не мог понять, как это байт может одновременно
быть и числом и символом. Так вот в байте находится числовое
значение. А что оно означает (число, символ, адрес, нота, ...)
зависит только от точки зрения программиста.
Кстати у тебя в программе параметр Param_1 используется как
адрес и в AL запишется значение, которое лежит по этому адресу.


Ответ отправлен: 10.10.2002, 09:00
Отправитель: ASMодей


Отвечает VicSimon

Здравствуйте, Рифат!
Прав. Если посмотреть на таблицу ASCII-кодов, то окажется, что код символа пробела = 32d (или 20h). Поэтому не понятно, что вас смущает.

Ответ отправлен: 09.10.2002, 15:36
Отправитель: VicSimon


Отвечает Sensey

Здравствуйте, Рифат!
Какой у тя адрес интересный :)
Число 32=число 20h = символ пробела
Это идентично! И ничего обходить не надо...
А чего ты хочешь добиться?


Ответ отправлен: 09.10.2002, 13:32
Отправитель: Sensey


Отвечает igorash

Доброе время суток, Рифат!
так это ведь одно и то же, код пробела - 32, просто ты уже сам понимай что тебе надо - число 32 или символ пробела


Ответ отправлен: 09.10.2002, 13:27
Отправитель: igorash


Отвечает Eugene

Приветствую Вас, Рифат!
Fun (unsigned short Param_1, unsigned short Param_2)
//лучше void Fun(BYTE Param_1, BYTE Param_2)
{
asm
{
mov AL, byte ptr [Param_1]; /*?????обращаемся к байту памяти, адрес которой находится в Param_1*/
//нужно mov AL, Param_1;
mov DX, Param_2;
}
}


Приложение:

Ответ отправлен: 09.10.2002, 13:40
Отправитель: Eugene


Отвечает Ayl

Доброе время суток, Рифат!
Не понял, как в регистре AL может содержаться символ? Код символа - это да. Код пробела равен 32. Регистр AL содержит значение 32. Теперь все зависит от тебя, как ты будешь это значение интерпретировать. А вот если ты захочешь вывести на экран значение регистра AL в числовом виде, то тебе потребуется перевести его в вид, скажем, 3332h, чтобы при выводе получилось 32. А если просто выводить на экран как есть, то тогда действительно будет выведен пробел.

Ответ отправлен: 09.10.2002, 13:34
Отправитель: Ayl


Отвечает masquer

Доброе время суток, Рифат!
Гы-гы, а 32 это и есть символ пробела.
Обойти? :) Можешь другую кодировку использовать EBCDIC, там пробел по другому будет :)))))))
Ну, блин, вопрос!!!

Ответ отправлен: 09.10.2002, 13:46
Отправитель: masquer


Отвечает Portnov

Доброе время суток, Рифат!
:)))) Обрадовали вы меня. Код символа пробела - это именно 32, так что в AL вы положили как бы одновременно число 32 и символ пробела - зависит от интерпретации. Т.о., вашей проблемы в данном случае не существует - все работает так, как вы сказали, и при этом правильно :)
С уважением, Portnov.

Ответ отправлен: 09.10.2002, 21:25
Отправитель: Portnov


Отвечает Bob Johnson

Доброе время суток, Рифат!
В Al будет как число 32, так и символ пробела одновременно, потому что символ пробела имеет код 32. А вот как уже рассматривать число 32 - это твоя задача. И, скорее всего, ничего тут обходить не надо будет:
mov al, byte ptr [Param_1]
mov dx, [Param_2]
out dx, al
и в порт номер [Param_2] выведется ([Param_1] mod 256) - т.е. младший байт от [Param_1].


Ответ отправлен: 09.10.2002, 23:37
Отправитель: 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 (41)
C / C++ (31)
Perl (5)
Delphi (19)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (10)
PHP (9)
MySQL / MSSQL (12)
Пользователю
Windows 95/98/Me (37)
Windows NT/2000/XP (25)
"Железо" (34)
Поиск информации (13)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (15)
Юристу
Гражданское право (6)
Семейное право (4)
Трудовое право (3)
КоАП (5)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное