例8.5 在256色320×200的图形显示模式下,从屏幕最左边向最右边,依次画竖线(从顶到底),线的颜色从1依次加1。要求用中断调用的方法来画线。
解: | ||||
.MODEL SMALL .DATA mode DB ? ;保存当前显示模式 .CODE |
||||
VLine | PROC Near USES AX BX DX | ;画一条竖线,CX—竖线所在的列,AL—线的颜色 | ||
MOV | DX, 0 | |||
MOV | BH, 0 | |||
MOV | AH, 0CH | |||
draw: | ||||
VLine | INT | 10H | ||
INC | DX | |||
CMP | DX, 200 | |||
JL | draw | |||
RET | ||||
ENDP | ||||
.STARTUP | ||||
MOV | AH, 0FH | |||
INT | 10H | |||
MOV | mode, AL | ;保存当前显示模式,在程序结束前恢复之 | ||
MOV | AH, 0 | |||
MOV | AL, 13H | |||
INT | 10H | ;设置256色320×200的图形显示模式 | ||
MOV | CX, 0 | |||
MOV | AL, 01H | ;CX=线所在列,AL=线的颜色 | ||
draw: | ||||
CALL | VLine | |||
INC | AL | |||
INC | CX | |||
CMP | CX, 320 | |||
JL | draw | ;从左到右画320条竖线 | ||
MOV | AH, 0 | |||
INT | 16H | ;等待一个按键 | ||
MOV | AL, mode | |||
MOV | AH, 0 | |||
INT | 10H | ;恢复原来的屏幕显示模式 | ||
.EXIT 0 | ||||
END |