111 lines
1.8 KiB
NASM
111 lines
1.8 KiB
NASM
; 实验九 - 图形显示程序
|
|
; 功能: 设置图形模式并画线
|
|
; 模式: 图形模式 320x200 256色
|
|
|
|
.MODEL SMALL
|
|
.DATA
|
|
MSG DB 'Press any key to exit...', '$'
|
|
|
|
.CODE
|
|
.STARTUP
|
|
; 设置图形模式 13H (320x200x256色)
|
|
MOV AH, 00H
|
|
MOV AL, 13H
|
|
INT 10H
|
|
|
|
; 画一条红色水平线 (y=50, x从20到100)
|
|
MOV CX, 20 ; 起始X
|
|
MOV DX, 50 ; Y坐标
|
|
LINE1:
|
|
MOV AL, 0FCH ; 红色
|
|
MOV AH, 0CH ; 画点功能
|
|
INT 10H
|
|
INC CX
|
|
CMP CX, 100
|
|
JNE LINE1
|
|
|
|
; 画一条绿色垂直线 (x=150, y从30到90)
|
|
MOV CX, 150 ; X坐标
|
|
MOV DX, 30 ; 起始Y
|
|
LINE2:
|
|
MOV AL, 3FH ; 绿色
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC DX
|
|
CMP DX, 90
|
|
JNE LINE2
|
|
|
|
; 画一条蓝色斜线
|
|
MOV CX, 200
|
|
MOV DX, 100
|
|
LINE3:
|
|
MOV AL, 9FH ; 蓝色
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC CX
|
|
INC DX
|
|
CMP CX, 260
|
|
JNE LINE3
|
|
|
|
; 画一个黄色矩形
|
|
MOV CX, 30
|
|
MOV DX, 120
|
|
RECT_LOOP:
|
|
MOV AL, 0EEH ; 黄色
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC CX
|
|
CMP CX, 130
|
|
JNE RECT_LOOP
|
|
|
|
MOV CX, 30
|
|
MOV DX, 150
|
|
RECT_LOOP2:
|
|
MOV AL, 0EEH
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC CX
|
|
CMP CX, 130
|
|
JNE RECT_LOOP2
|
|
|
|
MOV CX, 30
|
|
MOV DX, 120
|
|
RECT_LOOP3:
|
|
MOV AL, 0EEH
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC DX
|
|
CMP DX, 151
|
|
JNE RECT_LOOP3
|
|
|
|
MOV CX, 129
|
|
MOV DX, 120
|
|
RECT_LOOP4:
|
|
MOV AL, 0EEH
|
|
MOV AH, 0CH
|
|
INT 10H
|
|
INC DX
|
|
CMP DX, 151
|
|
JNE RECT_LOOP4
|
|
|
|
; 显示提示信息
|
|
; 先切换回文本模式
|
|
MOV AH, 00H
|
|
MOV AL, 03H
|
|
INT 10H
|
|
|
|
LEA DX, MSG
|
|
MOV AH, 09H
|
|
INT 21H
|
|
|
|
; 等待按键
|
|
MOV AH, 00H
|
|
INT 16H
|
|
|
|
; 返回文本模式
|
|
MOV AH, 00H
|
|
MOV AL, 03H
|
|
INT 10H
|
|
|
|
.EXIT
|
|
END |