mov di,0xA000
mov al,64
stosb
Вывод в видеопамять.real mode
1) Всем известно что видеопамять находиться по адресу 0xA000. Почему тогда для вывода простой точки на экран нельзя сделать так:
Код:
?
Это касается режима 13h. У него буфер как раз 64000 байт.
Пробовал, ничего не получилось.Смотрел несколько примеров, но ни одного рабочего не попалось. В них используется сегментные регистры, - зачем они нужны?
Эсли можно и кому не влом, может покажете минимизированный пример вывода точки в 13h ? (именно прямой вывод в видеопамять)
2) Как программировать видеокарту в защищенном режиме? Через порты? Много раз слышал что типа для каждой карты надо свой драйвер...Но почему тогда BIOS какую бы карту не вставил он все равно тебе что то выведет на экран и без драйверов?
Или это все делается с помощью прерываний?
сегмент * 16 + смещение, где сегмент - один из сегментных регистров, а смещение базовый или индексный регистр (или их комбинация или непосредственное значение). Физический адрес видео буфера - 0xA0000. Поэтому в сегментный регистр нужно поместить 0xA000 и писать по адресу сегментный_регистр:0 для записи по адресу 0xA0000 (или сегментный регистр:1 для адреса 0xA0001). Всего 4 сегментных регистров (у процессоров не поддерживающих защищенный режим): cs, ds, es, ss. CS и SS менять без необходимости не следует, а DS или ES пожалуйста. Вот ваш исправленный пример:
Код:
mov ax, 0xA000
mov es, ax
mov al, 64
xor di, di ; mov di, 0
stosb
mov es, ax
mov al, 64
xor di, di ; mov di, 0
stosb
+1 !
А кто нибудь знает как на счет второго вопроса? ..
У видео-карты есть свой BIOS, который совмещается с BIOS материнской платы. Таким образом ты покупая новую видео-карту меняешь и код BIOS управляющий ей. Да, для каждой видео-карты нужен свой драйвер. Или через прерывания BIOS (таким образом ты будешь обращатся к BIOS-драйверу видео-карты). Можно поискать насчет совместимости с VGA. Может и есть (наверняка есть) какие то регистры имеющиеся у всех видео карт. Есть 32-битные функции BIOS указатели на которые можно получить с помошью специальной функции в реальном режиме. Функции управления видео-картой насколько я помню там тоже есть (смотри про VESA). Также можно вызывать 16-битные функции BIOS из виртуального режима.