2、显示缓冲区
显示缓冲区是用来记录屏幕显示信息的。在文本显示方式下,这些显示信息包括:每个显示字符的ASCII码及其显示属性,如图8.7所示。在图形显示方式下,显示缓冲区内存储每个象素的显示颜色。
在图8.7中,我们并没有给出具体的段地址,只用"XXXX"来表示其段地址。在常用的VGA显示方式下,计算机系统规定:
文本显示方式下,单色显示器的显示缓冲区段地址为0B000H;
文本显示方式下,彩色显示器显示缓冲区段地址为0B800H;
图形显示方式下,其显示缓冲区段地址为0A000H。
3、DOS功能中的屏幕输出
屏幕输出是最常用的一种输出形式,DOS操作系统提供了几种实现屏幕输出的功能调用。INT 21H中的相关功能如下:
02H——显示的字符
        
06H——控制台的输入/输出:当DL≠0FFH,表示显示字符
        
09H——在屏幕上显示一个字符串
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。
4、BIOS中的屏幕操作功能
BIOS系统提供了中断10H来实现各种屏幕处理功能。其具体的功能如下:
| 00H——设置显示器模式 | 01H——设置光标形状 | |
| 02H——设置光标位置 | 03H——读取光标信息 | |
| 05H——设置显示页 | 06H、07H——初始化或滚屏(向上滚屏和向下滚屏) | |
| 08H——读光标处的字符及其属性 | 09H——在当前光标处按指定属性显示字符 | |
| 0AH——在当前光标处显示字符 | 0CH——写图形象素 | |
| 0DH——读图形象素 | 0EH——在Teletype模式下显示字符 | |
| 0FH——读取显示器模式 | 10H——颜色 | |
| 13H——在Teletype模式下显示字符串 | ||
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之显示服务。
5、屏幕输出的举例
例8.2 用直接写屏方式在屏幕第5行、第10列以黄色(0EH)显示字符串"Hello"。
解:在文本显示方式下,每行显示80个字符,每个字符占2个字节,所以,显示一行需要160个字节。若在第m行、第n列位置显示字符,则该位置所对应存储单元的偏移量为:m×160 + n×2。
| .MODEL SMALL .DATA Yellow EQU 0EH MSG1 DB "Welcome..." Count EQU $-MSG1 .CODE .STARTUP  | 
  |||
| MOV | AX, 0B800H | ||
| MOV | ES, AX | ;彩色显示器的显示缓冲区段地址 | |
| MOV | DI, 5 | ||
| IMUL | DI, 160 | ;5行所跳过的显示存储单元 | |
| MOV | CX, 10 | ||
| SHL | CX, 1 | ;10列所跳过的显示存储单元 | |
| ADD | DI, CX | ;第5行、第10列之前所跳过的所有显示单元 | |
| MOV | CX, Count | ||
| LEA | SI, MSG1 | ;CX:字符个数,SI:显示字符首地址 | |
| MOV | AH, Yellow | ;设置显示属性,即显示颜色 | |
| .REPEAT | |||
| LODSB | ;取显示字符 | ||
| STOSW | ;向显示缓冲区设置显示字符和属性 | ||
| .UNTILCXZ | |||
| .EXIT 0 | |||
| END | |||
例8.3 用“霓虹灯”的显示方式显示字符串"Hello",按ESC键时结束程序的运行。
解:显示解答
例8.4 编写一个输入密码的程序,该程序的具体要求如下:
1、每输入一个字符,显示字符"#"表示之;
        
2、密码最多只有10个字符,多余的按键被丢弃;
        
3、若输入的字符串为"HELLO",则以蓝色显示"Welcome…",否则,以闪烁、亮红色在显示"Invalid Password"。
解:显示解答
例8.5 在256色320×200的图形显示模式下,从屏幕最左边向最右边,依次画竖线(从顶到底),线的颜色从1依次加1。要求用中断调用的方法来画线。
解:显示解答
例8.6 在256色320×200的图形显示模式下,从屏幕顶到屏幕底依次画横线(从最左边到最右边),线的颜色从1依次加1。要求用直接操作显示缓冲区的方法来画线。
解:显示解答