У меня такея проблема. При установке VESA режимов, хочу осуществлять вывод на экран через LFB, но в структуре характеристик видеорежима в поле PhysBasePtr - физический адрес LFB стоит 0. Что это означает, что LFB доступен по адресам начиная с 0, скорее всего это не так, так в чем же здесь дело???
valeri А в какой среде работаете, может неправильно карта инициализируется, как-то под линукс использовал FrameBuffer там нужен был драйвер.
valeri Проверь код. Если в коде нет ошибок. То могу посоветовать определить, тот же адресс через PCI. Архитектура 32Битная? А виндоус какой адресс показывает?
Вот код: Код (Text): mov ax,0 mov es,ax mov ax,4f01h mov di,500h mov cx,140h int 10h mov ax,4f02h mov bx,4140h int 10h ... ;переход в защищенный режим mov esi,500h mov eax,dword ptr [esi+28h] ;еах содержит 0!!! ... Кстати, если обращаться по адресу EE000000h все работает, но хотелось бы узнать, в чем все-таки дело.
valeri Ошибка в адрессации. У тебя при старте программы регистр DS имеет некоторое значение. После вызова прерывания mov ax,4f01h mov di,500h mov cx,140h int 10h данные помещаются по адрессу DSI. Линейный адресс для LFB будет такой DS*16+500h+28h, а читаешь ты данные по адрессу 500h+28h