Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Брезентхем для VESA 320*200 24b 
:(
    Опции темы
Lonley
Дата 24.5.2004, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ВОт может кому пригодиться
для VESA 320*200 16млн цветов
конечно его можно улучшить
если есть ошибки то буду рад услышать
это превая большая работа на ASM так что не обессудте
Код

.MODEL small
.STACK 100H
.DATA

E dw 0         ;¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп Ґб«Ё …>=0 в® г+1 Ё е+1
 ;Ґб«Ё …<0 в® •+1,   “ ®бв Ґвбп ­ҐЁ§¬Ґ­­л¬
windows db 0 ;¤ҐЄаЁЇв®а ЇҐаҐ¬ҐйҐ­ҐЁ ®Є­ 
;=======================================
xx dw 90 ;Є®а¤Ё­ в ¤«п  «Ј®аЁв¬  ?१Ґ­еҐ©¬ 
yy dw 0;­ з «м­лҐ
;====================================
x2 dw 200;Є®­Ґж
y2 dw 199;«Ё­ЁЁ
;=========================================
x dw 0 ;¤«п а бзҐв  Ї®¤ ®Є­  Ё  
y dw 0    ;ўлў®¤  ­  нЄа ­
color dd 000ffffffh ;梥в(паЄ® §Ґ«Ґ­л©)

Px dw 0 ;ЇаЁа®бв Ї® •
Py dw 0 ;ЇаЁа®бв Ї® “
i dw 0 ;Є®«-ў® жЁЄ«  в\Ґ\ ¤«Ё­  «Ё­ЁЁ
CopyRight  db 'Lonley the Black Moress Studios'
.CODE
START:
.386   ;Ї®¤Є«оз Ґ¬ дг­ЄжЁЁ 386 Їа®жҐбб®а 
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
mov ax,@data ;segm data adress
mov ds,ax ;init DS for seg memory data
;----------------------------------------------------
mov ax,x2;ўлзЁб«пҐ¬ ЇаЁа®бв
sub ax,[xx];¤«п
mov [Px],ax;•
mov ax,[y2];ЇаЁа®бв ¤«п
sub ax,[yy];“
mov [Py],ax;§ Ј®­пҐ¬ ЇаЁа®бв ў ॣЁбвал
;---------------------------------------------------
mov bx,[Px];
;===============================================================
cmp bx,0;Їа®ўҐаЄ  ­  ®ваЁж вҐ«м­л© ЇаЁа®бв
jl BresLD1;Ґб«Ё ¬Ґ­миҐ зҐ¬ ­®«м 0 в® ЇҐаҐе®¤ ­  ¤а/  «Ј®аЁв¬
;-------------------------------------
cmp ax,0;
jl BresRUp1;
jmp dalll;
BresRUp1: ;
call invertPy;
cmp ax,bx;
ja RUp_N1;
jmp No_RUp_N1;
RUp_N1:  ;
call DDLineYC;
call BresRUp_N;
No_RUp_N1: ;
call DDLineXC;
call BresRUp;movenay to algoritm Paint Line Procedure
dalll:  ;
jmp dal1;Ґб«Ё ­Ґв в® ­  ®Ўлз­л© RD
BresLD1: ;
;==============================================================
cmp ax,0;в/Є/ ⥯Ґам ®Ў  ®ваЁж вҐ«м­лҐ
jl BresLUp1;
jmp No_BresLUp;
BresLUp1: ;
call InvertPy;Ё­ўҐавЁа㥬 ®Ў 
call Invert;§­ зҐ­Ёп ЇаЁа®бв 
cmp ax,bx;­  Ў®«миҐбвм
ja New_BresLUp;
jmp off_N_BrLUp;
New_BresLUp: ;
call DDLineYC
call BresLUp_N ;
 ;
off_N_BrLUp: ;
call DDLineXC
call BresLUp ;
No_BresLUp:
call invert;гЎЁа Ґ¬ ®ваЁж вҐ«м­л© §­ Є
cmp ax,bx;ба ў­Ёў ¬Ґ ­  Ў®«миҐбвм зЁб«  ­Ґ §­ Є®ўлҐ
;================================================================
ja BrLD1_N;Ґб«Ё Ў®«миҐ в® ­  ­®ўл©  «Ј®аЁв¬
jmp dal12;Ґб«Ё ­Ґв в® ­  ®Ўлз­л© BrLD
BrLD1_N:
call DDLineYC
call BresLD_N
dal12:
call DDLineXC
call BresLD;movenay to algoritm Paint Line Procedure
dal1:
cmp ax,bx;ба ў­Ёў ¬Ґ ­  Ў®«миҐбвм зЁб«  ­Ґ §­ Є®ўлҐ
ja BrRD_N;Ґб«Ё Ў®«миҐ в® ­  ­®ўл©  «Ј®аЁв¬
jmp dal ;Ґб«Ё ­Ґв в® ­  ®Ўлз­л©
BrRD_N:
call DDLineYC
call BresRDN;movenay to algoritm Paint Line Procedure
dal:
call DDLineXC
call BresRD
;------------------------------------------------------------------
BresLD proc near;ў«Ґў® ў­Ё§
mov cx,[i]
brezen2:
cmp [E],0;Ґб«Ё …
jge deskrip_on2;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_off2;¬Ґ­миҐ 0 в® jump
deskrip_on2: ;
dec [xx];㬥­ми Ґ¬ ­  -1
inc [yy];㢥«ЁзЁў Ґ¬ ­  +1
; mov ax,[Py];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Px];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)
; add [E],ax;
call CDesXE
jmp Ou_Pix2;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_off2: ;
dec [xx] ;㢥«ЁзЁў Ґ¬ в®«мЄ® •+1   “ ®вбв Ґвбп ­ҐЁ§¬Ґ­­л¬
; shl [Py],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[e];Ї® д®а¬г«Ґ
; add ax,[Py];E=E+2*Py
; mov [E],ax;
; sar [Py],1;ў®бв ­ ў«Ёў Ґ¬ Py ®Ўа в­®
call CDesX_e
jmp Ou_Pix2;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o2:  ;
loop brezen2;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix2:  ;
call OutPixelCoo  
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o2;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresLD endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
BresLD_N proc near
mov cx,[i]
brezen_LD_n:
cmp [E],0;Ґб«Ё …
jg deskrip_ld_n;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_ld_off;¬Ґ­миҐ 0 в® jump
deskrip_ld_n: ;
dec [xx];㢥«ЁзЁў Ґ¬ ­  +1
inc [yy];㢥«ЁзЁў Ґ¬ ­  +1
; mov ax,[Px];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Py];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)­Ґ¬­®Ј® ¬®¤ЁдЁжЁа㥬 д®а¬г«г
 ;ў бўп§Ё б ­®ўл¬  «Ј®аЁв¬®¬
