灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2777回复:0

显示缓冲区

楼主#
更多 发布于:2012-09-10 18:56

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

 MOVAX, 0B800H

 MOVES, AX;彩色显示器的显示缓冲区段地址

 MOVDI, 5

 IMULDI, 160;5行所跳过的显示存储单元

 MOVCX, 10

 SHLCX, 1;10列所跳过的显示存储单元

 ADDDI, CX;第5行、第10列之前所跳过的所有显示单元

 MOVCX, Count

 LEASI, MSG1;CX:字符个数,SI:显示字符首地址

 MOVAH, Yellow;设置显示属性,即显示颜色

 .REPEAT

  LODSB;取显示字符

  STOSW;向显示缓冲区设置显示字符和属性

 .UNTILCXZ

 .EXIT 0

 END

喜欢0 评分0
游客

返回顶部