1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
;D ;D --- я просто счастилив теперь VESA работает полностью 320*200 16 млн цветов ---- и цвет нормально кодируется ff ff ff R G B ---- и видео память индексируется нормально незнаю кидать исходник или нет ну уж очень весомый ---- написал для паскаля такую же чтуку -----
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/
{$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/
.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/
:D -=-=- Это древняя тема для меня -=-=- насчет защищенного режима как бы видно что в паскале во вставках ASM неполучилось применить 32 регистр который участвует в цвете -=-= Думаю модет в DELPHI ето удастся ------------------------------ Но есть мыль анписать все ето на ASM с под WIN кстати компилятор под WIN у меня есть ----------------------------------- Но ето собачья работа........ собственно все что выше переработать
--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/