; add [E],ax;
call CDesYE
jmp Ou_Pix_ld;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_ld_off: ;
inc [yy];вгв ­ ®Ў®а®в y Є®®а¤Ё­ вл ЇаЁа®бв Ў®«миҐ
; shl [Px],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[E];Ї® д®а¬г«Ґ
; add ax,[Px];E=E+2*Px
; mov [E],ax;
; sar [Px],1;ў®бв ­ ў«Ёў Ґ¬ Pе ®Ўа в­®
call CDesY_e
jmp Ou_Pix_ld;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o_ld:  ;
loop brezen_ld_n;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix_ld: ;
call OutPixelCoo;
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o_ld;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresLD_N endp
;=================================================================
BresLUp proc near;ў«Ґў® ўўҐае
brezenLUp:
cmp [E],0;Ґб«Ё …
jge deskrip_onLUp;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_offLUp;¬Ґ­миҐ 0 в® jump
deskrip_onLUp: ;
dec [xx];㢥«ЁзЁў Ґ¬ ­  +1
dec [yy];㬥­ми Ґ¬   ­  -1;
; mov ax,[Py];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Px];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)
; add [E],ax;
call CDesXE
jmp Ou_PixLUp;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_offLUp: ;
dec [xx] ;㢥«ЁзЁў Ґ¬ в®«мЄ® •+1   “ ®вбв Ґвбп ­ҐЁ§¬Ґ­­л¬
; shl [Py],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[e];Ї® д®а¬г«Ґ
; add ax,[Py];E=E+2*Py
; mov [E],ax;
; sar [Py],1;ў®бв ­ ў«Ёў Ґ¬ Py ®Ўа в­®
call CDesX_e
jmp Ou_PixLUp;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_oLUp:  ;
loop brezenLUp
 ;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л

Ou_PixLUp:  ;
call OutPixelCoo
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_oLUp;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresLUp endp ;
 ;
;===========================================
;===========================================
BresLUp_N proc near
mov cx,[i]
brezenLUp_N:
cmp [E],0;Ґб«Ё …
jg deskrip_on_LUp_N;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_off_LUp_N;¬Ґ­миҐ 0 в® jump
deskrip_on_LUp_N: ;
dec [xx];㢥«ЁзЁў Ґ¬ ­  +1
dec [yy];㬥­ми Ґ¬ ­  +1
; mov ax,[Px];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Py];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)­Ґ¬­®Ј® ¬®¤ЁдЁжЁа㥬 д®а¬г«г
 ;ў бўп§Ё б ­®ўл¬  «Ј®аЁв¬®¬
; add [E],ax;
call CDesYE
jmp Ou_Pix_LUp_N;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_off_LUp_N: ;
dec [yy];вгв ­ ®Ў®а®в y Є®®а¤Ё­ вл ЇаЁа®бв Ў®«миҐ
; shl [Px],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[E];Ї® д®а¬г«Ґ
; add ax,[Px];E=E+2*Px
; mov [E],ax;
; sar [Px],1;ў®бв ­ ў«Ёў Ґ¬ Pе ®Ўа в­®
call CDesY_e
jmp Ou_Pix_LUp_N;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o_LUp_N:  ;
loop brezenLUp_N;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix_LUp_N: ;
call OutPixelCoo;
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o_LUp_N;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresLUp_N endp ;
;=========================================
;=========================================
BresRUp proc near;ўЇа ў® ўўҐае

brezenRUp:
cmp [E],0;Ґб«Ё …
jge deskrip_onRUp;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_offRUp;¬Ґ­миҐ 0 в® jump
deskrip_onRUp: ;
inc [xx];㢥«ЁзЁў Ґ¬ ­  +1
dec [yy];㬥­ми Ґ¬   ­  -1
; mov ax,[Py];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Px];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)
; add [E],ax;
call CDesXE
jmp Ou_PixRUp;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_offRUp: ;
inc [xx] ;㢥«ЁзЁў Ґ¬ в®«мЄ® •+1   “ ®вбв Ґвбп ­ҐЁ§¬Ґ­­л¬
; shl [Py],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[e];Ї® д®а¬г«Ґ
; add ax,[Py];E=E+2*Py
; mov [E],ax;
; sar [Py],1;ў®бв ­ ў«Ёў Ґ¬ Py ®Ўа в­®
call CDesX_e
jmp Ou_PixRUp;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_oRUp:  ;
loop brezenRUp
 ;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_PixRUp:  ;
Call OutPixelCoo;§ ­®бЁ¬ ўлзЁб«Ґ­лҐ Є®®а¤Ё­ вл ў Є®®а¤Ё­ в ­го в Ў«Ёжг
Call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«

jmp ret_oRUp;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresRUp endp
;==========================================================
BresRUp_N proc near;ўЇа ў® ўўҐае
mov cx,[i]
brezenRUp_N:
cmp [E],0 ;Ґб«Ё …
jg deskrip_on_RUp_N;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_off_RUp_N;¬Ґ­миҐ 0 в® jump
deskrip_on_RUp_N: ;
inc [xx];㢥«ЁзЁў Ґ¬ ­  +1
dec [yy];㬥­ми Ґ¬ ­  +1
; mov ax,[Px];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Py];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)­Ґ¬­®Ј® ¬®¤ЁдЁжЁа㥬 д®а¬г«г
 ;ў бўп§Ё б ­®ўл¬  «Ј®аЁв¬®¬
