
Опытный
 
Профиль
Группа: Участник
Сообщений: 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
|
--------------------
Земную жизнь пройдя до половины, Я очутился в сумрачном лесу, Утратив правый путь во тьме долины. Каков он был, о, как произнесу, Тот дикий лес, дремучий и грозящий,
|