Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Графические режимы из Assembler


Автор: BNPmaster 6.7.2006, 14:12
Всем привет,
Знает ли кто-нибудь как установить нужный
режим экрана в Assembler или в Turbo c 3.0 ,но не пользуясь
стандартной графической библиотекой.
В справочниках написано, что прерывание 10h BIOS позволяет 
устанавливать только VGA режим, максимальное 
разрешение при этом 640*480 16 цветов.
А что, если, нужно получить разрешение большее,
скажем 800*600 256 цветов или выше, что делать 
в этом случае?
Может это вообще не через BIOS надо делать?

Метод "научного тыка" показал, что если в TC 3.0 набрать код

void asm_video()
{
 _asm {
    mov ah,0
    mov al, byte ptr 27h

    int 10h
 }
}
 
то монитор перейдёт в режим больше напоминающий 1024*768, нежели 
максимально заявленный в справочниках 640*480.
Но никакого упоминания о режиме 27h я не нашёл. Более того 
использование режима 27h в "чистом" ассемблере (MASM 5.1 )
не даёт какого-либо результата.
Если кто-то, что-то знает - подскажите. 
Спасибо.

 

Автор: Exekutor 6.7.2006, 14:41
Цитата

А что, если, нужно получить разрешение большее,
скажем 800*600 256 цветов или выше, что делать 
в этом случае?


Использовать драйвер видеокарты. 

Автор: e-moe 6.7.2006, 20:57
Exekutor, Читай про VESA 

Автор: Exekutor 8.7.2006, 13:03
Прерывание 27h используется для резидентных com-программ. 

DX - адрес первого байта за резидентной частью программы
CS - на начало PSP 

Автор: chyapay 18.8.2006, 18:01
Че-то ты Exekutor не понимаешь: какое там прерывание 27h, если int 10h ax=byte ptr [27h]=??h
ты че? по адресу [27h] может быть любой мусор т.к. это локальный адрес, в сегменте данных твоей проги. 
А прерывание 27h к этому не имеет ни малейшего отношения. Прерывание тут - 10h, то самое, которое отвечает за функции видео. 
Обычно к нему обращаются так:
mov ax, номер функции
mov bx/cd/dx....... - несколько параметров
int 10h - собственно вызов прерывания
mov errorcode, ax

Для установки видеорежима функция 4F02h в регистре BX значение отвечает за номер режима:

биты 0-6 - собственно номер режима
бит 7 - признак неочищения видеопамяти при остальных битах-нулях
бит 9 - нестандартный режим
биты 10-12 - зарезерв.
бит 13 - аппаратное ускорение
бит 14 - использование фреймбуфера
бит 15 - признак неочищения видеопамяти

например, подставь в BX значение 
 118h для режима 1024х768 32бита труколор

А вообще-то: Зубков С.В.   Ассемблер для ДОС, Виндовс и Юникс!

Автор: monax 21.8.2006, 18:35
BNPmaster, http://www.forum.ishodniki.ru/index.php?topic=7009.0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)