📄 colorful graph.asm
字号:
;彩色图形设计
;****************宏*********************
CLS MACRO
MOV AX,0600H
MOV BH,0DH
MOV CH,0
MOV CL,0
MOV DH,29
MOV DL,79
INT 10H
ENDM
;
DRAW_LIE MACRO
LOCAL LOP1
LOP1:
MOV DX,DI
MOV CX,BP
ADD DI,21
ADD BP,21
DRAW2 FACE
CALL DELAY
MOV DX,DI
MOV CX,BP
ADD DI,21
ADD BP,21
DRAW2 EREASE_FACE
;MOVS FACE
SUB DI,21
JNS LOP1
ENDM
;
DRAW_HENG MACRO
LOCAL LP1
LP1:
MOV DX,DI
MOV CX,BP
ADD DI,21
ADD BP,21
DRAW2 FACE
CALL DELAY
MOV DX,DI
MOV CX,BP
ADD DI,21
ADD BP,21
DRAW2 EREASE_FACE
;MOVS FACE
SUB BP,26
JNS LP1
;
ENDM
;
DRAW2 MACRO xx
LOCAL LP2
MOV SI,OFFSET xx
LP2:
MOV AL,[SI]
INC SI
MOV AH,0ch
MOV BH,0 ;bh****
INT 10h ;dx=hang,cx=lie
INC CX
CMP CX,BP
JNZ LP2
SUB BP,21
MOV CX,BP
ADD BP,21
INC DX
CMP DX,DI
JNZ LP2
SUB DI,21
SUB BP,21
ENDM
;
DISPLAY_FACE MACRO XX1,YY1
MOV DI,XX1
MOV BP,YY1
MOV CX,BP
MOV DX,DI
ADD DI,21
ADD BP,21
DRAW2 FACE
CALL DELAY
ENDM
;***************************************
DSEG SEGMENT
FACE DB 8 DUP(BASE_COLOR),5 DUP(04H),8 DUP(BASE_COLOR);1
DB 6 DUP(BASE_COLOR),04H,04H,5 DUP(BASE_COLOR),04H,04H,6 DUP(BASE_COLOR);2
DB 4 DUP(BASE_COLOR),04H,04H,9 DUP(BASE_COLOR),04H,04H,4 DUP(BASE_COLOR);3
DB 3 DUP(BASE_COLOR),04H,13 DUP(BASE_COLOR),04H,3 DUP(BASE_COLOR);4
DB 2 DUP(BASE_COLOR),04H,15 DUP(BASE_COLOR),04H,2 DUP(BASE_COLOR);5
DB 2 DUP(BASE_COLOR),04H,15 DUP(BASE_COLOR),04H,2 DUP(BASE_COLOR);6
DB BASE_COLOR,04H,4 DUP(BASE_COLOR),0H,7 DUP(BASE_COLOR),0H,4 DUP(BASE_COLOR),04H,BASE_COLOR;7
DB BASE_COLOR,04H,3 DUP(BASE_COLOR),0H,BASE_COLOR,0H,5 DUP(BASE_COLOR),0H,BASE_COLOR,0H,3 DUP(BASE_COLOR),04H,BASE_COLOR;8
DB 04H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),04H;9
DB 04H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),0H,3 DUP(BASE_COLOR),04H;10
DB 04H,19 DUP(BASE_COLOR),04H ;11
DB 04H,19 DUP(BASE_COLOR),04H ;12
DB 04H,19 DUP(BASE_COLOR),04H ;13
DB BASE_COLOR,04H,17 DUP(BASE_COLOR),04H,BASE_COLOR;14
DB BASE_COLOR,04H,17 DUP(BASE_COLOR),04H,BASE_COLOR;15
DB 2 DUP(BASE_COLOR),04H,5 DUP(BASE_COLOR),5 DUP(0H),5 DUP(BASE_COLOR),04H,2 DUP(BASE_COLOR);16
DB 2 DUP(BASE_COLOR),04H,15 DUP(BASE_COLOR),04H,2 DUP(BASE_COLOR);17
DB 3 DUP(BASE_COLOR),04H,13 DUP(BASE_COLOR),04H,3 DUP(BASE_COLOR);18
DB 4 DUP(BASE_COLOR),04H,04H,9 DUP(BASE_COLOR),04H,04H,4 DUP(BASE_COLOR);19
DB 6 DUP(BASE_COLOR),04H,04H,5 DUP(BASE_COLOR),04H,04H,6 DUP(BASE_COLOR);20
DB 8 DUP(BASE_COLOR),5 DUP(04H),8 DUP(BASE_COLOR);21
EREASE_FACE DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
DB 21 DUP(BASE_COLOR)
BASE_COLOR = 7DH
X1 = 290
Y1 = 178
End1 DB 'End successfully!',0DH,0AH,'$'
QUIT DB 'Press any key to quit!',0DH,0AH,'$'
TEXT DB '*~_~* COLORFUL GRAPH PROGAM! *~_~*'
LEN_TEXT = $-TEXT
DSEG ENDS
STACKS SEGMENT
;
STACKS ENDS
;
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:STACKS
START:
MOV AH,0
MOV AL,0DH
INT 10H
CLS
;
MOV AH,09
MOV AL,'*'
MOV BH,0
MOV BL,0DH
MOV CX,80
INT 10H
;
MOV CX,6
DELAY_LP:
CALL DELAY
LOOP DELAY_LP
;
MOV AX,DSEG
MOV DS,AX
;例9.17 p364
MOV BP,SEG TEXT
MOV ES,BP
MOV BP,OFFSET TEXT
MOV CX,LEN_TEXT
MOV DX,0
MOV BL,7DH
MOV AL,0
MOV AH,13H
INT 10H
;
DISPLAY_FACE 70,20
DISPLAY_FACE 105,100
DISPLAY_FACE 41,100
WINDOW:
MOV AH,7
MOV AL,0
MOV BH,01H
MOV CH,8
MOV CL,8
MOV DH,12
MOV DL,32
INT 10H
;
MOV DI,Y1
MOV BP,X1
DRAW_HENG
;
MOV DI,Y1
MOV BP,X1
DRAW_LIE
MOV DI,Y1
MOV BP,X1
DRAW_HENG
;
MOV DI,Y1
MOV BP,X1
DRAW_LIE
;
LOCAT1:
MOV AH,2
MOV DH,10
MOV DL,10
MOV BH,0
INT 10H
SHOW1:
LEA DX,End1
MOV AH,9
INT 21H
;
LOCAT2:
MOV AH,2
MOV DH,11
MOV DL,10
MOV BH,0
INT 10H
SHOW2:
LEA DX,QUIT
MOV AH,9
INT 21H
;
MOV AH,0
INT 16H
;
MOV AH,0
MOV AL,3
INT 10H
;
EXIT:
MOV AH,4CH
INT 21H
;
DELAY PROC NEAR
PUSH CX
PUSH DX
MOV CX,50000
D11:
MOV DX,6000
D12:
DEC DX
JNZ D12
LOOP D11
POP DX
POP CX
RET
DELAY ENDP
CSEG ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -