当前位置:文档之家› 第六章“输入输出及接口”习题答案

第六章“输入输出及接口”习题答案

第六章输入输出及接口
〔习题6.2〕
I/O端口与存储器地址常有__⎽⎽⎽⎽___⎽和__⎽⎽⎽⎽___⎽两种编排方式,8088/8086处理器支持后者,设计有专门的I/O指令。

其中指令IN是将数据从__⎽⎽⎽⎽___⎽传输到__⎽⎽⎽⎽___⎽,执行该指令时8088/8086处理器引脚产生__⎽⎽⎽⎽___⎽总线周期。

指令“OUT DX, AL”的目的操作数是__⎽⎽⎽⎽___⎽寻址方式,源操作数是__⎽⎽⎽⎽___⎽寻址方式。

〔解答〕
(I/O端口与存储器地址)统一编址
(I/O端口与存储器地址)独立编址
外设
处理器
I/O读
(I/O端口的DX)寄存器间接
寄存器
〔习题6.4〕
基于教程P142图6-7接口电路,编程使发光二极管循环发光。

具体要求是:单独按下开关K0,发光二极管以L0、L1、L2、……L7顺序依次点亮,每个维持200ms,并不断重复,直到有其他按键操作;单独按下开关K1,发光二极管以L7、L6、L5、……L0顺序依次点亮,每个也维持200ms,并不断重复,直到有其他按键操作;其他开关组合均不发光,单独按下开关K7,则退出控制程序。

延时200ms可以直接调用子程序DELAY实现。

〔解答〕
again: mov dx,6000h
mov al,0ffh
out dx,al ;全不亮
again1: in al,dx
cmp al,7fh ;D7~D0=0111111B ?
jz done ;单独按下K7,退出
cmp al,0feh ;D7~D0=11111110B ?
jz next1 ;单独按下K0,转移到next1
cmp al,0fdh ;D7~D0=11111101B ?
jz next2 ;单独按下K1,转移到next2
jmp again ;其它情况不点亮
next1: mov cx,8
mov al,1 ;从K0开始
next11: out dx,al ;某个LED电亮
call delay ;延时200ms
shl al,1 ;rol al,1
loop next11
jmp again1
next2: mov cx,8
mov al,80h ;从K7开始
next21: out dx,al ;某个LED电亮
call delay ;延时200ms
shr al,1 ;ror al,1
loop next21
jmp again1
done: mov al,0ffh
out dx,al ;全不亮
〔习题6.5〕
有一个查询输入接口电路类似图6-9,但其数据端口为8F40H、状态端口为8F42H。

从状态端口最低位可以获知输入设备是否准备好一个字节的数据:D0=1表示准备好,D0=0说明没准备好。

不考虑查询超时,编程从输入设备读取100个字节保存到INBUF缓冲区。

〔解答〕
mov bx,offset inbuf
mov cx,100
again: mov dx,8f42h
status: in al,dx ;查询一次
test al,01h
jz status
mov dx,08f40h
in al,dx ;输入一个字节
mov [bx],al
inc bx
loop again ;循环,输入100个字节
〔习题6.5〕(第二版)
请描述采用查询方式进行CPU与外设间传送数据的过程。

如果有一个输入设备,其数据口地址为FFE0H,状态口地址为FFE2H,当状态标志D0=1时,表明一个字节的输入数据就绪,请编写利用查询方式进行数据传送的程序段。

要求从该设备读取100个字节并写到从2000H:2000H开始的内存中。

注意在程序中添加注释。

〔解答〕
通过读取状态寄存器的标志位来检查外设是否就绪。

若不就绪就继续查询,即程序不断循环;直至就绪。

然后,进行下一步的传送工作。

mov bx,2000h
mov ds,bx
mov cx,100
again: mov dx,0ffe2h
status: in al,dx ;查询一次
test al,01h
jz status
mov dx,0ffe0h
in al,dx ;输入一个字节
mov [bx],al
inc bx
loop again ;循环,输入100个字节
〔习题6.6〕
有一个查询输出接口电路类似图6-10,但其数据端口和状态端口均为8000H,并从状态端口的D6位获知输出设备是否能够接收一个字节的数据:D6=1表示可以接收、D6=0说明不能接收。

不考虑查询超时,编程将存放于缓冲区OUTBUF处的字符串(以0为结束标志)传送给输出设备。

〔解答〕
mov bx,offset outbuf
mov dx,8000h
again: mov ah,[bx]
cmp ah,0
jz done
status: in al,dx ;查询一次
test al,40h
jnz status
mov al,ah
out dx,al ;输出一个字节
inc bx
jmp again ;循环
done: ……
〔习题6.6〕(第二版)
某字符输出设备,其数据口和状态口的地址均为80H。

在读取状态时,当标志位D7=0时,表明该设备闲,可以接收一个字符,请编写利用查询方式进行数据传送的程序段。

要求将存放于符号地址ADDR处的一串字符(以$为结束标志)输出给该设备。

注意在程序中添加注释。

〔解答〕
mov bx,offset addr
again: mov ah,[bx]
cmp ah,’$’
jz done
status: in al,80h ;查询一次
test al,80h
jnz status
mov al,ah
out 80h,al;输出一个字节
inc bx
jmp again ;循环
done: ……
〔习题6.7〕
结合中断传送的工作过程,简述有关概念:中断请求、中断响应、中断关闭、断点保护、
中断源识别、现场保护、现场恢复、中断开放、中断返回、以及中断优先权和中断嵌套。

〔解答〕参看教程P147-150。

中断源识别:处理器明确此次中断的具体来源,以便转向为其服务的程序中。

中断嵌套:当一个中断服务时处理器又响应新的中断请求就形成中断嵌套。

〔习题6.7〕(第二版)
以可屏蔽中断为例,说明一次完整的中断过程主要包括哪些环节?8088响应可屏蔽中断请求,需要先满足哪些前提条件?
〔解答〕
习题6.7解答:参考教材第6.4.2节(第165页)
〔习题6.10〕
查询、中断和DMA传送是微机中常用的外设数据交换方式,请说明各自的特点。

〔解答〕参看教程P143-152及课件。

〔习题6.10〕(第二版)
DMA的意思是⎽⎽⎽⎽⎽,主要用于高速外设和内存间的数据传送。

进行DMA传送的一般过程是:外设先向DMA控制器提出⎽⎽⎽⎽⎽,DMA控制器通过⎽⎽⎽⎽⎽信号有效向CPU提出总线请求,CPU回以⎽⎽⎽⎽⎽信号有效表示响应。

此时CPU的三态信号线将输出⎽⎽⎽⎽⎽状态,即将它们交由⎽⎽⎽⎽⎽进行控制,完成外设和内存间的直接数据传送。

〔解答〕
DMA的意思是直接存储器存取,主要用于高速外设和内存间的数据传送。

进行DMA 传送的一般过程是:外设先向DMA控制器提出DMA请求,DMA控制器通过总线请求HOLD 信号有效向CPU提出总线请求,CPU回以总线响应HLDA 信号有效表示响应。

此时CPU的三态信号线将输出高阻状态,即将它们交由DMAC(DMA控制器)进行控制,完成外设和内存间的直接传送。

相关主题