.model tiny .data ;incr db 0,1,-1,1,0,0,1,0; inkrementy R,G,B pro 4 serie diff db 0,0,1,1,1,-1,-1,-1,1,1,0,0,0a0h ; R: 0,1,-1,1si=0..3 ; G: 0,0,1,0si=4..7 ; B: 1,-1,1,0si=1..4 .code org 100h start: mov ah,0fh int 10h cbw push ax mov al,13h int 10h std cwd xor bx,bx mov cx,0ffffh mov si,offset diff+11 mov es, si step: add dh, byte ptr [si] add cx, word ptr [si-2] ;28 part: mov ax,1010h int 10h inc bx test bl,03fh jnz step lodsb lodsw and bh,bh jz part mov ax,0a000h mov es,ax cbw mov dx,03c8h xor bx,bx xor cx,cx kresli: mov dx,320; hlavni posun mov di,1; vedlejsi posun mov ax,cx; ax=abs(x0-x1).. mov bl,199; bx=D ;push cx; test sudost ;shr cl,1 ;pop cx ;jnc sude test cl,1 jz sude mov si,256; liche: dolu, hp=320, vp=1,-1, K=abs(x0-x1), D=199 sub ax,192; abs(x0-x1)=abs(256-(64+barva))=abs(192-barva) jnc cara; skok pro x0>x1 - nastaveno neg di; jinak je x0D/2 pop bx jl pokrac add si,di; bod=bod+vp sub ax,bx; prub=prub-D pokrac: add ax,bp dec ch jnz cyklus inc cl jnz kresli; barva od 0 do 255, konec pri 256(=0) mov ah,8 int 21h pop ax int 10h ret end start