据的外部设备,数据交换与指令的执行同步,控制方式简单。
(2)查询工作方式针对并不随时“准备好”、且满足一定状态才能实现数据的输入/输出的简单外部设备,其控制方式也比较简单,当CPU的效率比较低。 (3)中断工作方式是由外部设备作为主动的一方,在需要时向CPU提出工作请求,CPU在满足响应条件时响应该请求并执行相应的中断处理程序。这种工作方式使CPU的效率提高,但控制方式相对较复杂。
(4)DMA方式适合于高速外设,是4种基本输入/输出方式中速度最高的一种。 6.3 主机与外部设备进行数据传送时,采用哪一种传送方式,CPU的效率最高?(不要求)
解:使用DMA传送方式CPU的效率最高。这是由DMA的工作性质所决定的。 6.4 利用三态门芯片74LS244作为输入接口,接口地址为40FBH,试画出其与8088系统总线的连接图。
解:16位地址信号通过译码电路与74LS244芯片连接。其连接如下图所示。 6.5 某输入接口的地址为0E54H,输出接口的地址为01FBH,分别利用74LS244和74LS273作为输入和输出接口。试编写程序,使当输入接口的bit1、bit4和bit7位同时为1时,CPU将内存中DATA为首址的20个单元的数据从输出接口输出;若不满足上述条件则等待。
解:首先判断由输入接口读入数据的状态,若满足条件,则通过输出接口输出一个单元的数据;之后再判断状态是否满足,直到20个单元的数据都从输出接口输出。
LEA SI,DATA ;取数据偏移地址 MOV CL,20 ;数据长度送CL AGAIN: MOV DX,0E54H
WAITT: IN AL,DX ;读入状态值
AND AL,92H ;屏蔽掉不相关位,仅保留bit1、bit4和bit7位状态 CMP AL,92H ;判断bit1、bit4和bit7位是否全为1
JNZ WAITT ;不满足bit1、bit4和bit7位同时为1则等待 MOV DX,01FBH MOV AL,[SI]
OUT DX,AL ;满足条件则输出一个单元数据 INC SI ;修改地址指针
LOOP AGAIN ;若20个单元数据未传送完则循环
6.6 8088/8086系统如何确定硬件中断服务程序的入口地址?
解:8088/8086系统的硬件中断包括非屏蔽和可屏蔽两种中断请求。每个中断源都有一个与之相对应的中断类型码n。系统规定所有中断服务子程序的首地址都必须放在中断向量表中,其在表中的存放地址=n×4,(向量表的段基地址为0000H)。即子程序的入口地址为(0000H:n×4)开始的4个单元中,低位字(2个字节)存放入口地址的偏移量,高位字存放入口地址的段基地址。 6.7 中断向量表的作用是什么?如何设置中断向量表?
解:中断向量表用于存放中断服务子程序的入口地址,位于内存的最低1K字节(即内存中0000H~003FFH区域),共有256个表项。
设置中断向量表就是将中断服务程序首地址的偏移量和段基址放入中断向量表中。
如:将中断服务子程序CLOCK的入口地址置入中断向量表的程序如下: MOV AX,0000H
MOV DS,AX ;置中断向量表的段基地址
MOV SI,<中断类型码×4> ;置存放子程序入口地址的偏移地址 MOV AX,OFFSET CLOCK
MOV [SI],AX ;将子程序入口地址的偏移地址送入中断向量表 MOV AX, SEG CLOCK
MOV [SI+2],AX ;将子程序入口地址的段基址送入中断向量表 6.8 INTR中断和NMI中断有什么区别?
解:INTR中断为可屏蔽中断,中断请求信号高电平有效。CPU能否响应该请求要看中断允许标志位IF的状态,只有当IF=1时,CPU才可能响应中断。
NMI中断为非屏蔽中断,请求信号为上升沿有效,对它的响应不受IF标志位的约束,CPU只要当前指令执行结束就可以响应NMI请求。
6.9 在中断服务程序的入口处,为什么常常要使用开中断指令?
解:中断服务程序分为两种,一种是在进入服务子程序后不允许被中断,另一种则可以被中断。在入口处使用开中断指令表示该中断服务程序是允许被中断的服务程序,即在进入服务子程序后允许CPU响应比它级别高的中断请求。 6.10 试说明8088CPU可屏蔽中断的响应过程。
解:可屏蔽中断的响应过程主要分为5个步骤,即:
(1)中断请求。外设在需要时向CPU的INTR端发出一个高电平有效的中断请求信号。 (2)中断判优。若IF=1,则识别中断源并找出优先级最高的中断源先予以响应,在其处理完后,再响应级别较低的中断源的请求。
(3)中断响应。中断优先级确定后,发出中断的中断源中优先级别最高的中断请求就被送到CPU。 (4)中断处理。
(5)中断返回。中断返回需执行中断返回指令IRET,其操作正好是CPU硬件在中断响应时自动保护断点的逆过程。即CPU会自动地将堆栈内保存的断点信息弹出到IP、CS和FLAG中,保证被中断的程序从断点处继续往下执行。 6.11 CPU满足什么条件能够响应可屏蔽中断? 解:
(1)CPU要处于开中断状态,即IF=1,才能响应可屏蔽中断。 (2)当前指令结束。
(3)当前没有发生复位(RESET)、保持(HOLD)和非屏蔽中断请求(NMI)。 (4)若当前执行的指令是开中断指令(STI)和中断返回指令(IRET),则在执行完该指令后再执行一条指令,CPU才能响应INTR请求。
(5)对前缀指令,如LOCK、REP等,CPU会把它们和它们后面的指令看作一个整体,直到这个整体指令执行完,方可响应INTR请求。
6.14 单片8259A能够管理多少级可屏蔽中断?若用3片级联能管理多少级可屏蔽中断?(不要求)
解:因为8259A有8位可屏蔽中断请求输入端,故单片8259A能够管理8级可屏蔽中断。若用3片级联,即1片用作主控芯片,两片作为从属芯片,每一片从属芯片可管理8级,则3片级联共可管理22级可屏蔽中断。
6.16 具备何种条件能够作输入接口?何种条件能够作输出接口?
解:对输入接口要求具有对数据的控制能力,对输出接口要求具有对数据的锁存能力。
6.17 已知(SP)=0100H,(SS)=3500H,(CS)=9000H,(IP)=0200H,(00020H)=7FH,(00021H)=1AH,(00022H)=07H,(00023H)=6CH,在地址为90200H开始的连续两个单元中存放一条两字节指令INT 8。试指出在执行该指令并进入相应的中断例程时,SP、SS、IP、CS寄存器的内容以及SP所指向的字单元的内容是什么?
解:CPU在响应中断请求时首先要进行断点保护,即要依次将FLAGS和INT下一条指令的CS、IP寄存器内容压入堆栈,亦即栈顶指针减6,而SS的内容不变。INT 8 指令是一条两字节指令,故其下一条指令的IP=0200H+2=0202H。
中断服务子程序的入口地址则存放在中断向量表(8×4)所指向的连续4个单元中。所以,在执行中断指令并进入响应的中断例程时,以上各寄存器的内容分别为:
SP=0100H-6=00FAH SS=3500H
IP=[8×4]=1A7FH
CS=[(8×4)+2]=6C07H [SP]=0200H+2=0202H 第7章常用数字接口电路
7.1 一般来讲,接口芯片的读写信号应与系统的哪些信号相连?
解: 一般来讲,接口芯片的读写信号应与系统总线信号中的#IOR(接口读)或#IOW(接口写)信号相连。
7.2 试说明8253芯片的六种工作方式。其时钟信号CLK和门控信号GATE分别起什么作用?
解:可编程定时/计数器8253具有六种不同的工作方式,其中:
方式0:软件启动、不自动重复计数。在写入控制字后OUT端变低电平,计数结束后OUT端输出高电平,可用来产生中断请求信号,故也称为计数结束产生中断的工作方式。
方式1:硬件启动、不自动重复计数。所谓硬件启动是在写入计数初值后并不开始计数,而是要等门控信号GATE出现由低到高的跳变后,在下一个CLK脉冲的下降沿才开始计数,此时OUT端立刻变为低电平。计数结束后,OUT端输出高电平,得到一个宽度为计数初值N个CLK脉冲周期宽的负脉冲。 方式2:既可软件启动,也可以硬件启动。可自动重复计数。
在写入控制字后,OUT端变为高电平。计数到最后一个时钟脉冲时OUT端变为低电平,再经过一个CLK周期,计数值减到零,OUT又恢复为高电平。之后再自动转入计数初值,并重新开始新的一轮计数。方式2下OUT端会连续输出宽度为Tclk的负脉冲,其周期为N×Tclk,所以方式2也称为分频器,分频系数为计数初值N。
方式3:也是一种分频器,也有两种启动方式,自动重复计数。当计数初值N为偶数时,连续输出对称方波(即N/2个CLK脉冲低电平,N/2个CLK脉冲高电平),频率为(1/N)×Fclk。若N为奇数,则输出波形不对称,其中(N+1)/2个时钟周期高电平, (N-1)/2个时钟周期低电平。
方式4和方式5都是在计数结束后输出一个CLK脉冲周期宽的负脉冲,且均为不自动重复计数方式。区别在方式4是软件启动,而方式5为硬件启动。
时钟信号CLK为8253芯片的工作基准信号。GATE信号为门控信号。在软件启动时要求GATE在计数过程中始终保持高电平;而对硬件启动的工作方式,要求在写入计数初值后GATE端出现一个由低到高的正跳变,启动计数。 7.3 8253可编程定时/计数器有两种启动方式,在软件启动时,要使计数正常进行,GATE端必须为( )电平,如果是硬件启动呢?
解:在软件启动时,要使计数正常进行,GATE端必须为高电平;如果是硬件启动,则要在写入计数初值后使GATE端出现一个由低到高的正跳变,以启动计数。 7.4 若8253芯片的接口地址为D0D0H~D0D3H,时钟信号频率为2MHz。现利用计数器0、1、2分别产生周期为10us的对称方波及每1ms和1s产生一个负脉冲,试画出其与系统的电路连接图,并编写包括初始化在内的程序。
解:根据题目要求可知,计数器0(CNT0)工作于方式3,计数器1(CNT1)和计数器2(CNT2)工作于方式2。时钟频率2MHz,即周期为0.5us,从而得出各计数器的计数初值分别为: CNT0:
10us/0.5us = 20 CNT1:
1ms/0.5us = 2000 CNT2: 1s/0.5us = 2 ×1000000
显然,计数器2的计数初值已超出了16位数的表达范围,需经过一次中间分频,可将OUT1端的输出脉冲作为计数器2的时钟频率。这样,CNT2的计数初值就等于1s/1ms = 1000。线路连接如图所示。 8253
8253的初始化程序如下: MOV DX,0D0D3H
MOV AL,16H ;计数器0,低8位计数,方式3 OUT DX,AL
MOV AL,74H ;计数器1,双字节计数,方式2 OUT DX,AL
MOV AL,0B4H ;计数器2,双字节计数,方式2 OUT DX,AL
MOV DX,0D0D0H
MOV AL,20 ;送计数器0的计数初值 OUT DX,AL
MOV DX,0D0D1H
MOV AX,2000 ;送计数器1的计数初值 OUT DX,AL MOV AL,AH OUT DX,AL
MOV DX,0D0D2H
MOV AX,1000 ;送计数器2的计数初值 OUT DX,AL MOV AL,AH OUT DX,AL
7.5 某一计算机应用系统采用8253芯片的计数器0作频率发生器,输出频率为500Hz;用计数器1产生1000Hz的连续方波信号,输入8253的时钟频率为1.19MHz。
试问:初始化时送到计数器0和计数器1的计数初值分别为多少?计数器1工作于什么方式下?
解:计数器0工作于方式2,其计数初值=1.19MHz/500Hz=2380 计数器1工作于方式3,其计数初值=1.19MHz/1KHz=1190
7.6 若所用8253芯片用软件产生一次性中断,最好采用哪种工作方式?现用计数器0对外部脉冲计数,当计满10000个脉冲时产生中断,请写出工作方式控制字及计数值。
解:若8253用软件产生一次性中断,最好采用方式0,即计数结束产生中断的工作方式。其方式控制字为:00110000B。 计数初值=10000
7.7 试比较并行通信与串行通信的特点。 解:并行通信是在同一时刻发送或接收一个数据的所有二进制位。其特点是接口数据的通道宽,传送速度快,效率高。但硬件设备的造价较高,常用于高速度、短传输距离的场合。
串行通信是将数据逐位的传送。其特点是传送速度相对较慢,但设备简单,需要的传输线少,成本较低。所以常用于远距离通信。
7.9 在对8255的C口进行初始化为按位置位或复位时,写入的端口地址应是( )地址。
解:应是(8255的内部控制寄存器)地址。
7.10 某8255芯片的地址范围为A380H~A383H,工作于方式0,A 口、B 口为输出口,现欲将PC4置“0”,PC7置“1”,试编写初始化程序。
解:该8255芯片的初始化程序包括置方式控制字及C口的按位操作控制字。程序如下:
MOV DX,0A383H ;内部控制寄存器地址送DX MOV AL,80H ;方式控制字 OUT DX,AL
MOV AL,08H ;PC4置0 OUT DX,AL
MOV AL,0FH ;PC7置1 OUT DX,AL
7.11 设8255芯片的接口地址范围为03F8H~03FBH,A 组 B 组均工作于方式0,A 口作为数据输出口,C 口低 4 位作为控制信号输入口,其他端口未使用。试画出该片8255芯片与系统的电路连接图,并编写初始化程序。 解:8255芯片与系统的电路连接如图所示。
由题目知,不需对 C 口置位控制字,只需对8255置方式控制字,故其初始化程序如下:
MOV DX,03FBH MOV AL,81H OUT DX,AL
7.12 已知某8088微机系统的I/0接口电路框图如教材中图7-47所示。试完成: (1)根据图中接线,写出8255芯片、8253芯片各端口的地址。