1、8.3 PC机的串行接口,8.3.1 串行通信基础 8.3.2 可编程串行异步通信接口8250,8.3.1 串行通信基础,1、串行通信方式 2、串行通信速率 3、串行通信的数据校验 4、串行通信接口标准,1、串行通信方式,串行通信:在同一条通信线上的数据按一位接一位的顺序进行传输。 半双工:在只有一条通信线的双机(如A、B两机)通信系统中,对任何一方而言,发送信息和接收信息不能同时进行,而只能采用分时占用通路的办法。全双工:在有两条通信线的双机(如A、B两机)通信系统中,当A机向B机发送信息,而B机接收信息时,B机也可以同时向A机发送信息,而A机接收信息。,1、串行通信方式,1、串行通信方式,
2、调制解调器(Modem):是一个由音频载波信号到数字信号的解码和编码的调制设备。主要应用于通过电话线实现通信。,1、串行通信方式,1、串行通信方式,1、串行通信方式,1、串行通信方式,DTE(Data Terminal Equipment):数据终端设备。典型的DTE设备有:电脑、打印机、终端等。DCE(Data Communication Equipment) :数据通讯设备。典型的DCE设备有:调制解调器。,1、串行通信方式,串行通信有两类:同步通信、异步通信。PC系统中的串行通信采用异步通信。 异步通信:一帧(即一个数据传送单元-字符)信息以起始位和停止位来完成收发同步。也就是说,通信中
3、两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔则是固定的。 异步通信协议(或规程):一个字符由起始位、字符编码、奇偶校验位和停止位几部分组成。,1、串行通信方式,1、串行通信方式,1、串行通信方式,当异步传输开始时,接收设备会不断检测传输线,当检测到由1变为0的负跳变时,便启动内部计数器开始计数。当计数到一个数据位宽度的一半时,又一次采样传输线,若其仍为低电平,则确认为一个起始位。然后,以位时间(1/波特率)为间隔,移位接收所规定的数据位和奇偶校验位,组装成一个字节信息。,1、串行通信方式,若未接收到规定位长的停止位“1”,则设置“帧错误”标志。若校验有错,则设置“校验错”标志
4、。,1、串行通信方式,字符和字符之间是异步的:在异步通信的数据流中,每个字符出现在数据流中的时间是不确定的。字符内部的各位数据位基本是同步传送的:接受到字符的起始位后,该字符的各位数据位的时间是确定的。 异步通信一帧信息只传送58个数据位, 接收设备在收到起始位信号之后,只要在58个数据位的传输时间内能和发送设备保持同步就能正确接收。 ,1、串行通信方式,不会因累积效应而导致传输错位:在异步通信中,发送方和接收方的时钟信号可能会出现一些偏差(即漂移),但由于接收端对异步通信每一帧信息的起始位都会重新校准时钟,所以不会因累积效应而导致传输错位。由于异步通信对时钟信号漂移的要求较低,硬件成本也相应
5、降低,且通信方式简单可靠,容易实现,所以,它在微机系统中有着广泛的应用。,1、串行通信方式,1、串行通信方式 结束,2、串行通信速率,波特率:二进制数据序列串行传送的速率,单位是波特。1 波特 = 1 位/秒(bit/s)位时间:波特率的倒数,即传送一位数据所需的时间。单位是 “s/bit”。,2、串行通信速率,2、串行通信速率 结束,3、串行通信的数据校验,常用的校验方法:奇偶校验、循环冗余码校验等。在异步通信中,通常采用奇偶校验法。几乎所有的UART(通用异步接收器/发送器)电路中都集成有奇偶校验电路,可通过编程来选择奇校验或偶校验,然后由部件内部的硬件自动完成奇偶校验位的产生和校验。,3
6、、串行通信的数据校验 结束,4、串行通信接口标准,RS-232C标准:串行通信中,DTE和DCE之间的接口标准。PC机上的COM1、COM2接口,就是RS-232C接口,使用9针和25针连接器。其它标准:RS-423、RS-422A、RS-485等。它们都是在RS-232C基础上经过改进而形成的。,4、串行通信接口标准,4、串行通信接口标准,RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线。常用的只有9根:(1)联络控制信号线:数据装置准备好DSR#(Data set ready):有效时表明MODEM处于可以使用的状态。数据终端准备好DTR#(Da
7、ta Terminal Ready):有效时表明数据终端可以使用。这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了。,4、串行通信接口标准,请求发送RTS# (Request to send):用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效向MODEM请求发送。它用来控制MODEM是否要进入发送状态。允许发送CTS#(Clear to send):用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS#的响应信号。当MODEM已准备好接收终端传来的数据,并向外发送时,使该信号有效,通知终端
8、开始沿发送数据线TxD发送数据。,4、串行通信接口标准,接收线信号检出RLSD# /数据载波检出DCD# :(Received Line detection/Receive Line Singal Detect )(Data Carrier dectection)用来表示DCE已接通通信链路,告知DTE准备接收数据。振铃指示RI# (Ringing):当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效,通知终端已被呼叫。,4、串行通信接口标准,(2)数据发送与接收线:发送数据TxD (Transmitted data):通过TxD终端将串行数据发送到MODEM,(DTEDCE)。接收数据
9、RxD (Received data):通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE)。(3)地线:信号地 SG。,4、串行通信接口标准,RS-232-C采用负逻辑,且信号电平与TTL不兼容。在数据线TXD和RXD上: 逻辑1=3V15V 逻辑0=3V15V 在控制线和状态线RTS#、CTS#、DSR#、DTR#和DCD#上: 信号有效3V15V 信号无效3V15V串行接口芯片8250、8251均使用TTL电平,应使用电平转换电路与RS-232C连接器连接。MC1488:TTL电平RS232电平 (用于发送方)MC1489:TTL电平RS232电平 (用于接收方),4、串行通
10、信接口标准,4、串行通信接口标准,采用Modem(DCE)和电话网通信时的信号连接,4、串行通信接口标准,无Modem的标准连接,4、串行通信接口标准,无Modem 的最简连接,4、串行通信接口标准,无Modem时,最大通讯距离的计算:RS-232C标准规定:当误码率小于4%时,要求导线的电容值应小于2500PF。普通导线的电容值约为170PF/M。则允许距离 L=2500PF/(170PF/M)= 15M,8.3.1 串行通信基础 4、串行通信接口标准 结束,8.3.2 可编程串行异步通信接口8250,8250是一种可编程串行异步通信接口芯片。1、8250芯片引脚定义与功能 2、8250芯片
11、的内部结构和寻址方式 3、8250内部控制状态寄存器的功能 4、8250通信编程 5、8250应用举例,1、8250芯片引脚定义与功能,8250是一个40脚封装的双列直插式芯片。其引脚可分为两类:与CPU系统总线相连的信号线;与通信设备相连的信号线。,1、8250芯片引脚定义与功能,与CPU系统总线相连的信号线 1)双向数据线:D7D0:8位数据线。,1、8250芯片引脚定义与功能,与CPU系统总线相连的信号线 2)地址控制信号:CS0、CS1、CS2#:片选信号、输入。必须同时有效。A2、A1、A0:地址信号、输入。选择内部寄存器。ADS#:地址选通信号、输入。ADS# = 0 时锁存片选信
12、号和地址信号。如果不锁存,可将ADS#直接接地。CSOUT:片选输出,高电平有效。8250芯片被选中时,输出高电平。此信号通常不用而悬空。,1、8250芯片引脚定义与功能,与CPU系统总线相连的信号线 3)读/写控制信号DISTR与DISTR#:数据输入选通信号、输入。若DISTR=1或DISTR#=0,CPU就会从被选择的内部寄存器中读出数据;若选择DISTR#接CPU的IORC#,则应将DISTR接地使其变为无效。DOSTR与DOSTR#:数据输出选通信号、输入。若DOSTR=1或DOSTR#=0,CPU就会将数据写入从被选择的内部寄存器中。若选择DOSTR#接CPU的IOWC#,则应将D
13、OSTR接地使其变为无效。DDIS:驱动器禁止、输出。该输出信号在CPU读8250时为低电平,非读时为高电平,可用此信号来控制8250与系统总线间的数据总线驱动器。,1、8250芯片引脚定义与功能,与CPU系统总线相连的信号线 4)中断控制和复位控制信号:INTRPT:中断请求、输出。高电平申请中断。MR:复位信号、输入。高电平有效。一般接系统复位线RESET。,1、8250芯片引脚定义与功能,与CPU系统总线相连的信号线 5)时钟与传输速率控制信号: XTAL1与XTAL2:时钟信号输入和输出引脚。外接晶振或时钟信号。时钟频率为1.8432MHz。BAUDOUT#:波特率输出引脚。频率为发送
14、数据波特率的16倍。RCLK:接收时钟输入引脚。接收外部提供的16倍波特率的时钟信号。由于通常采用8250内部的发送时钟作为接收时钟,故可直接连到BAUDOUT#引脚,以保证接收与发送的波特率相同。,1、8250芯片引脚定义与功能,与外部通信设备相连的信号线RTS#:请求发送输出引脚。当RTS#为低电平时, 表示8250(DTE)通知数据通信装置(DCE),准备发送数据。CTS#:允许发送输入引脚。当CTS#为低电平时,表示数据通信装置(DCE)通知8250(DTE),已做好接收数据的准备。DTR#:数据终端就绪输出引脚。当DTR#为低电平时, 表示8250(DTE)通知数据通信装置(DCE)
15、,已经做好通信准备。 DSR#:数据通信装置就绪输出引脚。当DSR#为低电平时,表示数据通信装置(DCE)通知8250(DTE),已做好建立通信链路的准备。,1、8250芯片引脚定义与功能,与外部通信设备相连的信号线RLSD#:载波检测输入引脚。当RLSD#为低电平时,表示数据通信装置(DCE)通知8250(DTE),已检测到通信线路上的载波信号,开始接收数据。 RI#:振铃指示输入引脚。当RI#为低电平时,表示 表示数据通信装置(DCE)通知8250(DTE),已接收到振铃信号。OUT1#:用户指定的输出引脚。可以通过对8250的编程使OUT1为低电平或高电平。OUT2#:用户指定的另一输出
16、引脚。也可以通过对8250的编程使OUT2为低电平或高电平。,1、8250芯片引脚定义与功能 结束,2、8250芯片的内部结构和寻址方式,8250芯片的内部结构:10个内部寄存器、数据缓冲器、寄存器选择与I/O控制逻辑。通过微处理器的输入/输出指令可以对10个内部寄存器进行操作,以实现各种异步通信的要求。,2、8250芯片的内部结构和寻址方式,2、8250芯片的内部结构和寻址方式,2、8250芯片的内部结构和寻址方式,线路控制寄存器,3FF未用,2、8250芯片的内部结构和寻址方式 结束,3、8250内部控制状态寄存器的功能,(1)发送保持寄存器THR(3F8H) (2)接收数据缓冲寄存器RB
17、R(3F8H) (3)线路控制寄存器LCR(3FBH) (4)波特率因子寄存器或除数寄存器DLR(3F8H,3F9H) (5)中断允许寄存器IER(3F9H) (6)中断标识寄存器IIR(3FAH) (7)线路状态寄存器LSR(3FDH) (8)Modem控制寄存器MCR(3FCH) (9)Modem状态寄存器MSR(3FEH),3、8250内部控制状态寄存器的功能,(1)发送保持寄存器THR(3F8H) 当发送数据时,CPU先将待发送的字符写入已空的THR中,其中第0位是串行发送的第1位数据。只要发送移位寄存器TSR为空,则THR中的数据会由8250的硬件自动送入TSR,并在发送时钟的作用下
18、转换成串行信号,且按照预置的帧格式添加起始位、校验位和停止位,从SOUT引脚输出。,3、8250内部控制状态寄存器的功能,(2)接收数据缓冲寄存器RBR(3F8H) 当外来的串行数据(一个完整的字符)在接收时钟作用下,由SIN引脚输入到接收移位寄存器时,会自动去掉起始位、校验位和停止位,并转换成并行数据,输入到RBR中,等待CPU读取该字符。,3、8250内部控制状态寄存器的功能,(3)线路控制寄存器LCR(3FBH) 规定了异步串行通信的数据格式,包括数据位数(字长)、停止位的位数与奇偶校验位的设置等。由于8250仅用了3根地址线来寻址内部的8个寄存器,故不得不使波特率因子寄存器或除数寄存器
19、DLR和其他寄存器公用地址,由D7位来加以区分。,3、8250内部控制状态寄存器的功能,D5D4D3为101时:在奇偶校验位和停止位之间插入一个奇偶标志位1。 D5D4D3为111时:在奇偶校验位和停止位之间插入一个奇偶标志位0。,强迫8250连续输出低电平。,3、8250内部控制状态寄存器的功能,D5D4D3为101时:在奇偶校验位和停止位之间插入一个奇偶标志位1。 D5D4D3为111时:在奇偶校验位和停止位之间插入一个奇偶标志位0。,强迫8250连续输出低电平。,3、8250内部控制状态寄存器的功能,(4)波特率因子寄存器或除数寄存器DLR(3F8H,3F9H)8250芯片规定当LCR
20、的位D7写入1时,接着可对口地址3F8H、3F9H分别写入波特率因子的低字节和高字节,即将16位除数写入DLR(L)和DLR(H)中。波特率 = 1.8432MHz/(波特率因子16)。波特率因子 = 1.8432MHz/(波特率16),3、8250内部控制状态寄存器的功能,例如,要求发送波特率为1200波特,则波特率因子为:波特率因子 =1.8432MHz/(120016) =96因此,3F8H口地址应写入96(60H),3F9H口地址应写入0。,3、8250内部控制状态寄存器的功能,3、8250内部控制状态寄存器的功能,(5)中断允许寄存器IER(3F9H) IER用来设置允许或禁止825
21、0 的4个中断源发出中断请求(将相应位置1或0即可)。D7D4位:恒为0。D3D0位:表示是否允许4类中断。当允许中断时,则通过IR4向8086/8088CPU发中断请求。,3、8250内部控制状态寄存器的功能,3、8250内部控制状态寄存器的功能,(6)中断标识寄存器IIR(3FAH) IIR可以用来判断有无中断产生以及产生了哪一类中断请求。D7D3位:恒为0。D0位:表示有无中断待处理,若D0=1,表示无中断待处理;若D0=0,表示有待处理的中断。D2D1:位用于标识4类中断,其中,D2D1=11的线路出错中断的优先级最高,而D2D1=00的Modem中断的优先级最低。,3、8250内部控
22、制状态寄存器的功能,3、8250内部控制状态寄存器的功能,(7)线路状态寄存器LSR(3FDH) LSR是一个8位寄存器,它向CPU提供有关发送与接收数据的状态信息 。,3、8250内部控制状态寄存器的功能,3、8250内部控制状态寄存器的功能,D0:接收数据就绪位。当D0 =1时,表示8250的接收器已接收到一帧完整的字符。D1:数据重叠错(又称为越限状态错或溢出错)标志。当D1 =1时,表示接收器的输入字符尚未读走,而新的字符已经到来并将前一帧数据覆盖。D2:数据奇偶错标志位。当D2 =1时,表示接收的数据经校验出现奇偶性错误。D3:帧错(即接收数据格式错)标志。当接收数据的停止位个数不正
23、确时,则D3 =1。,3、8250内部控制状态寄存器的功能,D4:接收空缺位。若在一个完整的字符编码的时间间隔中收到的均为空闲状态,则D4 =1,表示线路信号间断。注意:D1D4均为出错标志,只要其中有一位置1,在中断允许的情况下,8250内部就会产生“接收字符错误”中断,一旦CPU读取这些状态后,即自动复0。 D5:数据发送保持器空标志。当D5为1时,表示THR空。一旦CPU将数据写入THR,则此位复0。D6:数据发送移位寄存器空标志。当D6为1时,表示TSR空。一旦THR将数据写入TSR,则此位复0。D7:恒为0。,3、8250内部控制状态寄存器的功能,(8)Modem控制寄存器MCR(3
24、FCH) MCR用于控制调制解调器或数传机,可直接控制RS-232C接口的引脚信号。,3、8250内部控制状态寄存器的功能,(8)Modem控制寄存器MCR(3FCH) MCR用于控制调制解调器或数传机,可直接控制RS-232C接口的引脚信号。,3、8250内部控制状态寄存器的功能,(9)Modem状态寄存器MSR(3FEH)MSR反映了调制解调器控制线的当前状态及其变化信息。各数据等于1为有效。MSR低4位中任一位置1,均将产生调制解调器状态中断,当CPU读取该寄存器或复位后,低4位被清零。,3、8250内部控制状态寄存器的功能,D0,D1,D2,D3,D4,D5,D6,D7,高4位中某位为
25、1,说明相应输入信号当前为低电平,有效。,低4位中某位为1,则说明从上次CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之。,3、8250内部控制状态寄存器的功能 结束,4、8250通信编程,1)、8250初始化 (1)设置波特率 (2)设置串行通信数据格式 (3)设置工作方式 2)、程序查询方式通信编程 3)、用中断方式编程(1)初始化8259A中断控制器(2)设置中断向量IR4 (3)设置允许/屏蔽位 (4)8250重新响应中断请求,4、8250通信编程,1)、8250初始化 (1)设置波特率 例如,设波特率为9600,则波特率因子N=12MOV DX,3FBHMOV AL,80
26、H ;设置波特率OUT DX,ALMOV DX,3F8HMOV AL,12OUT DX,ALINC DX MOV AL,0OUT DX,AL ;3F9H送0,3、8250内部控制状态寄存器的功能,D5D4D3为101时:在奇偶校验位和停止位之间插入一个奇偶标志位1。 D5D4D3为111时:在奇偶校验位和停止位之间插入一个奇偶标志位0。,强迫8250连续输出低电平。,4、8250通信编程,1)、8250初始化 (2)设置串行通信数据格式 例如,数据格式为8位,1位停止位,奇校验。 MOV AL,0BHMOV DX,3FBHOUT DX,AL,4、8250通信编程,1)、8250初始化 (3)设
27、置工作方式 无中断:MOV AL,3 ;OUT1#、OUT2#均为高电平MOV DX,3FCHOUT DX ,AL 有中断: MOV AL,0BH;OUT2#为低电平,允许INTRT去申请中断MOV DX,3FCHOUT DX,AL 循环测试: MOV AL,13HMOV DX,3FCHOUT DX,AL,3、8250内部控制状态寄存器的功能,(8)Modem控制寄存器MCR(3FCH) MCR用于控制调制解调器或数传机,可直接控制RS-232C接口的引脚信号。,2、8250芯片的内部结构和寻址方式,4、8250通信编程,2)、程序查询方式通信编程 采用程序查询方式工作时,CPU可以通过读线路
28、状态寄存器(3FDH)查相应状态位(D0与D5位),来检查接收数据寄存器是否就绪(D0=1)与发送保持器是否空(D5=1)。,4、8250通信编程,2)、程序查询方式通信编程 发送程序: TR: MOV DX,3FDH IN AL,DXTEST AL,20H JZ TR MOV AL,SI ;从SI中取出发送数据 MOV DX,3F8H OUT DX,AL,4、8250通信编程,2)、程序查询方式通信编程 接收程序: RE: MOV DX,3FDH IN AL,DX TEST AL,1 JZ RE MOV DX,3F8H IN AL,DX MOV DI,AL ;读入数据存入DI中,4、8250
29、通信编程,3)、用中断方式编程(1)初始化8259A中断控制器MOV AL,13H ;单片使用,需要ICW4MOV DX,20H OUT DX,AL ;ICW1 MOV AL,8 ;中断类型号为08H0FH INC DX OUT DX,AL ;ICW2 INC AL ;缓冲方式,8088/8086 OUT DX,AL ;ICW4MOV AL,8CH ;允许0,1,4,5,6级中断 OUT DX,AL ;送中断屏蔽字OCW1,4、8250通信编程,3)、用中断方式编程 (2)设置中断向量IR4 对IR4 ,中断类型号为0CH,0CH4=30H。因此,应在30H、31H存放IP值,32H、33H存
30、放CS值。设中断服务程序入口地址为2000H:100HXOR AX,AX MOV DS,AX MOV AX,100H MOV WORD PTR0030H,AX MOV AX,2000HMOV WORD PTR0032H,AX,4、8250通信编程,3)、用中断方式编程(3)设置允许/屏蔽位对8250送中断允许寄存器(3F9H)设置允许/屏蔽位。例如,允许发送与接收中断请求。 MOV AL,3 MOV DX,3F9H OUT DX,AL,4、8250通信编程,3)、用中断方式编程(4)8250重新响应中断请求在中断结束返回时,需要对8259A发EOI命令,保证8259可以重新响应中断请求。MOV
31、 AL,20H MOV DX,20HOUT DX,AL ;发EOI命令,OCW2IRET ;开中断允许,并从中断返回,8.3 PC机的串行接口 8.3.2 可编程串行异步通信接口8250 4、8250通信编程 结束,课堂练习,1、利用8250、74LS245、1.8432MHz晶体、门电路、电阻、电容等,画出基于PC/XT总线的串行接口卡电路原理图(不考虑电平转换)。,课堂练习,2、P266 6.7 3、(选做)程序设计要求:在IBM PC机上用汇编语言按查询方式编制一个发送与接收程序,它能把键入的每一个ASCII字符发送出去,并显示在CRT上,同时能把接收到的每一个字符也以ASCII码形式显
32、示在CRT屏幕上设:数据传送速率为9600波特:通信格式为8位/每字符,1位停止位,奇校验。,课堂练习1,在IBM PC机上用汇编语言按查询方式编制一个发送与接收程序,它能把键入的每一个ASCII字符发送出去,并显示在CRT上,同时能把接收到的每一个字符也以ASCII码形式显示在CRT屏幕上设:数据传送速率为9600波特:通信格式为8位/每字符,1位停止位,奇校验。,课堂练习1,在IBM PC机上用汇编语言按查询方式编制一个发送与接收程序,它能把键入的每一个ASCII字符发送出去,并显示在CRT上,同时能把接收到的每一个字符也以ASCII码形式显示在CRT屏幕上设:数据传送速率为9600波特:
33、通信格式为8位/每字符,1位停止位,奇校验。,课堂练习2,6.7 MOV AL,80HMOV DX,3FBHOUT DX,ALMOV AL,10H ;波特率7200的除数值=10HMOV DX,3F8HOUT DX,ALINC DXMOV AL,0OUT DX,ALMOV AL, 00000011BMOV DX,3FBHOUT DX,AL,课堂练习2,SEND: MOV DI,OFFSET TRANSMOV CX,WORD PTR TLENGTH+4MOV SI,OFFSET TRANS-2MOV BYTE PTRDI-2,55HMOV BYTE PTRDI-1,0AAHMOV AX,DIAD
34、D AX,WORDPTR TLENGTHMOV DI,AXMOV BYTE PTRDI+1,0AAHMOV BYTE PTRDI+2,55H,课堂练习2,SWAIT: MOV DX,3FBHIN AL,DX ;取线路状态TEST AL,00100000B ;THRE发送保持寄存器空=1JZ SWAIT ;不空等待MOV AL,SI ;取数据MOV DX,3F8HOUT DX,AL ;发送INC SILOOP SWAITMOV DI,OFFSET RECIVMOV CX,WORD PTR RLENGTHMOV BL,0 ;计接收数据个数,课堂练习2,RECEIVE:MOV DX,3FBHIN A
35、L,DX ;取线路状态参数,判断接收有数据否TEST AL,80H ;超时退出JNZ EXITPTEST AL,01H ;接收数据继续JZ RECEIVE ;串口无数据等待MOV DX,3F8HIN AL,DXINC BL ;接收一个数据,计数器加1LOOP RWAIT,课堂练习2,EXITP: MOV AL,CLCMP AL,BLJNZ ERR_DEL MOV ERROR,0FFHJMP RET1 ERR_DEL:MOV ERROR,0 RET1: NOP.EXIT,课堂练习3,KEY: MOV DX,3FBH MOV AL,80HOUT DX,ALMOV DX,3F8HMOV AL,12O
36、UT DX,AL ;写入对应波特率为9600的波特因;子的低8位INC DXMOV AL,0OUT DX,AL ;写入波特因子的高8位MOV AL,0BHMOV DX,3FBHOUT DX,AL ;8位字符,1位停止位,奇校验,课堂练习3,MOV AL,13HMOV DX,3FCHOUT DX,AL ;循环测试 CHECK:MOV DX,3FDHIN AL,DX ;读线路状态寄存器TEST AL,1H ;查接收缓冲器是否满,若满转接;收子程序JNZ REVTEST AL,20H ;查发送缓冲器是否空,不空;转CHECKJZ CHECK TR: MOV AH,1 ;读键盘缓冲器内容,若有键按;下,则ZF标志为0,且AL=字符码INT 16HJZ CHECK ;如ZF=1,转CHECKMOV DX,3F8H OUT DX,AL ;将键入代码发送出去,课堂练习3,JMP CHECK REV: MOV DX,3F8HIN AL,DX ;读入接收字符AND AL,7FH ;屏蔽掉D7MOV BX,0041H ;BH=00H,选0页;BL=41H,显示属;性(红底兰字) MOV AH,14 ;用中断调用显示接收到的字符INT 10H JMP CHECK,作业,P266 6.6,