第六章“输入输出及接口”习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章输入输出及接口
〔习题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〕
结合中断传送的工作过程,简述有关概念:中断请求、中断响应、中断关闭、断点保护、