MODEL large,pascal .DATA col db (?) dabklein_ dw (?) extrn drawseg:word ENDS .CODE .386 ; think about to creat different parts for ; 1. deltax>deltay ; 2. deltax=deltay <- that's important ! ; 3. deltax cx mov bp,ax push dx mov ax,cx ; ax = y1 mov dx,320 mul dx add di,ax ; di beinhaltet Bildadresse vom 1.Punkt pop dx cmp si,dx jge dx_gr ; Jump if dx>dy damit ax=x und y = 0 (x ist Laufvariable) ; dy>dx ....... Y ist Laufvar xchg si,dx mov al,col mov cx,si ; cx wird counter shl dx,1 mov si,dx sub dx,cx mov bx,dx sub dx,cx inc cx ; after this : ; dx = dabgross_add ; di = Pointposition ; bp = dabgross ; cx = Counter ; bx = akt_wert ; si = dabklein_add ; al = Farbe ; look that is the lineroutine: short is'nt it ? ;-) l2: mov es:[di],al add di,320 cmp bx,0 jge l4 add bx,si loop l2 jmp ende l4: add di,bp add bx,dx loop l2 jmp ende dx_gr: ; X ist Laufvariable mov al,col mov cx,si ; cx wird counter shl dx,1 mov si,dx sub dx,cx mov bx,dx sub dx,cx inc cx ; after this : ; dx = dabgross_add ; di = Pointposition ; bp = dabgross ; dabklein - in Dataseg ; cx = Counter ; bx = akt_wert ; si = dabklein_add ; al = Farbe ; look that is the lineroutine: short is'nt it ? ;-) sl: mov es:[di],al add di,bp cmp bx,0 jge dabgr add bx,si loop sl jmp ende dabgr: add di,320 add bx,dx loop sl ende: pop bp ret linie ENDP end