; add [E],ax;
call CDesYE
jmp Ou_Pix_RUp_N;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_off_RUp_N: ;
dec [yy];вгв ­ ®Ў®а®в y Є®®а¤Ё­ вл ЇаЁа®бв Ў®«миҐ
; shl [Px],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[E];Ї® д®а¬г«Ґ
; add ax,[Px];E=E+2*Px
; mov [E],ax;
; sar [Px],1;ў®бв ­ ў«Ёў Ґ¬ Pе ®Ўа в­®
call CDesY_e
jmp Ou_Pix_RUp_N;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o_RUp_N:  ;
loop brezenRUp_N;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix_RUp_N: ;
call OutPixelCoo;
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o_RUp_N;®Ўа в­® ­  ?१Ґ­еҐ©¬
BresRUp_N endp
;=============================================
BresRD proc near;ўЇа ў® ў­Ё§
brezen:
cmp [E],0;Ґб«Ё …
jge deskrip_on;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_off;¬Ґ­миҐ 0 в® jump
deskrip_on: ;
inc [xx];㢥«ЁзЁў Ґ¬ ­  +1
inc [yy];㢥«ЁзЁў Ґ¬ ­  +1
; mov ax,[Py];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Px];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)
; add [E],ax;
call CDesXE
jmp Ou_Pix;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_off: ;
inc [xx] ;㢥«ЁзЁў Ґ¬ в®«мЄ® •+1   “ ®вбв Ґвбп ­ҐЁ§¬Ґ­­л¬
; shl [Py],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[e];Ї® д®а¬г«Ґ
; add ax,[Py];E=E+2*Py
; mov [E],ax;
; sar [Py],1;ў®бв ­ ў«Ёў Ґ¬ Py ®Ўа в­®
call CDesX_e
jmp Ou_Pix;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o:  ;
loop brezen;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix:  ;
call OutPixelCoo;  
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o;®Ўа в­® ­  ?१Ґ­еҐ©¬

BresRD endp
;------------------------------------------------------------
;---¤®Ї®«­ЁвҐ«м­©л  «Ј®аЁв¬ ЇаҐ®Ўа §®ў ­ЁҐ «Ё­ЁЁ ­  Px<Py----
;------------------------------------------------------------

BresRDN proc near;ўЇа ў® ў­Ё§ ЇаЁ Py>Px
mov cx,[i]
brezen1:
cmp [E],0;Ґб«Ё …
jg deskrip_on1;Ў®«миҐ Ё«Ё а ў­® 0 в® jump
jmp deskrip_off1;¬Ґ­миҐ 0 в® jump
deskrip_on1: ;
inc [xx];㢥«ЁзЁў Ґ¬ ­  +1
inc [yy];㢥«ЁзЁў Ґ¬ ­  +1
; mov ax,[Px];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
; mov bx,[Py];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; sub ax,bx;Ї® д®а¬г«Ґ
; shl ax,1;E=E+2*(Py-Px)­Ґ¬­®Ј® ¬®¤ЁдЁжЁа㥬 д®а¬г«г
 ;ў бўп§Ё б ­®ўл¬  «Ј®аЁв¬®¬
; add [E],ax;
call CDesYE
jmp Ou_Pix1;ўлў®¤Ё¬ ЇЁЄбҐ«
deskrip_off1: ;
inc [yy];вгв ­ ®Ў®а®в y Є®®а¤Ё­ вл ЇаЁа®бв Ў®«миҐ
; shl [Px],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
; mov ax,[E];Ї® д®а¬г«Ґ
; add ax,[Px];E=E+2*Px
; mov [E],ax;
; sar [Px],1;ў®бв ­ ў«Ёў Ґ¬ Pе ®Ўа в­®
call CDesY_e
jmp Ou_Pix1;ўлў®¤Ё¬ ЇЁЄбҐ«
ret_o1:  ;
loop brezen1;Є®­Ґж жЁЄ« 
jmp exits;ўл室 Ё§ Їа®Ја ¬¬л
Ou_Pix1: ;
call OutPixelCoo;  
call OutPixel;ўлў®¤Ё¬ ЇЁЄбҐ«
jmp ret_o1;®Ўа в­® ­  ?१Ґ­еҐ©¬

BresRDN endp

