微机实验--串口通信
程序员文章站
2024-02-02 15:54:28
...
//
题目:
运用微机系统串行口知识,进行微机系统串行口的测试;完成硬件测试环境;编写程序对微机系统的串口进行自发自收的内环测试;数据发送从键盘输入,接受数据在屏幕上显示。
不多BB,直接上代码
.586
DATA SEGMENT USE16
BUF DB 30 DUP(?)
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
CALL I8250 ; 8250初始化
MOV BX, OFFSET BUF
SEND:MOV DX, 3FDH
IN AL, DX
TEST AL, 20H
JZ SEND
MOV DX, 3F8H
MOV AH, 1
INT 21H
CMP AL, '$'
JZ COUT
OUT DX, AL
RECE:MOV DX, 3FDH
IN AL, DX
TEST AL, 01H
JZ RECE ; 判断一帧数据接收完整
MOV DX, 3F8H
IN AL, DX
AND AL, 01111111B
CMP AL, 03H
JZ EXIT
MOV [BX], AL
INC BX
JMP SEND
COUT:MOV AH, 2
MOV DL, 0AH
INT 21H ; 光标下移一行
MOV BYTE PTR [BX+1], '$'
MOV AH, 09H
MOV DX, OFFSET BUF
INT 21H ; 显示字符字符串
EXIT:MOV AH,4CH
INT 21H ; 结束程序
I8250 PROC
MOV DX, 3FBH
MOV AL, 80H
OUT DX, AL
MOV DX, 3F9H
MOV AL, 0
OUT DX, AL
MOV DX, 3F8H
MOV AL, 30H
OUT DX, AL
MOV DX, 3FBH
MOV AL, 0AH
OUT DX, AL
MOV DX, 3F9H
MOV AL, 0
OUT DX, AL
MOV DX, 3FCH
MOV AL, 10H
OUT DX, AL
RET
I8250 ENDP
CODE ENDS
END START
输入样例123$
输出样例123
上一篇: 汇编语言 实验10.1 显示字符串
下一篇: Linux操作系统网络服务器模型分享