例8.6 在256色320×200的图形显示模式下,从屏幕顶到屏幕底依次画横线(从最左边到最右边),线的颜色从1依次加1。要求用直接操作显示缓冲区的方法来画线。

解:
.MODEL SMALL
.DATA
  mode DB ?          ;保存当前显示模式
.CODE
HLine PROC Near USES CX DI ;画一条横线,DI—横线所在行,AL—线的颜色
IMUL DI, 320 ;跳过前面横所对应的字节,每行320个字节
MOV CX, 320
REP STOSB ;重复设置AL的值
RET
HLine ENDP
.STARTUP
MOV AH, 0FH
INT 10H
MOV mode, AL ;保存当前显示模式,在程序结束前恢复之
MOV AH, 0
MOV AL, 13H
INT 10H ;设置256色320×200的图形显示模式
MOV AX, 0A000H
MOV ES, AX ;图形模式的段地址为0A000H
CLD
MOV DI, 0
MOV AL, 01H ;CX=线所在列,AL=线的颜色
draw:
CALL HLine
INC AL
INC DI
CMP DI, 200
JL draw ;从上到下画200条横线
MOV AH, 0
INT 16H ;等待一个按键
MOV AL, mode
MOV AH, 0
INT 10H ;恢复原来的屏幕显示模式
.EXIT 0
END

关 闭