📄 4.asm
字号:
;FILENAME:4.ASM
.486
SCREEN MACRO
MOV AX,12H
INT 10H
MOV AH,0BH
MOV BX,7
INT 10H
ENDM
WRITE MACRO XFLAG,YFLAG
MOV AH,0CH
MOV BH,0
MOV AL,COLOR
MOV CH,0
MOV CL,A
IF XFLAG EQ 0
NEG CX
ENDIF
ADD CX,XX
MOV DX,H
IF YFLAG EQ 0
NEG DX
ENDIF
ADD DX,YY
INT 10H
MOV AH,86H
MOV CX,0
MOV DX,60000
INT 15H
ENDM
DATA SEGMENT USE16
R DB ?
R2 DW ?
A DB ?
A2 DW ?
H DW ?
YY EQU 240
XX EQU 320
COLOR EQU 2
COUNT DB ?
MESG DB 'please strike any key!',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS: CODE,DS: DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV R,0
MOV COUNT,120
SCREEN
LAST: MOV A,0
AGA1: CALL SQRT ;画出第二象限上圆弧的点
WRITE 0,0
INC A
MOV AL,R
CMP A,AL
JNA AGA1
MOV A,AL
AGA2: CALL SQRT ;第三象限的
WRITE 0,1
DEC A
CMP A,0
JGE AGA2
MOV A,0
AGA3: CALL SQRT ;第四象限的
WRITE 1,1
INC A
MOV AL,R
CMP A,AL
JNA AGA3
MOV A,AL
AGA4: CALL SQRT ;第一象限的,总体是按顺时钟方式
WRITE 1,0
DEC A
CMP A,0
JGE AGA4
INC R
DEC COUNT
JNZ LAST ;增大半径,再画圆
MOV AH,9H
MOV DX,OFFSET MESG
INT 21H
MOV AH,1H
INT 21H
MOV AX,2
INT 10H
MOV AH,4CH
INT 21H
SQRT PROC ;计算行坐标
MOV AL,A
MUL AL
MOV A2,AX
MOV AL,R
MUL AL
SUB AX,A2
MOV CX,0
LAST1: MOV DX,CX
ADD DX,DX
INC DX
SUB AX,DX
JC EXIT1
INC CX
JMP LAST1
EXIT1: MOV H,CX ;计算结果保存在H单元内
RET
SQRT ENDP
CODE ENDS
END BEG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -