同样是多年前学汇编时写的,本来还有一个画椭圆的,不过没看懂原理,程序没写成。
CIRCLE MACRO XC,YC,RADIUS,COLOR
LOCAL NEXT1,NEXT2,NEXT3,NEXT4,NEXT5,NEXT6,EXIT
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
MOV AH,0CH
MOV AL,COLOR
MOV BH,0
MOV CX,XC
MOV DX,YC
MOV SI,0 ;X
MOV DI,RADIUS ;Y
MOV BP,1-RADIUS
NEXT1: CMP SI,DI
JL NEXT2
LEA BX,EXIT
JMP BX
NEXT2: INC SI
NEXT3: CMP BP,0
JGE NEXT4
ADD BP,SI
ADD BP,SI
ADD BP,1
JMP NEXT5
NEXT4: DEC DI
ADD BP,SI
ADD BP,SI
SUB BP,DI
SUB BP,DI
ADD BP,1
NEXT5: MOV BH,0
MOV CX,XC
MOV DX,YC
ADD CX,SI
ADD DX,DI
INT 10H
MOV CX,XC
MOV DX,YC
SUB CX,SI
ADD DX,DI
INT 10H
MOV CX,XC
MOV DX,YC
ADD CX,SI
SUB DX,DI
INT 10H
MOV CX,XC
MOV DX,YC
SUB CX,SI
SUB DX,DI
INT 10H
MOV CX,XC
MOV DX,YC
ADD CX,DI
ADD DX,SI
INT 10H
MOV CX,XC
MOV DX,YC
SUB CX,DI
ADD DX,SI
INT 10H
MOV CX,XC
MOV DX,YC
ADD CX,DI
SUB DX,SI
INT 10H
MOV CX,XC
MOV DX,YC
SUB CX,DI
SUB DX,SI
INT 10H
NEXT6: LEA BX,NEXT1
JMP BX
EXIT:
MOV AH,0CH
MOV AL,COLOR
MOV BH,0
MOV CX,XC-RADIUS
MOV DX,YC
INT 10H
MOV CX,XC+RADIUS
MOV DX,YC
INT 10H
MOV CX,XC
MOV DX,YC-RADIUS
INT 10H
MOV CX,XC
MOV DX,YC+RADIUS
INT 10H
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
ENDM
发表于 @ 2008年07月02日 10:18:00|评论(loading...)|编辑|收藏