Работа с видеопамятью при линейной адресации

Тема в разделе "WASM.ASSEMBLER", создана пользователем Tohey, 2 янв 2007.

  1. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Есть немного примеров работы, но почему то компиляторы ругаются на регистр gs. Работал кто то с таким режимом и регистром?
     
  2. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Я работал, компилировал и тасмом, и фасмом - все работает и без проблем компилится.
    Покажи исходник, чтобы понять, почему не компилится у тебя.
    (Предполагаю, что не разрешены инструкции директивой типа .386)
     
  3. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    Вообще я писал в TC++ через asm{}, он наверное не понимает 386-е и выше.
    А возможно ли вообще работать линейно с видеопамятью под виндой? И что для этого требуется?
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Tohey
    возможно ли вообще работать линейно с видеопамятью под виндой
    dosapp или winapp?
     
  5. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Сам я не пробовал, но по-моему через DirectDraw можно(для WinApp).
    А для DOSApp, мона попробовать через DPMI+VBE
     
  6. CodeTao

    CodeTao Евгений

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    177
    Адрес:
    штаты
    Сам пробовал, работает великолепно(Одним из методов интерфейса поверхности - получить ее линейный адресс, но неуверен что она применима ко всем типам поверхностей, а не только к primery). Кстати, что самое забавно - работа GDI-шных функции происходит быстрее если их вызывать из под DDraw.
     
  7. Tohey

    Tohey New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2006
    Сообщения:
    31
    А есть у кого то какие то примеры, исходники и т.д? Нужно всего лишь вертикальную линию вывести на экран, через BIOSные прерывания не фига под виндой не работает :dntknw:
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Tohey
    Через DOS\BIOS под win линейная видеопамять и не будет работать (когда-то давно тоже в это упёрся :dntknw: ) Переходи на DirectDraw
     
  9. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    В крайнем случае можно нелинейно - через A000h сегмент и окна видеопамяти - такое в винде работает.
     
  10. Phoeniks

    Phoeniks New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    2
    В крайнем случае можно нелинейно - через A000h сегмент и окна видеопамяти - такое в винде работает.

    Простите, а об какой винде идет речь. У меня в ХР VESA-совместимые режимы вообще не устанавливаются.
     
  11. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    О ней и речь.
    До Win9х включительно можно работать с VESA как в режиме линейной адресации (DPMI), так и с помощью банков.
    Win2k и выше - линейная адресация не работает т.к. убрали функцию DPMI для отображения физ. адреса на виртуальный.
    Но режим с использованием банков работает.