Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аппаратный скроллинг экрана, в текстовом режиме 80*25 
:(
    Опции темы
Ruterian
Дата 6.3.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Решил на досуге сравнить время, затрачиваемое на выполнение разных участков программы (текстовый CGA режим). Пришел в ужас. Оказывается, самым длительным является построчный скроллинг экрана вверх, около 150-300 мкс на пне четвертом, 2,53 ГГц. Поскольку текст выводится непрерывно, возникает нерациональный расход времени. Например, при скане поверхности HDD это приводит к лишним минутам при больших объемах. Оптимизация алгоритма ничего не дала. Да и нечего тут оптимизировать:

Код

       mov ax,0b800h
       mov ds,ax
       mov es,ax
       mov si,160
       xor di,di
       mov cx,(80*24)
       rep movsw


В тоже время в разных источниках то и дело читаешь "аппаратный скроллинг", "средствами видеоконтроллера" итд. Как это делается, никто толком не объясняет. Помогите пожалуйста разобраться.
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 6.3.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Навскидку лично я ничего такого не знаю, но вот приходит такая мысль: просто потрассировать BIOS, он-то наверняка знает, как это делать. Давным-давно я таким образом написал русификатор - подсмотрел у BIOS загрузку символов в знакогенератор. Например (Interrupt list by Ralf Brown):

Цитата
--------V-1006-------------------------------
INT 10 - VIDEO - SCROLL UP WINDOW
AH = 06h
AL = number of lines by which to scroll up (00h = clear entire window)
BH = attribute used to write blank lines at bottom of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Return: nothing
Note: affects only the currently active page (see AH=05h)
BUGS: some implementations (including the original IBM PC) have a bug which
  destroys BP
the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
  scrolling in an SVGA mode (800x600 or higher)
SeeAlso: AH=07h,AH=12h"Tandy 2000",AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.