| 【问题1】 输入设备在向接口传送8位数据的同时,还传送负脉冲STB,该信号的作用是什么? |
低电平有效,是由外设提供的输入信号。当该信号有效时,将输入设备送来的数据锁存至输入锁存器中临时存储起来,并设置数据已经准备好的状态,标志该状态的是上图中的D触发器。
D触发器的初始状态为0(数据未准备好),当输入设备的数据准备好时,通过CP将D触发器设置为1,标明数据已准备好,CPU可随时读取。
要从输入设备读取数据(
有效),首先应确定输入设备的端口地址,包括状态端口和数据端口。从题图中可知,要读取输入设备的状态端口(即数据是否准备好),需进行下面的运算:
A15+A14+A13+…+A2+A1+
+
即地址信号A15、A14、…、A2、A1与IOR进行或运算(经过或门)后的输出,与A0经非门后的输出再进行或运算,若为0,则可将D触发器中的状态输出至数据线D7,因此,要求A15、A14、…、A2、A1全部为0且A0为1,即状态端口地址为0001H。同理,要读取输入设备的数据,需进行下面的运算:
A15+A14+A13+…+A2+A1+
+A0
即当A15、A14、…、A2、A1全部为0并且A0也为0,才能通过三态门将数据送往数据总线,因此数据端口地址为0000H。
若用查询方式将输入设备的一个数据读入CPU的BL寄存器中,则根据其工作方式,需要对I/O接口的状态不断进行测试,一旦满足条件(准备好传送数据即外设就绪),紧接着就执行数据传送指令,程序如下:
START: MOV DX,0001H ;外设的状态端口号送入DX寄存器
NEXT1: IN AL,DX ;从外设端口读取状态并暂存入AL
NEXT2: AND AL,80H ;判断数据是否就绪(D7是否为1)
JZ NEXT1 ;未就绪(D7为0),则继续查询,否则开始读取数据
MOV DX, 0000H ;外设数据端口号送入DX寄存器
IN AL,DX ;从外设端口读取数据到的数据暂存入AL
NEXT3: MOV BL,AL ;将数据送入BL寄存器
RET
| 【问题2】 D触发器的作用是什么?
【正确答案】
【答案解析】D触发器用来提供外设数据准备好的状态。
问答题
【正确答案】
【答案解析】(1)0001H (2)80H (3)NEXT1,或START
(4)0000H (5)BL
|