Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод изображения, быстрота 
:(
    Опции темы
iff
Дата 18.11.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

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



ОС: DOS/Windows
Компилятор: TASM 5.0

Суть проблемы:
Я пишу программу для вывода графического файла (640 на 480), придуманного мною формата на экран.
В программе исползовал такую структуру:
Код

mov cx, 01h
a10: mov dx, 01h
a20:
mov ah, 0ch                 ;Рисуем точечку
mov al, bufer ;В переменной bufer находится значение цвета
int 10h

add dx, 01h
cmp dx, 1e1h
jne a20

add cx, 01h
cmp cx, 280h
jne a10

Из кода программы видно, что она представляет собой 2 вложенных один в другой цикла.
Всё работает. Но уж очень медленно. Как сделать побыстрей? У меня есть на этот счёт идея: нужно взять из оперативной памяти достаточно большой кусок данных и поместить его в определённое место в видеопамяти, но как это сделать... А каков ваш способ?


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
iff
Дата 18.11.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

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



Никто не знает?


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
iff
Дата 18.11.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

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



Попробовал сделать так:
Код

mov ax, 0a000h  ;Область видеобуфера
mov es, ax
mov di, 00h         ;Смещение 0

mov ax, 023h      ;Цвет пикселей 023h
mov es:[di], ax    ;Вывод

Результат есть. Если поставить значение цвета ffff, то выведется линия из белых токек, если поставить 00, то точек не будет видно (чёрный цвет), ну а если поставить значение цвета ee24, то отнють не появятся разноцветные пиксели. А появится пунктир (то черная точка, то белая) Создалось такое впечатление что этот графический режим черно-белый. Но ведь это не так. В чём ошибка?
Для справки: используется графический режим 12h


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
111u3
Дата 19.11.2009, 03:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

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



iff, прочитай внимательно про то прерывание которое ты используешь, может увидишь свою ошибку
PM MAIL ICQ   Вверх
Mikl_
Дата 19.11.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

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



iff, 
вывод графики на экран по-точечно будет очень медленным, обычно выводят данные куском в буфер видеопамяти, начиная с адреса 0A000:0000h до 0AFFF:FFFFh предварительно установив нужный режим 12h, 13h, режимы VESA (если нужно разрешение экрана больше чем 320х200 и более 256 цветов), предварительно устанавливают палитру или выводят в режиме True color -- более подробно смотри в гугле например "вывод BMP на экран". Здесь тоже были примеры в разделе "Asm для DOS/Windows" smile 
PM MAIL   Вверх
iff
Дата 19.11.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

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



111u3, Код представленный в моём первом посте работает (это вроде как значит отсутствие ошибок). Т.е. проблема не втом, что программа не работает, а в том, что, как уже сказал Mikl_, в слишком медленной работе этих прерываний.



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
111u3
Дата 19.11.2009, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

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



iff, я имел ввиду то что ты обращаешся не так и не то пишешь в видеопамять когда напрямую к ней обращаешся.
PM MAIL ICQ   Вверх
iff
Дата 19.11.2009, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

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



А как надо?


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
111u3
Дата 20.11.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

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



Как надо тебе учебник по ассемблеру скажет, я не ходячий справочник чтобы помнить все наизусть, да и лениво это. Ты лучше побольше кода приведи, а еще лучше весь тогда как ошибку исправить покажу. может быть.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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