;--------------------------------------------------------
OutPixel proc near;
call mov_w0 ;ўбҐЈ¤  ­ зЁ­ Ґ¬ ўлў®¤ б ­г«Ґў®Ј® ®Є­ 
mov ax,1280 ;1280 Є®«ЁзҐбвў® в®зҐЄ Ї® X в/Є/ 梥в а §¬Ґ
  ;-й Ґвбп ў ўЁ¤Ґ® Ї ¬пвЁ ў 32 а б§ап¤ е ў 4 Ў ©в е
mul y  ;г¬­®¦ Ґ¬ ­  “
jc corect ;Ґб«Ё ЇҐаҐЇ®«­Ґ­ЁҐ в® Є®аҐЄвЁа
;============================================
shl x,2  ;б¤ўЁЈ ў«Ґў  Є®а४вЁа в/Є/ 4 Ў ©в  ­  梥в в®зЄЁ
add ax,x ;Є®­Ґз­л© १г«мв в б㬬 
adc dx,0
jc corect1 ;Ґб«Ё ЇҐаҐЇ®«­Ґ­ЁҐ в® ­  Є®а४вЁа®ўЄг
cmp dx,1
je corect1
mov si,ax ;⥯Ґам  ¤аҐб㥬 ўЁ¤Ґ® Ї ¬пвм
;­  Ї®«гзҐ­л© аҐ§г«мв в
out:
mov ebx,color ;梥в
mov es:[si],ebx ;бв ўЁ¬ в®зЄг
shr x,2  ;в Є Є Є ¬л Ё§¬Ґ­Ё«Ё • в® ў®§ўа й Ґ¬ ҐЈ® ў§ ¤
jmp ex_t ;ўл室Ё¬
corect:

shl x,2  ;б¤ўЁЈ ­  2 г¬­®¦ Ґ¬ ­  4
add ax,x ;ў ax Є®­Ґз­л© १г«мв в
adc dx,0
corect1:
mov si,ax ;ў si ax
cmp dx,2
je corect2
cmp dx,3
je corect2
not_cor:

call mov_w1 ;¤ўЁЈ Ґ¬ ®Є­® ­  1 и Ј
jmp out  ;­  ўлў®¤ в®зЄЁ
corect2:
cmp dx,3
jz corect3
call mov_w2
jmp out
corect3:
call mov_w3
jmp out
ex_t:
ret  ;ўл室 Ё§ Їа®жҐ¤гал ўлў®¤  в®зЄЁ
  ;®Ўа в­® ў ?१Ґ­еҐ©¬
OutPixel endp

exits:
mov ah,0 ;¦¤Ґ¬ Є« ўЁиг
int 16h  ;Interrupt

mov ah,4ch;|\
mov al,0;| -EXIT to DOS;
int 21h ;|/

mov_w0 proc near ;movenay to window
mov ah,4fh ;in step zero
mov al,05 ;62454
mov bh,0 ;---------
mov bl,0 ;---------
mov dx,0 ;ЇҐаҐ­®бЁ¬ ®Є­® ­  ®¤Ё­ и Ј
int 10h
mov windows,0
ret
mov_w0 endp
mov_w1 proc near
mov ah,4fh ;
mov al,05 ;62454
mov bh,0 ;---------
mov bl,0 ;---------
mov dx,1 ;ЇҐаҐ­®бЁ¬ ®Є­® ­  ®¤Ё­ и Ј
int 10h
mov windows,1
ret
mov_w1 endp
mov_w2 proc near
mov ah,4fh ;
mov al,05 ;62454
mov bh,0 ;---------
mov bl,0 ;---------
mov dx,2 ;ЇҐаҐ­®бЁ¬ ®Є­® ­  ®¤Ё­ и Ј
int 10h
mov windows,2
ret
mov_w2 endp
mov_w3 proc near
mov ah,4fh ;
mov al,05 ;62454
mov bh,0 ;---------
mov bl,0 ;---------
mov dx,3 ;ЇҐаҐ­®бЁ¬ ®Є­® ­  ®¤Ё­ и Ј
int 10h
mov windows,3
ret
mov_w3 endp

invert proc near
mov bx,[Px]
not bx
add bx,01h
mov [Px],bx
ret
invert endp

