微机接口技术实验三测试微机系统串行口
来源:互联网 发布:中国网络空间安全协会 编辑:程序博客网 时间:2024/05/09 06:37
实验名称: 测试微机系统串行口(实验教程P109 实验6.10,可参考课本341页例9.3)
实验环境:PC系列机,汇编语言开发工具TASM5.0或 未来汇编
实验目的:
学习汇编语言程序设计的方法;掌握8250异步串行接口芯片的工作原理;掌握串行通信程序的设计。
实验内容:
1. 完成硬件测试环境;
2. 编写程序对微机系统的串口进行自发自收外环测试;发送采用查询方式,接收采用中断方式;
3. 数据发送从键盘键入,接受数据屏幕显示。
实验步骤:
1. 根据实验内容将系统机主机箱后的一个RS-232C口的发送和接收端子短接;
2. 利用汇编工具编写并生成串行通信程序的可执行程序;
3. 运行程序键盘输入需发送的字符,并观察显示内容;
4. 根据程序运行情况改进源程序直至无逻辑错误、符合实验要求。
实验结果需在实验室特定的自发自收的串口机器上运行才能正常显示,正常显示的结果应为输入字符正确显示在屏幕上,因调用的BIOS0号子功能输入所以输入字符不回显,经过自发自收后调用功能显示接收到的字符,所以显示字符并不是输入回显的字符,而是经过接收后显示的字符。程序按ESC键正常退出。
给出代码和一定注释:
.586 //by zwyDATA SEGMENT USE16OLD0B DD ?FLAG DB 0DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE ,DS:DATA BEG: MOV AX,DATA MOV DS,AX CLI ;关中断 CALL I8250 ;辅串口初始化 CALL I8259 ;开发8259辅串口中断 CALL RD0B ;读中断向量 CALL WR0B ;写中断向量 STI ;开中断 SCANT: CMP FLAG ,-1 ;测试是否收到结束字符 JE RETURN ;接收到ESC则结束程序 MOV DX,2FDH ;读取通信线状态寄存器 IN AL,DX ;读取通信状态字 TEST AL,20H ;查询D5位 发送保持寄存器空闲标志位 为1则空闲 JZ SCANT ;结果为0 说明发送器D5位为0 不空 则跳转继续查询 MOV AH,1 ;查询键盘缓冲区 INT 16H JZ SCANT MOV AH,0 ;BIOS 0号子功能调用 不回显输入 INT 16H AND AL,7FH ;屏蔽最高位 标准ASCII码为7位 MOV DX,2F8H ;送辅串口数据寄存器 OUT DX,AL CMP AL,1BH ;判断是否是ESC 结束字符 JNE SCANT TWAIT: MOV DX,2FDH ;读取通信线状态寄存器 IN AL,DX ;读取通信状态字 TEST AL,40H ;D6位为发送移位寄存器空闲标志位 为1则空闲 测试一帧数据是否发送完成 JZ TWAIT RETURN:CALL RESET MOV AH,4CH INT 21HRECEIVE PROC ;中断方式进行接收PUSH AX ;保护现场PUSH DXPUSH DSMOV AX,DATAMOV DS,AXMOV DX,2F8H ;接收缓冲寄存器IN AL,DX ;读取接收缓冲区的内容AND AL,7FH ;屏蔽最高位CMP AL,1BH ;判断是否为结束字符JE NEXT ;相等则跳转nextMOV AH,2 ;调用dos2号子功能MOV DL,AL INT 21H ;显示接收到的字符串JMP EXITNEXT: MOV FLAG ,-1 ;将flag置为-1EXIT: MOV AL,20H OUT 20H,AL POP DS POP DX POP AX IRET RECEIVE ENDP ;辅串口初始化 I8250 PROC MOV DX,2FBH MOV AL,80H OUT DX,AL ;寻址地址为1 MOV DX,2F9H MOV AL,0 OUT DX,AL ;写除数寄存器高8位 MOV DX,2F8H MOV AL,60H OUT DX,AL ;写除数寄存器低8位 MOV DX,2FBH MOV AL,03H OUT DX,AL ;写数据帧格式 MOV DX,2F9H MOV AL,01H OUT DX,AL ;允许8250内部提出接收中断 MOV DX,2FCH MOV AL,08H OUT DX,AL ;8250正常收发并允许送出中断请求 RET I8250 ENDP ;开放辅8259串口中断 I8259 PROC IN AL,21H AND AL,11110111B ;将D3位置0 辅串口为D3位 OUT 21H,AL ;写中断命令字 RET I8259ENDP ;读中断向量 RD0B PROC MOV AX,350BH INT 21H MOV WORD PTR OLD0B ,BX ;辅串口为0B MOV WORD PTR OLD0B+2 ,ES RET RD0B ENDP ;写中断向量 WR0B PROC PUSH DS MOV AX,CODE MOV DS,AX MOV DX,OFFSET RECEIVE MOV AX,250BH INT 21H POP DS RET WR0B ENDP ;恢复原中断向量 RESET PROC IN AL,21H OR AL,00001000B OUT 21H,AL MOV AX,250BH MOV DX, WORD PTR OLD0B MOV DS, WORD PTR OLD0B+2 INT 21H RET RESET ENDP CODE ENDS END BEG特记下,以备后日回顾。
0 0
- 微机接口技术实验三测试微机系统串行口
- 南邮微机实验 串行口的测试
- 南邮微机实验 串行口的测试(查询发送,中断接收)
- 微机原理与接口技术
- 微机原理与接口技术
- 微机原理与接口技术
- 微机原理及接口技术
- 《微机原理及接口技术》第05章在线测试
- 《微机原理及接口技术》第07章在线测试
- 《微机原理及接口技术》第08章在线测试
- 《微机原理及接口技术》第03章在线测试
- 《微机原理及接口技术》第04章在线测试
- 微机接口实验二:存储器扩展实验
- 微机接口实验 C# 串行通信
- 微机
- 【微机实验系列】汇编语言和DOS系统
- 【微机实验系列】标准输入输出系统
- 微机原理及接口技术-6
- pywin32下载链接及安装报错问题解决链接
- SSH框架之Hibernate的一对一映射
- 约瑟夫环
- sublime常用快捷键
- 菜单实现对话框
- 微机接口技术实验三测试微机系统串行口
- C# 多线程、异步编程与并发服务器
- 代码敲累了就来写《创业计划书》吧
- LeetCode 3.Longest Substring Without Repeating Characters
- [读书笔记]程序员的自我修养 chp13 一个简单的CRT 运行库实现
- 在windows下配置R-CNN detection selective_search_ijcv_with_python目标检测
- 基于bootstrap的文件上传控件-bootstrap-fileinput
- Zookeeper(一)分布式事务
- SPOJ130 【DP·背包选取特性】