一、实验目的
掌握简单并行接口的工作原理及使用方法。
二、实验设备与环境
TPC-2003A通用微机接口实验箱,windows XP运行环境。
三、实验内容、程序清单及运行结果
1. 实验内容
1)按下面图2简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器(通过CLR引脚决定是否进行锁存,将输入端来自数据总线的数据锁存到Q1-Q8的输出端,输出到发光二极管,点亮对应的灯,上升沿有效,或门,从低电平到高电平,才能产生上升沿),8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2)编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3)按下面图3简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4)用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
2. 编程提示
上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:
MOV AL, 数据
MOV DX,2A8H
OUT DX,AL
通过上述并行接口输入数据需要2条指令:
MOV DX,2ADH
IN AL,DX。
3. 流程图
4. 程序清单
1)参考程序1:
code segment
assume cs:code
start: mov ah,2 ;回车符 CPU执行数据传送指令,传输给ah寄存器,ah寄存器获得立即数
mov dl,0dh CPU继续执行数据传送指令,将立即数0dh传送给dl寄存器
int 21h CPU执行中断指令,根据中断类型码获得类型号21h,CPU执行dos功能调用中断子程序,根据功能号入口参数ah(ah=2),转到功能号为2的等待键盘输入的显示一个字符的子模块,根据入口参数dl所提供的数据为0dh(0dh是回车符号的ASCII码),其结果显示一个回车符(有入口,入口是dl寄存器,没有出口)
mov ah,1 ;等待键盘输入 CPU执行数据传送指令,将立即数1传送给ah寄存器
int 21h CPU继续执行中断子程序,根据中断类型码转到dos功能调用中断服务子程序提供的功能号为1(等待输入的一个子模块)转到等待键盘输入的子模块,当按下一个键时,其键的ASCII码值通过出口参数al寄存器返回(没有入口,只有出口,al寄存器是出口)。
cmp al,27 ;判断是否为ESC键 比较指令,相当于减法指令,不影响结果,只允许标志位CF,若相等,CF=1,若不等,CF=0
je exit ; 若是则退出 条件转移指令,若ZF为1,条件满足,转到标号为exit处
mov dx,2a8h ;若不是,从2A8H输出其ASCII码
out dx,al CPU执行IO的写指令,根据dx寄存器所提供的端口地址为02a8所指定的ASCII码值写到所指定的地方,其结果将al寄存器所提供的值(按键的ASCII码值)写到端口地址02a8所指定的8D触发器(相当于存储器),通过输出端输出到发光二极管,点亮对应的灯。接下来结合时序图和程序原理图分析该指令执行的结果。
jmp start ;转start
exit: mov ah,4ch ;返回DOS 继续执行数据传送指令,将4ch传送给ah寄存器
int 21h CPU执行中断指令,CPU指令dos功能调用的中断服务子程序,根据入口参数ah所提供的功能号为4ch,转到返回dos的子模块,结果返回到操作系统。若按下其他键(不是ESC),条件不满足,CPU顺序执行,将立即数02a8传送给dx寄存器
code ends
end
2)参考程序2:
code segment
assume cs:code
start: mov dx,2a0h ;从2A0H输入一数据
in al,dx
mov dl,al ;将所读数据保存在DL中
mov ah,02 ;显示ASCII码为DL的字符
int 21h
mov dl,0dh ;显示回车符
int 21h
mov dl,0ah ;显示换行符
int 21h
mov ah,1 ;是否有键按下
int 16h
je start ;若无,则转start
exit: mov ah,4ch ;返回DOS
int 21h
code ends
end
5. 运行结果
四、实验结论、实验体会
答辩:1、本次实验是简单并行接口输出实验。2、按照原理图连接好线路,打开实验箱电源,通过集成开发环境将简单并行接口输出实验程序,进行编辑,输入,然后进行编译,生成目标代码,点击运行,从键盘上输入一个字符,其ASCII码的值通过简单并行输出接口输出到发光二极管,点亮对应的灯。结合原理图,时序图,程序代码着手分析其运行的结果。CPU首先从Start开始执行指令…,接下来结合时序图和程序原理图分析该指令执行的结果。CPU执行IO的写指令进入T1时刻,产生16位的有效地址,8088…