利用 PC 机的串口实现两台微机间的串行通信。
对于近距离通信,可不使用 Modem,用最简单的连接方式就可实现两机间的串行通信。
在通信时,采用异步方式,波特率为 9600,数据格式为 8 位数据位,无校验,1 位停止
位,接收和发送数据采用查询方式。一方键入的字符被另一方通过串口接收并显示在屏幕上,
当按下“ESC”键时,结束程序运行。程序清单如下:
STACK_SEG SEGMENT PARA STACK
DB 32 DUP(0)
STACK_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG
ASSUME DS:DATA_SEG
ASSUME SS:STACK_SEG
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV BX,3F8H ; COM1 地址
MOV S3F8,BX ;保存 COM1 地址,实际应用可由此更改串口
ADD BX,5
MOV S3FD,BX
;初始化 8250
INIT: MOV DX,S3F8
ADD DX,3 ;线路控制寄存器端口地址
MOV AL,80H ;设置 DLAB=1
OUT DX,AL
MOV DX,S3F8 ;波特率除数锁存器低 8 位
MOV AL,0CH
OUT DX,AL ;设置波特率为 9600
MOV DX,S3F8
INC DX ;波特率除数锁存器高 8 位
MOV AL,0
OUT DX,AL
MOV DX,S3F8
ADD DX,3 ;线路控制寄存器端口地址
MOV AL,03H ;无校验、1 位停止位、8 位数据位
OUT DX,AL
MOV DX,S3F8
ADD DX,4 ;Modem 控制寄存器