微机原理课后习题解答

对两个循环体进行初始化时,需仔细考虑指针和循环控制寄存器的初值。在数据段的定义中,分别定义STR、STR1两个变量名字,是为了便于在STR1处存放转换结果;显示时使DX直接指向STR,以STR1末尾的“$”为结束符。中间值找出之后,应把高、低半字节相分离,并分别转换为各所对应的ASCII码。

19.设某测试系统中,1号端口为测试口,所得数据是0~9之间的十进制整数;2号端口为显示口,对应于数字0~9的LED七段共阴显示码依次为:3FH、06H、5BH、4FH、66H、6DH、3DH、07H、7FH、6FH。编写一段查表送显的程序,要求:先从测试口读入一个数据,再查表将相应的显示码从显示口送出,如此反复进行直至读入数据“0FFH”为止。

答:一种可能的程序如下实现:

DATA SEGMENT TAB

DB DB

DATA ENDS STACK

SEGMENT PARA STACK‘STACK’ DW

STACK

ENDS

50 DUP(?)

3FH,06H,5BH,4FH,66H 6DH,3DH,07H,7FH,6FH

;0~9的七段码

CODE SEGMENT

ASSUME CS:CODE,SS:STACK,DS:DATA

START: MOV AX,DATA

MOV DS,AX LE

BX,TAB AL,1

;BX指向表首址 ;从测试口输入

NEXT: IN

CMP AL,0FFH JE

STOP

;是0FFH,结束 ;不是0FFH,查表转换

;向显示口输出七段码

XLAT TAB OUT JMP

2,AL NEXT

;继续测试

STOP: MOV AH,4CH

INT

21H

CODE ENDS

END

START

第五章 微处理器总线与时序

习题与答案

1. 总线周期的含义是什么?8088/8086基本总线周期由几个时钟周期组成?

解:总线周期是指CPU从存储器或I/O端口存取一个字节所需的时间。8088/8086基本总线周期由4个时钟周期组成。

2. 从引脚信号来看,8086和8088有什么不同?

解:从引脚信号来看,8086的地址引脚与数据引脚复用,引脚为AD0~AD15,而8088同样也采用了地址引脚与数据引脚复用,但引脚为AD0~AD7。

3. 试说明8086/8088工作在最小方式下和最大方式下系统基本配置的差别。在最大组态下,8086/8088的外围电路由哪些器件组成?它们的作用是什么? 解:8086/8088工作在最大方式下时,需要使用8288总线控制器,但是工作在最小方式下时不需要使用。

8086/8088工作在最大方式下时,外围电路包括8284时钟发生器、8286数据发送/接收器、8282地址锁存器以及8288总线控制器。8284将晶体振荡器的振荡频率分频,向8086/8088以及计算机系统提供符合定时要求的时钟信号、准备好信号和系统复位信号。8286数据发送/接收器增加数据总线的驱动能力。8282地址锁存器用来锁存CPU地址信号,特别是地址-数据线、地址-状态线上出现的地址信号。8288根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。

4. 8086/8088数据信号与地址信号是共用引脚的,怎样把这两种不同的信号分离出来?

解:8086/8088工作时,对数据信号与地址信号的公用引脚进行分时复用,采用8282地址锁存器来分离数据与地址信号。在T1状态时,CPU提供ALE地址锁存允许信号,将地址信号锁存到8282地址锁存器。然后,在T2、T3、TW状态,用作传送数据信号。

5. 在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态TW?TW在哪儿插入?怎样插入? 解:CPU在T1、T2、T3、T4 这四个状态完成一个总线周期。

在T1状态,把地址信息从地址线A19~A16,A15~A8和AD7~AD0上输出,且立即发出地址锁存信号ALE,把在A19~A16上出现的高4位地址和在AD15~AD0(8088则是AD7~AD0)上出现的地址,在外部地址锁存器上锁存。 在T2状态,CPU发送读写等控制命令。

在T3、T4状态,CPU发送或接收数据,并在T4状态结束此总线周期。

当外部存储器或I/O端口的时序不能与CPU的时序相配合时,就需要插入TW周期。因此,在CPU中设计了一条准备就绪READY输入线,即存储器或I/O端口输给CPU的状态线。CPU在T3采样READY线,若为高电平,则在T3状态后进入T4状态。若存储器或I/O端口来不及在T4状态的前沿把数据准备好,则当CPU在T3状态采样时应使READY线为低电平,并在T3状态后插入一个等待状态TW。

6. 8086/8088在最大组态下的存储器读/写周期和I/O周期中,8288发出的控制信号为什么能够和8086/8088发出的地址信号相配合?

解:8288总线控制器根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。8288总线控制器接收8086/8088的状态信号 , , ,以确定CPU执行何种操作,发出相应的控制命令信号,以控制系统中有关部件的工作。

7. 在T1状态下,8088/8086CPU数据/地址线上是什么信息?用哪个信号可将此信息锁存起来?数据信息是什么时候送出的?在最大组态下,怎样使系统地址总线和系统数据总线上同时分别存在地址信息和数据信息?

解:在T1状态下,8088/8086CPU数据/地址线上是地址信息。用ALE信号可将地址信息锁存起来。数据信息在T2开始以后送出。在最大组态下,AD15~AD0在8288发出的ALE下降沿控制下将地址信息锁存后送系统地址总线A15~A0(对8088则为AD7~AD0)。A19/S6~A16/S3 经ALE下降沿控制锁存后送系统地址总线A19~A16;CPU的AD0~AD7在8288发出

的 (数据收发控制信号)和DEN(数据允许信号)信号控制下,经双向总线驱动器连接到系统数据总线D7~D0,这样,实现了地址和数据及状态信号的分离,使地址信号和数据信号同时分别出现在系统地址总线和数据总线上。

8. RESET信号来到后,8086/8088系统的CS和IP分别等于多少? 解:CS=FFFFH,IP=0000H

9. 在中断响应过程中,8086/8088往8259A发的两个 信号分别起什么作用?

解:CPU在每一个中断响应地机器周期,都给出中断响应信号 。在第一个机器周期,使AD0~AD7浮空。在第二个机器周期,被响应地外设(或接口片子)应向数据线上输送一个字节的中断向量类型,CPU把它读入后,就可以在中断向量表上找到该设备的服务程序的入口地址,转入中断服务。

10. 总线保持过程是怎样产生和结束的?画出时序图并说明。

解:总线保持过程包括总线保持请求和保持响应操作。当一个系统中具有多个总线主模块时,除CPU之外的其它总线主模块为了获得对总线的控制,需向CPU发出总线保持请求信号,当CPU接到此请求信号,并在同意让出总线时,就向发该请求的主模块发响应信号。 具体过程是:在最小模式下,CPU在每个时钟周期的上升沿处,对HOLD引脚进行检测,若HOLD已变为高电平(有效状态),则在总线周期的T4状态或空闲状态TI之后的下一个状态,由HLDA引脚发出响应信号。同时CPU将把对总线的控制权转让给发出HOLD的设备,到发出HOLD信号的设备再将HOLD变为低电平(无效)时,CPU才又收回总线控制权。 时序图如下:

联系客服:779662525#qq.com(#替换为@)