mov eax,[es:28h]
mov word [descr_video_p+2h],ax
shr eax,16
mov byte [descr_video_p+4h],al
mov byte [descr_video_p+7h],ah
VESA
Выбираю режим по следующим характеристикам (1024*768, глубина цвета 32бита).
Сохраняю адрес видеопамяти для защищенного режима(поле со смещением 28h)
Формирую дескриптор следующим образом:
Код:
После перехода в PM загружаю в es селектор на этот дескриптор и в бесконечно цикле вывожу слово
Код:
mov eax,video_pm
mov es,ax
xor ebx,ebx
vp:
add ebx,2
mov [es:ebx],word 130
jmp vp
mov es,ax
xor ebx,ebx
vp:
add ebx,2
mov [es:ebx],word 130
jmp vp
Вывожу это число просто так(для тестирования. Если что-то увижу, значит все работает и буду разбираться дальше).
Но почему-то ни каких изменений на экране нет. Читал в спецификации VESA что вывод производится спмощью двух окон А и В. Может из-за этого ошибка??.
Пните в нужном напрвлении плиз.
LFB поддерживается не для всех режимов - проверяй соответствующий флажок. Использование окон - это совсем другой механизм работы с видеопамятью, когда посредством переключения банков памяти при записи в одно и то же окно можно выполнять ввод/вывод в разные участки видеопамяти. Обычно используется в том случае, когда нет возможности работать с видеопамятью через LFB.
В бесконечном цикле осуществлять вывод крайне неразумно - выйдешь за пределы сегмента/LFB/физически присутствующей памяти. Выводи изображение размером, достаточным для заполнения экрана, не более того (сложные приемы работы с видеопамятью в расчет не беру).
descr_video_p dw 0FFFFh,0000h,9200h,0F0CFh
Все, проблема решена