invertPy proc near
mov ax,[Py]
not ax
add ax,01h
mov [Py],ax
ret
invertPy endp
;-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
DDLineYC proc near
mov ax,[Py];в® ¤«Ё­­  «Ё­ЁЁ Ўг¤Ґв Ї®«гз вмбп Ё§
mov [i],ax;Py
mov ax,[Px];‚лзЁб«Ґ ¬ ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп Ї®
shl ax,1;д®а¬г«Ґ
sub ax,[Py];E=2*Px-Py
mov [E],ax;
ret
DDLineYC endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
DDLineXC proc near
mov ax,[Px];вгв Ё¬Ґ­­® ў нвЁе ¬Ґбв е ¬®¦Ґв Ўлвм ­ҐЎ®«ми®© BUG
 ;­  Їа ўЁ«м­®бвм ®вЄ«®­Ґ­Ёп «Ё­ЁЁ ­Ґ ­ ¤® Їгв вм д®а¬г«г
 ;ЇҐаў®­ з «м­®Ј® ¤ҐбЄаЁЇв®а  ®вЄ«®­Ґ­Ёп «Ё­ЁЁ
mov [i],ax;
mov ax,[Py];‚лзЁб«Ґ ¬ ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп Ї®
shl ax,1;д®а¬г«Ґ
sub ax,[Px];E=2*Py-Px
mov [E],ax;
mov cx,[i];Є®«ЁзҐбвў® ЇЁЄбҐ«Ґ© ў «Ё­ЁЁ
ret
DDLineXC endp

OutPixelCoo proc near
mov ax,[xx];¬®¤ЁдЁжЁа㥬 Є®®а¤Ё­ вл
mov [x],ax;¤«п ўлў®¤  ­  нЄа ­
mov bx,[yy];
mov [y],bx;
ret
OutPixelCoo endp
;=============
CDesXE proc near
mov ax,[Py];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
mov bx,[Px];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
sub ax,bx;Ї® д®а¬г«Ґ
shl ax,1;E=E+2*(Py-Px)
add [E],ax;
ret
CDesXE endp
;=============
CDesX_e proc near
shl [Py],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
mov ax,[e];Ї® д®а¬г«Ґ
add ax,[Py];E=E+2*Py
mov [E],ax;
sar [Py],1;ў®бв ­ ў«Ёў Ґ¬ Py ®Ўа в­®
ret
CDesX_e endp
;================
CDesYE proc near
mov ax,[Px];¤ «ҐҐ ¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ®вЄ«®­Ґ­Ёп
mov bx,[Py];ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
sub ax,bx;Ї® д®а¬г«Ґ
shl ax,1;E=E+2*(Py-Px)­Ґ¬­®Ј® ¬®¤ЁдЁжЁа㥬 д®а¬г«г
 ;ў бўп§Ё б ­®ўл¬  «Ј®аЁв¬®¬
add [E],ax;
ret
CDesYE endp
;===========
CDesY_e proc near
shl [Px],1;¬®¤ЁдЁжЁа㥬 ¤ҐбЄаЁЇв®а ў§ ўЁбЁ¬®бвЁ ®в бв а®Ј®
mov ax,[E];Ї® д®а¬г«Ґ
add ax,[Px];E=E+2*Px
mov [E],ax;
sar [Px],1;ў®бв ­ ў«Ёў Ґ¬ Pе ®Ўа в­®
ret
CDesY_e endp
;===========
END START







--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
p0s0l
Дата 24.5.2004, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



шо по японски-то ?



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 24.5.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



И кстати, брезенхемом-то что рисуешь ? Я так понял линию ?
Что-то больно много кода для простой линии...
Я помню делал брезенхемову линию для 640x480x256, дак вышло на где-то на 150 строк (т.е. раза в 4 меньше чем у тебя). Код был немного самомодифицирующийся (inc или dec ставился в зависимости от направления)... Вот тебе мысли на тему дальнейшей оптимизации и модернизации...


--------------------
С уважением, г-н Посол.
PM   Вверх
Lonley
Дата 24.5.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



по порядку
1. то что по я понски дык под DOS редактором писал Turbo Shell
2. какой отискал алгоритм такой и написал и еще это же VESA 16 млн колор
приходиться переключать окна их вроде 4 вот
---------------
насчет оптимизации дак спасибо подумаем smile.gif


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

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

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


 




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


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

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