| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Графика в Защищенном режиме |
| Автор: gMan 16.3.2005, 12:49 |
| Может кто знает как установить графический режим и вывести точку на экран после перехода в защищенный? Или может кто знает где можно узнать? Заранее спасибо. |
| Автор: oleg1973 16.3.2005, 13:04 |
| в принципе все описано в спецификации vesa ну а проще говоря нужно получить адрес LinearFrameBuffer получить его можно вызвав (не помню номер) функцию прерывания 10 для режимов vesa http://www.theworld.com/obi/Standards/VGA/vesa.txt |
| Автор: Chingachguk 16.3.2005, 13:15 |
| gMan Уточни, что за защищенный режим у тебя: собственный переключатель, используешь dpmi или еще что. Например, при использовании dpmi можно выполнять через int 31h прерывания реального режима, в тч и BIOS. |
| Автор: gMan 17.3.2005, 14:28 |
| Нет я неизпользую DPMI следовательно не могу вызывать ф-ии БИОСа. Наверно надо как-то через порты? Да? |
| Автор: Chingachguk 19.3.2005, 09:13 |
| Все зависит от того, какую задачу ты решаешь. Если ты изучаешь защищенный режим и учишься программировать, то лучше научиться использовать режим виртуального V86. Об этом можно прочить в книге Финогенова. Благодаря нему можно вызывать подпрограммы BIOS, DOS и т.д. Если ты решаешь конкретную задачу, то тут может быть много вариантов. В первую очередь непонятен твой отказ от DPMI. Если все же нужно прогрраммировать свой супервизор, то, во-первых, можно переключиться в графику до переключения в защиненный режим, ну а если прямо таки необходимо переключать режимы монитора внутри защищенного режима, то можно действительно изучить команды работы с видеоконтроллером. На эту тему множество документации, можно напрямую вызвать BIOS с функцией переключения режима, и трассируя его в отладчике, посмотреть команды in/out, которые переключают режим монитора. |
| Автор: Guest 20.3.2005, 11:05 | ||
Да именно это мне и надо! |
| Автор: Shura 24.3.2005, 22:31 |
| Люди, помогите!! Поменял железо и VESA уже не пашет, а очень надо. Можно ли как-нибудь по-другому сделать 1024*768*24b или лучше 32b?? Заранее благодарен! |
| Автор: oleg1973 25.3.2005, 15:08 |
| как это vesa не пашет? ты что поставил видюху 1980 года выпуска? давай чуть поподробней |
| Автор: Guest 28.3.2005, 07:32 |
| А где ссылка от Theworld.com/obi ? |
| Автор: Guest 28.3.2005, 07:37 |
| Может быть просто VESA другой версии?. |
| Автор: Shura 28.3.2005, 11:33 |
| Видюха RADEON 9600PRO. Раньше был GF - работало, а сейчас вообще черный экран! Работает VGA, но этого мало! Может я что-то не так делаю? text segment 'code' assume CS:text begin: mov AH,00 mov AL,10h mov AX,4F02h mov BX,118h int 10h mov SI,0 mov CX,640 line: push CX mov AH,0Ch mov AL,255 ; RED mov BL,100 ; BLUE mov BH,0 mov CX,SI mov DX,SI int 10h inc SI pop CX loop line mov AH,08h int 21h mov AH,00h mov AL,03h int 10h mov AH,00h mov AL,03h int 10h text ends end begin Управление цветами я нашел эксперементально, так что может в этом дело? если это верно, то как управлять зеленым? Постучавшимся в аську (288-576-179) буду рад |
| Автор: oleg1973 28.3.2005, 15:50 | ||
а зачем ты точки через прерывания ставиш? этоже медленно
в данном примере нада установить режим 32 бита на точку или заменить stosd на stosw если режим 16 на точку ну и значение в еах тоже подправить |
| Автор: Shura 29.3.2005, 20:53 |
| В EAX, на сколько я понял, ты заносишь RGB, вывод точки осуществляется 5-10 строками, в ECX,EDX заносятся XY точки? А что ты в ES заносишь? Я от такого волосею, так бы все еще Благодарствую! Добавлено @ 20:56 В EAX, на сколько я понял, ты заносишь RGB, вывод точки осуществляется 5-10 строками, в ECX,EDX заносятся XY точки? А что ты в ES заносишь? Я от такого волосею, так бы все еще Благодарствую! |
| Автор: oleg1973 29.3.2005, 21:02 |
| в есх скажем так длинна строки в еs сегмент видеобуфера |
| Автор: Shura 30.3.2005, 20:08 |
| Слушай, после таких пояснений я что-то затупил... Не мог ли бы ты привести именно функцию вывода, ну, например, линии от 0,0 до 1024,0? От пояснений не откажусь, но можно и без них! |