mov cx,_f_posx clean_down_line:
mov ah,0ch ;int10的画点的功能参数 mov bh,0 ;指定页码为0 int 10h ;调用功能画点 inc cx ;cx自增1 cmp cx,202 ; jle clean_down_line;
;;;;;;;;;;;;;;;;;画left_line;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;mov al,0 ;放入颜色值 mov dx,_f_posy ;指定像素的行数 mov cx,_f_posx ;指定像素所在的列数 clean_left_line:
mov ah,0ch ;int10的画点的功能参数 mov bh,0 ;指定页码为0 int 10h ;调用功能画点 inc dx ;dx自增1
cmp dx,_f_height ;_f_height =150px jle clean_left_line;
;;;;;;;;;;;;;;;;;画right_line;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov dx,_f_posy mov cx,202 clean_right_line:
mov ah,0ch ;int10的画点的功能参数 mov bh,0 ;指定页码为0 int 10h ;调用功能画点 inc dx ;dx自增1 cmp dx,_f_height ; jle clean_right_line;
;;;;;;;恢复数据 pop dx pop cx pop bx pop ax ret
clean_frame endp
;************************************************************************************
;*画小球的子程序,用cx,dx传入小球,圆心的坐标是(cx,dx) * ;************************************************************************************
draw_ball proc near
push ax push di push si push dx push cx push bx mov R,4 mov X,cx mov Y,dx mov si,R mov di,R sub di,R
mov al,_f_border_color
LOP0: cmp si,di je lp3 MOV DX,0
LOP: ;bresenham algorithm
PUSH DX
CALL YYY;calculate the ordinate
MOV bX,X
SUB bX,YY
MOV X1,bX ;X-y
MOV bX,X
SUB bX,DX
MOV X2,bX ;X-x
MOV bX,X
ADD bX,DX
MOV X3,bX ;X+x
MOV bX,X
ADD bX,YY
MOV X4,bX ;X+y
MOV bX,Y
SUB bX,YY
MOV Y1,bX ;Y-y
MOV bX,Y
SUB bX,DX
MOV Y2,bX ;Y-x
MOV bX,Y
ADD bX,DX
MOV Y3,bX ;Y+x
MOV bX,Y
ADD bX,YY ;Y+y
MOV Y4,bX
mov ah,0ch mov bh,0 MOV CX,X1 MOV DX,Y2 INT 10H
MOV DX,Y3 INT 10H
MOV CX,X2 MOV DX,Y1 INT 10H MOV DX,Y4 INT 10H
MOV CX,X3 MOV DX,Y1 INT 10H MOV DX,Y4 INT 10H
MOV CX,X4 MOV DX,Y2 INT 10H MOV DX,Y3 INT 10H POP DX

