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

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

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

 
 Ответить  Открыть новую тему 
> Y-a-h-o-o VESA заработала на 16 млн цветов
сообщение
Сообщение #1


Lonely_Raven
****

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

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


;D ;D
---
я просто счастилив теперь VESA работает полностью
320*200 16 млн цветов
----
и цвет нормально кодируется ff ff ff R G B
----
и видео память индексируется нормально
незнаю кидать исходник или нет
ну уж очень  весомый
----
написал для паскаля такую же чтуку
-----


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


...
*****

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

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


Кидай исходник прям сюда....на сколько символов выйдет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Lonely_Raven
****

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

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


D вот оно
{$L inc.obj}
{$f+}
Var
x,y,xx,yy,xxx,yyy: Word;
col: LongInt;

Procedure Color(col:LongInt);External;

Procedure VESAINIT;Assembler;
asm
mov ax,4f02h { функция VESA }
mov bx,10fh { режим 320*200 16-милионов }
int 10h {BIOS video interrupt}
mov ax,0a000h {video memory adress}
mov es,ax {init es for video memory}
end;

Procedure VESAPix(x,y:Word);Assembler;
asm
mov ah,4fh { востанавливаем окно }
mov al,05 {--}
mov bh,0 {--}
mov bl,0 {--}
mov dx,0 {--}
int 10h {--}
mov ax,1280
mul y { ;умножаем на У }
cmp dx,1 { если в dx 1 то на 1 шаг }
je @corect1 {}
cmp dx,2 { на 2 шага }
je @corect2 {}
cmp dx,3 { на 3 шага }
je @corect3 {}
shl x,2 {}
add ax,x {}
adc dx,0 { сложение с корректировкой }
cmp dx,1 { 1 шаг }
je @corect1t {}
cmp dx,2 { 2 шага }
je @corect2t {}
cmp dx,3 { 3 шага }
je @corect3t {}
mov si,ax { ;теперь адресуем видео память }
@out:
jmp @exits { ;выходим }
@corect1: {}
shl x,2 { ;сдвиг на 2 умножаем на 4 }
add ax,x { ;в ax конечный результат }
adc dx,0 { ;сложение с корректировкой }
@corect1t: {}
mov si,ax { ;в si ax }
cmp dx,2 { cмотрим в dx число то есть какой шаг стоит }
je @corect2t {}
cmp dx,3 { 3 шага }
je @corect2t {}
@not_cor: {}
mov ah,4fh {}
mov al,05 { ;62454 }
mov bh,0 {;---------}
mov bl,0 {;---------}
mov dx,1 { ;переносим окно на один шаг }
int 10h {}
jmp @out {}
@corect2: {}
shl x,2 { ;сдвиг на 2 умножаем на 4 }
add ax,x { ;в ax конечный результат }
adc dx,0 {}
cmp dx,3 {}
jz @corect3t {}

@corect2t: {}
mov si,ax { ;в si ax }
mov ah,4fh {;}
mov al,05 { ;62454 }
mov bh,0 {;---------}
mov bl,0 {;---------}
mov dx,2 { ;переносим окно на один шаг }
int 10h {}
jmp @out {}
@corect3: {}
shl x,2 { ;сдвиг на 2 умножаем на 4 }
add ax,x { ;в ax конечный результат }
adc dx,0 { сложение с корректировкой }
@corect3t: {}
mov si,ax { ;в si ax }
mov ah,4fh { функция }
mov al,05 { ;62454 }
mov bh,0 { ;страница }
mov bl,0 { ;номер окна }
mov dx,3 { ;переносим окно на 1 шаг }
int 10h { BIOS interrupt }
jmp @out { на вывод пиксель }
@exits:
end;

BEGIN
VESAInit; {INIT Graph Mode VESA}
col:=$0000000000; { внешняя переменная для цвета }
for yy:=50 to 60 do begin {add xx+1}
for xx:=100 to 115 do begin {add yy+1}
col:=col+$0000111111;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0000ffffff;
for yy:=50 to 60 do begin {add xx+1}
for xx:=115 to 129 do begin {add yy+1}
col:=col-$0000111111;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0000000000; { внешняя переменная для цвета }
for yy:=50 to 60 do begin {add xx+1}
for xx:=129 to 144 do begin {add yy+1}
col:=col+$0000111111;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0000ffffff;
for yy:=50 to 60 do begin {add xx+1}
for xx:=144 to 158 do begin {add yy+1}
col:=col-$0000111111;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0000000000; { внешняя переменная для цвета }
for yy:=61 to 71 do begin {add xx+1}
for xx:=100 to 115 do begin {add yy+1}
col:=col+$0000000011;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$00000000ff;
for yy:=61 to 71 do begin {add xx+1}
for xx:=115 to 129 do begin {add yy+1}
col:=col-$0000000011;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=$00000000ff;
end;

col:=$0000000000; { внешняя переменная для цвета }
for yy:=61 to 71 do begin {add xx+1}
for xx:=129 to 144 do begin {add yy+1}
col:=col+$0000000011;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$00000000ff;
for yy:=61 to 71 do begin {add xx+1}
for xx:=144 to 158 do begin {add yy+1}
col:=col-$0000000011;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=$00000000ff;
end;

col:=$0000000000; { внешняя переменная для цвета }
for yy:=72 to 82 do begin {add xx+1}
for xx:=100 to 115 do begin {add yy+1}
col:=col+$0000110000;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0000ff0000;
for yy:=72 to 82 do begin {add xx+1}
for xx:=115 to 129 do begin {add yy+1}
col:=col-$0000110000;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=$0000ff0000;
end;

col:=$0000000000; { внешняя переменная для цвета }
for yy:=72 to 82 do begin {add xx+1}
for xx:=129 to 144 do begin {add yy+1}
col:=col+$0000110000;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=0;
end;

col:=$0002ff0000;
for yy:=72 to 82 do begin {add xx+1}
for xx:=144 to 158 do begin {add yy+1}
col:=col-$0000110000;
VESAPix(xx,yy); { чертим закрашенный прямоугольник }
end;
col:=$0000ff0000;
end;

asm {Wait press}
mov ah,0 {Key}
int 16h
end;
END.


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Lonely_Raven
****

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

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


а вот и pbj
-----
:D :D
----

.MODEL SMALL, Pascal
.DATA
Extrn col:Dword;
.CODE
Public color
color proc far
.386
mov ebx,col
mov es:[si],ebx
ret
endp color
END



--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


А не мог бы ты сделать енто под 640480  защищённого режима  ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Lonely_Raven
****

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

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


:D
-=-=-
Это древняя тема для меня
-=-=-
насчет защищенного режима
как бы видно что в паскале
во вставках ASM неполучилось применить 32
регистр который участвует в цвете
-=-=
Думаю модет в DELPHI ето удастся
------------------------------
Но есть мыль анписать все ето на ASM с под WIN
кстати компилятор под WIN у меня есть
-----------------------------------
Но ето собачья работа........ собственно все что выше переработать


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 13:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name