8.3.4 串行口中断功能
优质
小牛编辑
134浏览
2023-12-01
8.3.4 串行通信口的中断功能
计算机的通信功能是现代计算机网络的最基本功能。如果计算机没有通信功能,计算机网络环境也就无从谈起。一台计算机与其它计算机(或设备)之间通信除了必要的物理连接之外,它们之间通信接口的功能就是另一个极其重要的功能模块。
从计算机通信的本质来看,通信就是发送或接受具有一定格式的二进制位。这些二进制位通过一些应用程序——如浏览器——的解释显示成具有不同表达形式的文字或图象。
为了方便实现计算机的通信功能,在系统的低层或操作系统中都有不同程度的支持,如:DOS、BIOS和NETBIOS等系统中都相应通信功能或中断服务。下面仅仅介绍在汇编语言程序中如何使用通信功能,有关通信功能的详细内容在《计算机通信与接口技术》课程会有更深入的论述。
1、DOS中的通信功能
INT 21H提供了对通信口COM1操作的功能调用。其具体描述如下:
03H——从辅助设备读入一个字符,该辅助设备的缺省值为COM1
04H——向辅助设备输出一个字符,该辅助设备的缺省值为COM1
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。
2、BIOS中的通信功能
BIOS系统提供了中断14H来实现对通信端口的控制能。这些具体的功能如下:
00H——初始化通信口 01H——向通信口输出字符 | 02H——从通信口读入字符 03H——读取通信口状态 |
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之串行口服务。
3、通信功能的应用举例
例8.9 把字符串"Hello, World"从COM1端口传输出去。在传输过程中,要求传输速率为9600波特,字长为8位,1位停止位,无齐偶校验。
解: | ||||
.MODEL SMALL .DATA MSG DB "Hello, World" MLen EQU $-MSG .CODE | ||||
.STARTUP | ||||
MOV | AL, 0E3H | ;0E3—9600、无齐偶校验、字长8位,1位停止位 | ||
MOV | DX, 0 | |||
MOV | AH, 0 | |||
INT | 14H | ;初始化通信口COM1 | ||
MOV | BX, OFFSET MSG | |||
MOV | CX, MLen | |||
MOV | DX, 0 | |||
again: | ||||
MOV | AL, [BX] | |||
MOV | AH, 1 | |||
INT | 14H | |||
TEST | AH, 80H | ;如果发送字符失败,继续发同一个字符,这里可能 | ||
JNZ | again | ;构成死循环。在实际工作过程中,还有其它考虑。 | ||
INC | BX | |||
LOOP | again | |||
.EXIT | 0 | |||
END |
例8.10 把从COM1端口读入的字符显示在屏幕上。如果通信端口数据未准备好,则程序处于等待状态;若传输出错,则用红色显示字符"?"。
解: | ||||
…… | ||||
again: | ||||
MOV | DX, 0 | |||
MOV | AH, 3 | |||
INT | 14H | |||
TEST | AH, 1H | ;检测状态字节AH的最后一位,看数据是否准备好 | ||
JZ | again | |||
MOV | DX, 0 | |||
MOV | AH, 2 | |||
INT | 14H | ;从COM1端口读字符 | ||
TEST | AH, 80H | ;检测读字符是否成功 | ||
.IF ZERO? | ;读字符成功 | |||
AND AL, 7FH | ;屏蔽掉最高位,使之为字符 | |||
MOV BL, 15 | ;正常颜色:白色 | |||
.ELSE | ||||
MOV AL, '?' | ;显示字符"?" | |||
MOV BL, 12 | ;错误颜色:红字 | |||
.ENDIF | ||||
MOV | BH, 0 | |||
MOV | AH, 0EH | |||
INT | 10H | |||
JMP | again | |||
…… |