主题:考试有这么一道题目,答案看不太懂,帮我解释下好吗?
2. 下图是一个查询式输出的接口电路(10’)
(1),它有几个端口?写出它们的用途和各自的地址。
(2),D触发器何时置1,何时清0?
(3),在标注(1),(2),(3)的3根信号线上标注恰当的信号名称。
(4),若要将内存BUFFER地址开始的20个字节数据输出,用8086汇编指令写出输出数据的指令序列。
图见附件
答案如下:
(1) 有二个端口。
数据端口用于接收来自CPU的数据,送往外设数据线,它的端口地址为 29H;
状态端口用于记录外设的状态,送往数据总线,它的端口地址为 28H;
(2) CPU把一个数据送入锁存器,同时把D触发器置1;
外设输出完成,发出ACK信号,把D触发器清0 。
(3) 标注正确的信号名称:清零状态,D端为1信号,状态位。
(4)
LEA SI , BUFFER
MOV CX , 19
MOV AL , [SI]
OUT 29H ,AL
W: IN AL , 28H
TEST AL , 80H
JNZ W
INC SI
MOV AL , [SI]
OUT 29H ,AL
LOOP W
汇编那段看不太懂,大大们帮忙注释下好吗?
就是明明20个数据要传,CX为什么只给19,循环19次啊
而且为什么第一次OUT不用判断D7位啊
(1),它有几个端口?写出它们的用途和各自的地址。
(2),D触发器何时置1,何时清0?
(3),在标注(1),(2),(3)的3根信号线上标注恰当的信号名称。
(4),若要将内存BUFFER地址开始的20个字节数据输出,用8086汇编指令写出输出数据的指令序列。
图见附件
答案如下:
(1) 有二个端口。
数据端口用于接收来自CPU的数据,送往外设数据线,它的端口地址为 29H;
状态端口用于记录外设的状态,送往数据总线,它的端口地址为 28H;
(2) CPU把一个数据送入锁存器,同时把D触发器置1;
外设输出完成,发出ACK信号,把D触发器清0 。
(3) 标注正确的信号名称:清零状态,D端为1信号,状态位。
(4)
LEA SI , BUFFER
MOV CX , 19
MOV AL , [SI]
OUT 29H ,AL
W: IN AL , 28H
TEST AL , 80H
JNZ W
INC SI
MOV AL , [SI]
OUT 29H ,AL
LOOP W
汇编那段看不太懂,大大们帮忙注释下好吗?
就是明明20个数据要传,CX为什么只给19,循环19次啊
而且为什么第一次OUT不用判断D7位啊