第一章 基础知识第九章 彩色图形适配器及其编程
9,1 串行通讯口 I/ O
在现实生活和工作中,常会有将两台计算机实现资源共享和数据交换的要求。微机双机直接通讯的方法有很多种,根据两台微机的距离远近,可分为 近程通讯 和 远程通讯,如果两台通讯的微机在同一间屋内或相距在几十米到一两百米内,称为近程通讯;如果两台微机相距在几百米到几千米甚至更远,则把它们之间的通讯称为远程通讯。
由于计算机通讯的广泛应用,串行接口已成为个人计算机必备的部件,
IBM PC机内装有通讯适配器板,这使得 PC机可以和其它配有串行通讯接口的计算机或设备进行通讯。 串行接口每次由 CPU得到 8位的数据,然后串行地通过一条线路,每次发送一位将该数据发送出去 。
最常用于个人计算机上的串行接口是标准的 RS一 232串行接口,它装于
PC机内的通讯适配器板上。这个标准串行接口既可用于近程或远程的数据通讯,每个系统中可以有两个或多个串行控制器连接到不同的外设上,如 IBM
PC可连接两个串行接口 (COM1和 COM2),但是程序每次只能对一个串口进行存取。
第一章 基础知识第九章 彩色图形适配器及其编程两台 PC机或设备进行近距离通讯时,可直接将它们连接。当它们进行远距离通讯时,要使用调制解调器 (MODEN)连接到电话线上,因为 RS一 232标准串行接口输出的是电压信号,
不能直接接到电话线上,
调制解调器把代表逻辑 1和逻辑 0的电压信号转换成能在电话线上传输的不同频率的信号:电话线另一端的调制解调器又把这些不同频率的信号转换成接口要求的电压信号。左图为两种连接方式的示意图。
串口的连接方式第一章 基础知识第九章 彩色图形适配器及其编程串口的典型结构许多外部设备和计算机是按照串行方式来进行通信的 。 即数据是 1位 1
位进行传输的,在传输过程中,每 1位数据都占据一个固定的时间长度 。 这种情况下,就要用串行接口把这个外部设备连接到总线上 。
当前,可编程的串行接口有许多种。左图是串行接口部件的典型结构,
从图中可以看到,串行接口部件内部有 4个主要寄存器,即控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器 。
第一章 基础知识第九章 彩色图形适配器及其编程控制寄存器 用来容纳 CPU送给此接口的各种控制信息,而控制信息决定接口的工作方式。
状态寄存器 的各位叫状态位,每一个状态值都可以用来指示传输过程中的某一种错误或者当前传输状态。
数据输入寄存器 总是和串行输入/并行输出移位寄存器配对使用的。在输入过程中,数据 1位 1位从外部设备进入接口的 移位寄存器,当接收完 1个字符以后,数据就从移位寄存器送到数据输入寄存器,再等待 CPU来取走。
数据输出寄存器 和并行输入/串行输出 移位寄存器 配对使用。当 CPU往数据输出寄存器中输出 1个数据后,数据使传输到移位寄存器,然后 1位 1位地通过输出线送到外设。
CPU可以访问串行接口中的 4个主要寄存器。从原则来说,对这 4个寄存器可以通过不同的地址来访问,不过,因为控制寄存器和数据输出寄存器是只写的,状态寄存器和数据入寄存器是只读的,所以,
可以用读信号和写信号来区分这两组寄存器,再用 1位地址来区分 2
个只读寄存器或 2个只写寄存器。
第一章 基础知识第九章 彩色图形适配器及其编程九针串口线的连接方式
9针串行口的针脚功能。
,针脚 功能 针脚 功能
,1 载波检测 (DCD) 6 数据准备好 (DSR)
,2 接受数据 (RXD) 7 请求发送 (RTS)
,3 发出数据 (TXD) 8 清除发送 (CTS)
,4 数据终端准备好 (DTR) 9 振铃指示 (RI)
,5 信号地线 (SG)
通讯电缆制作原理:
,串行通讯电缆的制作方法:其串行通讯电缆连接时都遵循下列对接关系:
,SG←→SG
,TXD←→RXD RXD←→TXD
,RTS←→CTS CTS←→RTS
,DTR←→DSR DSR←→DTR
,根据上述对接关系,就可以非常方便地连接串行通讯电缆。
第一章 基础知识第九章 彩色图形适配器及其编程注意事项注意事项,
,·为了保证传输的信号正确、完整,导线的长度最好不要超过 2米;并且宜选用计算机专用电缆。
,·导线必须焊接到所对应的位置,焊头连接必须牢固,并且注意不要短路。
,·对于串行通讯电缆,也可使用 9针到 25针转换接头来连接其中的一个或两个串口。
,·电脑商店也有卖“串口通讯电缆”和“并口通讯电缆”的,购买时要注意弄清楚是微机与微机相连的还是微机与外设相连的,这两种线的内部接法有点不同,弄错了会造成通讯失败。
,·不用于连接电缆的接头 (如 1,9接头等 )宜悬空。这一点对于自己改造从电脑商店买来的所谓“串行通讯电缆”和“并行通讯电缆”尤其重要。
,·并口线不可能太长,串口线速率又较慢。因此本法所制电缆只适合于那些放得很近并有空闲串并口的微机。对于随身携带笔记本电脑要与其它计算交换数据的用户,本法最适合。
把串行或并行电缆两端插到两台机器对应端口上,还不能立即进行数据通讯,还必须有通讯软件的支持。
第一章 基础知识第九章 彩色图形适配器及其编程
DOS串行通讯口功能串行通讯接口为辅助设备,DOS中断操作如下 。
读取操作,INT 21H的功能 03H是从捕助设备 (第一个串行口 COM1)读一个字符到寄存器 AL。
发送操作:功能 04H将 DL寄存器中的字符传送给串行设备,如果输出设备正忙,该功能调用等待,直到设备准备好接收字符。
注意,在多数 DOS系统中,串行设备没有缓冲和中断,如果串行通讯口或其它辅助设备送的数据比程序处理数据快,字符可能丢失。在 PC系统中,第一个串行口 COM1被初始化为 2400波特( 所谓传输率就是指每秒传输多少位,传输率也常叫波特率。 ),无奇偶校验位,1个终止位和 8位数据。其它机器上的 DOS实现可能有不同的初始化。
第一章 基础知识第九章 彩色图形适配器及其编程注意,DOS没有提供读辅助设备的状态和检测 I/ O错误 (如丢失字符等 )的功能,但
ROM中 BIOS INT 14H提供了这些功能。
第一章 基础知识第九章 彩色图形适配器及其编程
BIOS串行通讯口功能
IBM PC的
BIOS串行通讯提供如下操作:
通过 INT
14H调用 ROM
BIOS串行通讯口例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,
读写字符等功能。
第一章 基础知识第九章 彩色图形适配器及其编程
INT 14H AH= 0功能把指定的串行通讯口初始化为希望的波特率,奇偶性,字长和终止位的位数。
这些初始化参数设置在 AL寄存器。其各位的含义如下图所示。
第一章 基础知识第九章 彩色图形适配器及其编程例 要求 0号通讯口的传输率为 2400波特,字长为 8位,1位终止位,无奇偶校验串口通讯中的错误检测功能在接口设计中,常常要考虑对错误的检测问题。当前多数可编程接口,一般能检测下列两类错误。
一类是传输错误。因为接口和设备之间的连线常常受噪声干扰,从而引起传线错误,
所以一般传输信息时,接口采用奇/偶校验位对传输错误进行检测。传输时,如果用 奇校验,那么使信息中 1的数目 (包括校验位 )为奇数。也就是说,所传输的数据中如果
1的个数为奇数则使校验位为 0,所传输的数据中如果 1的个数为偶数则使校验位为 1,这样,在传输一个数据时,1的总数目总是为奇数。同样的道理,如果用偶校验.
那么,信息中 1的数目 (包括校验位 )为偶数。 接口在传输过程中,对信息校验之后,
如果发现有错误,则对状态寄存器中的相应位进行设置。而状态杏存器的内容可以通过程序进行读取和检测。
第一章 基础知识第九章 彩色图形适配器及其编程另一类是复盖错误。我们知道,当计算机输入数据时,实际上是从接口的输入缓冲寄存器中取数。如果计算机还没有取走数据,输入缓冲寄存器由于某种原因又被装上了新的数据,那么,就全产生一个复盖错误。在输出时,也会有类似的情况。
返回参数中通讯口状态字节各位置 1的含义如下图 所示:
在接收和发送过程,错误状态位 (1,2,3,4位 )一旦被置为 1,则读入的接收数据已不是有效数据,所以在串行通讯应用程序中,应检测数据传输是否出错。
第一章 基础知识第九章 彩色图形适配器及其编程状态错误信息奇偶错;通信线上 (尤其是用电话线传输时 )的噪音引起某些数据位的改变,产生奇偶错通常检测出奇偶错时,要求正在接收的数据至少应重新发送一段 。
超越错:在上一个字符还未被处理机取走,又有字符要传送到数据寄存器里,则会引起超越错 。 如果处理机处理字符的速度小于串行通讯口的波持率,则会产生这种错误 。
帧格式错:当接收/发送器未接收到一个字符数据的停止位,则会引起帧格式错 。 这种错误可能是由于通信线上的噪音引起停止位的丢失,或者是由于接收方和发送方初始化不匹配 。
间断;间断有时候并不能算是一个错误,而是为某些特殊的通讯环境设置的
,空格,状态 。 当间断位为 1时,说明接收的,空格,状态超过了一个完整的数据字传输时间 。
第一章 基础知识第九章 彩色图形适配器及其编程例 从通讯口 0读入字符并把它们显示出来,如果字符没有准备好则等待,如果传送有错则显示出错信息,?”。
第一章 基础知识第九章 彩色图形适配器及其编程
9.2 显示器 I/O
显示器是计算机系统的基本显示设备。 显卡 VGA的色彩表现能力、编程方便性和显示速度等性能都直接影响显示性能。
当前流行的都是高分辨率(分辨率为 1024× 768,1280× 1024等) Super
VGA显示器 。
本节主要介绍 VGA及其以上的 Super VGA显示器原理和基本 I/O操作控制方法。
显示器任一时刻都必须工作在 某一显示模式下,显示模式分为两大类:
文本模式?图形模式文本显示模式 I/O
文本模式,由一屏所能显示字符的行、列数及字符属性确定。
例如,文本模式 3,80(列) × 25(行)彩色文本显示模式显存 中保存着当前正显示的一整屏图像数据,VGA在 显存 与 屏幕 之间建立了一种自动映射关系,只要 向显存写入显示数据,屏幕上将 立刻显示出字符或图形 。
实际上显存又被映射到主机系统的 一段内存地址空间 上,
这段内存地址空间称为 视频缓冲区 。
彩色文本模式下,视频缓冲区首地址为 B800:0000H。
程序 读写视频缓冲区,就等效于 读写显存 。
屏幕上每个显示字符都对应 视频缓冲区 中的 两个字节单元,
第一个单元存显示字符的 ASCII码
第二个单元存该显示字符的 属性分辨率越高的显示模式需占用的视频缓冲区存储空间越大。
1) 字符属性字符的属性确定了该字符的显示方式:显示 字符的颜色,
背景颜色 及是否 闪烁、高亮度 。
next
对于 文本模式 3,全屏幕有 2000字符,需占用视频缓冲区存储空间 4000字节 。
返回例 2:采用 文本模式 3在全屏幕上显示 闪烁的蓝底红色字符?A?,
其属性字节为,94H
例 1,闪烁的蓝底红色字符 属性字节,94H=(10010100)2
VGA编程方法:
( 1)直接读写视频存储器
( 2)利用 BIOS中的视频中断调用功能( INT 10H)
( 3)对 VGA的寄存器操作 +读写视频缓冲区其中,
方法( 1)速度快,可利用 Super VGA的扩展性能方法( 2)方便、简单,但时间开销较大方法( 3)速度快,操作更低层,要求对硬件熟悉
2 ) 彩色文本模式的 BIOS中断调用
BIOS中的 显示中断调用 INT 10H有大部分功能是处理文本显示。计算机开机或热启动时,初始模式 是彩色 文本模式 3(参见下表 )。
用 直接写视频缓冲区 的方法完成上述功能:
mov ax,0b800h
mov es,ax
mov di,0 ;视频缓冲区偏移地址送 di
mov cx,2000 ;一屏显示字符的个数送 cx
mov ah,10010100b ;显示属性:闪烁,蓝底红字
mov al,?A? ;显示字符?A?
rep stosw ;字符?A?显示到屏幕上
mov ah,00000111b ;清屏
ov al,
AH 功 能 调用参数 返回参数 / 注释
0 设置显示 方式
AL=00,40x25黑白文本方式
AL=01,40x25彩色文本方式
AL=02,80x25黑白文本方式
AL=03,80x25彩色文本方式
AL=04,320x200彩色图形方式
AL=05,320x200黑白图形方式
AL=06,640x200黑白图形方式
AL=07,80x25黑白文本方式
AL=0D,320x200彩色图形方式 (EGA)
AL=0E,640x200彩色图形方式 (EGA)
AL=0F,640x350黑白图形方式 (EGA)
AL=10,640x350彩色图形方式 (EGA)
AL=11,640x480黑白图形方式 (VGA)
AL=12,640x480彩色图形方式 (VGA)
AL=13,320x200,256
色图形方式 (VGA)
10H中断功能调用 -1
1 置光标类型
( CH) 0―3 = 光标开始行
( CL) 0―3 = 光标结束行
2 置光标位置
BH = 页号
DH = 行
DL = 列
3 读光标位置 BH = 页号
CH = 光标开始行
CL = 光标结束行
DH = 行
DL = 列
4 置显示页 AL = 显示页号
5 屏幕初始化或上卷
6 屏幕初始化或上卷
AL = 上卷行数
AL =0全屏幕为空白
BH = 卷入行属性
CH = 左上角行号
CL = 左上角列号
DH = 右下角行号
DL = 右下角列号
7 屏幕初始化或下卷
AL = 下卷行数
AL = 0全屏幕为空白
BH = 卷入行属性
CH = 左上角行号
CL = 左上角列号
DH = 右下角行号
DL = 右下角列号
10H中断功能调用 -2
8 读光标位置的属性和字符 BH = 显示页 AH = 属性AL = 字符
9 在光标位置显示字符及其属性
BH = 显示页
AL = 字符
BL = 属性
CX = 字符重复次数
A 在光标位置只显示字符
BH = 显示页
AL = 字符
CX = 字符重复次数
E 显示字符 (光标前移 ) AL = 字符BL = 前景色 光标跟随字符移动
13 显示字符串
ES:BP = 串地址
CX = 串长度
DH,DL = 起始行列
BH = 页号
AL = 0,BL = 属性串,Char,
char,……,char
AL = 1,BL = 属性串,Char,
char,……,char
AL = 2
串,Char,
attr,……,char,attr
AL = 3
串,Char,
attr,……,char,attr
光标返回起始位置光标跟随移动光标返回起始位置光标跟随串移动
10H中断功能调用 -3
图形显示模式 I/O
本节讨论有关显示器图形显示模式的基本概念、基本原理、
图形显示技术及其程序设计方法。
1)图形显示模式图形模式:利用显示屏上的 像素点 来构成图形或图像。
主机 —— > 显卡 —— >显示器 —— >
数字信号 模拟信号 模拟信号为减少显存需求量,VGA采用了一种 间接色彩模式 (假彩色),
R ( 6位) G ( 6位) B ( 6位)
0
1
2
6
6
6
6
6
6
6
6
6
颜色索引值显存中只存各颜色在 色彩查找表 中的 颜色索引值,由颜色索引值在色彩查找表中确定像素点的颜色,使显存空间大大减少。
色彩查找表( 18位 RGB值)
随着技术发展,现在 VGA又采用了直接用 RGB三基色亮度值确定像素点颜色的 直接色彩模式,
( 1) 高彩色模式,用 15位或 16位定义一个像素点颜色的模式。
每个基色亮度值占 5位或 6位:
有 32级或 64级亮度值,可表示 32K或 64K种颜色。
( 2) 真 彩色模式,用 24位定义一个像素点颜色的模式。
每个基色亮度值用 8位表示:
有 256级亮度值,可表示 16M种颜色。
真彩色模式 已达到显示器色彩表现能力的极限。
一种图形模式 一般表示为:
水平像素点数?垂直像素点数?色彩模式每种显示模式都有一定的显存空间需求量,计算公式为:
显存空间需求量 =
水平像素点数?垂直像素点数?每个像素值占用的二进制位数显存所映射的视频缓冲区地址空间为
A000H:0000H~A000H:FFFFH
VGA采用了位面技术和显存分页机制来解决上述问题:
例如,标准 VGA的显示模式 12H表示为,640?480?16C
640× 480× 4(Bit)=153KB
视频缓冲区空间仅仅为 64KB,而 12H模式(分辨率低)的显存需求空间就已 远超过 64KB,这就产生了地址空间的矛盾。
( 1)彩色位面法 ( 只用于 VGA的 16色模式 )
VGA将多段大小为 64KB的显存同时映射到一个 64KB的视频地址空间,每段 64KB的显存区称为一个位面,每一个位面用来提供一个二进制像素点颜色值的一位,所以显示屏上的像素点的颜色由几个位面的值共同确定 。
如何通过 小小的视频缓冲区 地址空间访问到 整个显存 呢?
彩色位面法
1 0 1 0 1 1 0 1
0 1 1 0 1 1 0 0
1 1 0 0 1 1 0 1
0 0 1 1 0 0 1 1
0位面 ( 64 k)
0101 品红
0110 棕色
1位面
2位面
3位面
A000:0H
A000:0H
A000:0H
A000:0H
屏幕显存
( 2)压缩像素法 (主要用于 256色 的显示模式)
每个像素值用 8位表示,取值 0-255,可以表示 256种颜色。
每个像素值占用一个字节,并且按字节连续存放,所以视频缓冲区中的一个字节对应显示屏上的一个像素点。
例,VGA 13H模式 ( 320× 200× 256色 ) 的直接写像点子程序 。
入口参数,AX=行坐标,BX=列坐标,CH=颜色值 ( 像素值 )
vga_color256 proc near
mov dx,0a000h
mov es,dx
mov dx,320
mul dx
add ax,bx
mov di,ax
mov es:[di],ch
ret
vga_color256 endp next
显存分页
1 0 1 0 1 1 0 1
0 1 1 0 1 1 0 0
1 1 0 0 1 1 0 1
0 0 1 1 0 0 1 1
0页 ( 64 k)?
1页
2页
A000:0H
显存
0页
1页
2页
压缩像素法返回
2) BIOS图形功能调用在 BIOS的 INT 10H中断调用中的图形显示功能,使用简单方便,当分辨率较高时也不用考虑换页操作,具体功能如表 所示 。
打印机 I/O
打印机接口是一个 并行接口,一次可以从处理器接收 8位数据。 IBM PC系列机使用的打印机接口符合 CENTRONICS接口标准,凡是符合这种接口标准的外部设备,都可以连接到打印接口上。
5.6.1 打印中断调用通过调用 DOS INT 21H 或 BIOS INT 17H可以实现对打印机的操作。下表是有关打印机 I/O的中断操作。
打印字符,
MOV AH,0
MOV AL,?A?
MOV DX,0
INT 17H