IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Вывод картинки напрямую в видеопамять
Dark
сообщение 13.05.2003 23:39
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Вот, кому интересно, взял я тему Shadow - вывод точки напрямую в видеопамять и немного изменил:

uses crt;
Const color:array[0..12,0..16] of Byte=

(
 (4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,1),
 (4,24,15,15,24,24,24,15,15,15,24,15,24,24,24,15,1),
 (4,15,24,22,15,24,15,24,24,24,24,15,15,24,15,15,1),
 (4,15,22,24,15,24,24,15,15,24,24,15,24,15,24,15,1),
 (4,15,15,15,15,24,24,24,24,15,24,15,24,24,24,15,1),
 (4,15,24,24,15,24,15,15,15,24,24,15,24,24,24,15,1),
 (4,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,1),
 (4,15,15,15,24,24,24,15,15,15,24,24,24,15,15,15,1),
 (4,15,22,24,15,24,15,24,24,24,15,24,15,24,24,24,1),
 (4,15,15,15,24,24,15,15,15,15,15,24,24,15,15,24,1),
 (4,15,24,22,24,22,15,24,22,24,15,24,24,24,24,15,1),
 (4,15,24,22,22,22,15,24,22,24,15,24,15,15,15,24,1),
 (4,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,1)
 );

Var
x,y,c,col:Word;

Procedure BlockOut(x,y,mx,my:Word);
Begin

asm
 mov ax,0a000h
 mov es,ax     {es:di <- screen[0,0]}
 lea si,color    {ds:si <- color[0]}
 mov cx,y       {cx <- y}
 shl cx,6         {cx <- cx * 2^6<=>y*64}
 mov di,cx      {di <- y*64}
 shl cx,2         {cx <- cx*2^6*2^2<=>y*256}
 add di,cx       {di <- di+y*256}
 add di,[x]      {di <- di+x}
 mov cx,[my]  {kol-vo povtorov po y}
 mov dx,[mx]  {kol-vo povtorov po x}
@l1:
 push cx          {sohranyaem cx v steke}
 mov cx,dx       {pomeshatm v cx kolvo povt. po x}
 rep movsb      {es:[di]<-ds:[si]}{vuvodim stroku tochek}
 pop cx             {vostanavlivaem cx dla povtorov po y}
 add di,320
 sub di,mx      {Vuchislaem adres sleduyshei stroki}
loop @l1         {cx<-cx-1; goto @l1}
 end
end;

BEGIN
asm
 mov ax,0013h
 int 10h
end

 repeat
 blockout(random(320-17),random(200-13),17,13);
 delay(700);
 until keypressed;

asm
mov ah,0
int 16h
end

end.



--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 24.07.2025 0:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"