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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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〕

结合中断传送的工作过程,简述有关概念:中断请求、中断响应、中断关闭、断点保护、

相关文档
最新文档