实 验 报 告
( 2018/ 2019 学年 第二学期)
课程名称
实验名称
微型计算机原理与接口技术
外环自检
实验时间
2019
年 5 月 23 日
指导单位 计算机学院、软件学院、网络空间安全学院
指导教师
陈燕俐
学生姓名
学院(系)
班级学号
专
业
实 验 报 告
实验名称
外环自检
指导教师
实验类型
验证
实验学时
2
实验时间
2019.05.23
一、实验目的和要求
1、学习 8250 的工作原理、工作方式、初始化编程及中断程序的编程方
法。
2、题目: 编写程序对微机系统串口进行外环的自发自收测试,要求发
送采取查询方式,接收采取中断方式。用键盘输入要发送的数据并显示在屏
幕上,同时将收到的数据也显示在屏幕上。
二、实验环境
PC 系列机
三、实验内容
代码如下:
.586
DATA SEGMENT USE16
OLD0B DD ?
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
1
BEG:MOV AX,DATA
MOV DS,AX
CLI
CALL I8250
CALL I8259A
CALL RD0B
CALL WR0B
STI
SCA:
MOV AH,1
INT 16H
JZ SCA;无输入
;------------------发送------------------------
MOV DX,2FDH;发送保持器空
IN AL,DX
TEST AL,20H
JZ SCA
MOV AH,0
INT 16H
MOV DL,AL
MOV AH,02H
2
INT 21H
AND AL,7FH
MOV DX,2F8H
OUT DX,AL;送至发送保持寄存器
JMP SCA
TWA:MOV DX,2FDH
IN AL,DX
TEST AL,40H;测试一帧数据是否发送完
JZ TWA
RETURN:CALL RESET
MOV AH,4CH
INT 21H
;-------------------SERVICE-------------------------
SERVICE PROC
PUSHA
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV DX,2F8H
IN AL,DX
AND AL,7FH
MOV AH,2
3
MOV DL,AL
INT 21H
EXIT:MOV AL,20H
OUT 20H,AL
POP DS
POPA
IRET
SERVICE ENDP
;-----------------I8250-----------------------
I8250 PROC
MOV DX,2FBH
MOV AL,80H
OUT DX,AL
MOV DX,2F9H
MOV AL,0
OUT DX,AL
MOV DX,2F8H
MOV AL,60H;设置分频系数1200
OUT DX,AL
MOV DX,2FBH
MOV AL,03H;设置通信线寄存器,随便设的可以改
4
OUT DX,AL
MOV DX,2F9H
MOV AL,01H;允许8250内部提出接收中断
OUT DX,AL
MOV DX,2FCH
MOV AL,0BH;允许中断让D3为1
OUT DX,AL
RET
I8250 ENDP
;-------------I8259-------------------------
I8259A PROC
IN AL,21H
AND AL,11110111B
OUT 21H,AL
RET
I8259A ENDP
;-------------------RD0A---------------------
RD0B PROC
MOV AX,350BH
INT 21H
MOV WORD PTR OLD0B,BX
MOV WORD PTR OLD0B+2,ES
5
RET
RD0B ENDP
;-----------------WR0A------------------------
WR0B PROC
PUSH DS
MOV AX,CODE
MOV DS,AX
MOV DX,OFFSET SERVICE
MOV AX,250BH
INT 21H
POP DS
RET
WR0B ENDP
;-----------------RESET------------------------
RESET PROC
IN AL,21H
OR AL,00001000B;写中断屏蔽
OUT 21H,AL
MOV DX,WORD PTR OLD0B
MOV DS,WORD PTR OLD0B+2
MOV AX,250BH
INT 21H
6
RET
RESET ENDP
;-----------------------------------------
CODE ENDS
END BEG
程序运行结果如下:
当从键盘输入一个字符时频幕上会显示两个该字符,第一遍是直接调用软中
断显示在频幕上的,另一个从端口读入的通过软中断显示再频幕上的。
7