微机原理习题答案9章.docx

上传人:b****5 文档编号:6785112 上传时间:2023-01-10 格式:DOCX 页数:133 大小:416.88KB
下载 相关 举报
微机原理习题答案9章.docx_第1页
第1页 / 共133页
微机原理习题答案9章.docx_第2页
第2页 / 共133页
微机原理习题答案9章.docx_第3页
第3页 / 共133页
微机原理习题答案9章.docx_第4页
第4页 / 共133页
微机原理习题答案9章.docx_第5页
第5页 / 共133页
点击查看更多>>
下载资源
资源描述

微机原理习题答案9章.docx

《微机原理习题答案9章.docx》由会员分享,可在线阅读,更多相关《微机原理习题答案9章.docx(133页珍藏版)》请在冰豆网上搜索。

微机原理习题答案9章.docx

微机原理习题答案9章

第9章定时/计数器8253应用设计

1.下列地址哪些能够分配给8253/8254的计数器0?

为什么?

(23H、54H、97H、51H、FCH、59H)

解:

因为已经约定采用A2,A1作为8253的内部地址线,而且计数器0的地址为00,所以在题中所给的地址中只有51H,59H的A2和A1同时为0,即:

A2A1=00.

2.如果计数器0设定为方式0,GATE0=1,CLK0=1MHz,时常数为N=1000,请画出OUT0的波形。

如果计数器1设定为方式1,其它参数与计数器0相同,画出OUT1的波形。

3.编程实现:

将8253计数器0设置成方式4,并置时常数10000,然后处于等待状态,直到CE的内容≤1000后再向下执行。

解:

MOVDX,COUNTD;写入计数器0的方式控制字

MOVAL,00111000B

OUTDX,AL

MOVDX,COUNTA;设置计数器0的常数

MOVAX,10000

OUTDX,AL

XCHGAL,AH

OUTDX,AL

L1:

MOVDX,COUNTD;写入计数器0的方式控制字

MOVAL,0H

OUTDX,AL

MOVDX,COUNTA;读入CE

INAL,DX

MOVAH,AL

INAL,DX

XCHGAL,AH

CMPAX,1000;判别CE当前大小

JAL1

4.利用8253可以实现确定时间的延迟,编程实现延时10秒的程序段(设可以使用的基准时钟为1MHz)。

解:

本题使用计数器0和计数器1,并且计数器0的输出OUT0作为计数器1的时钟输入CLK1.

程序如下:

MOVDX,COUNTD;写计数器0方式控制字

MOVAL,00110100B

OUTDX,AL

MOVDX,COUNTA

MOVAX,10000;写计数器0时常数,分频得到100Hz时钟频率

OUTDX,AL

XCHGAL,AH

OUTDX,AL

MOVDX,COUNTD;写计数器1方式控制字

MOVAL,01110000B

OUTDX,AL

MOVDX,COUNTB

MOVAX,999;分频得到0.1Hz时钟频率。

(在方式0下,时常数为N时,

;OUT输出的低电平宽度为N+1).

OUTDX,AL

XCHGAL,AH

OUTDX,AL

L1:

;延时

MOVDX,COUNTD;当前CE的内容锁存到OL

MOVAL,01000000B

OUTDX,AL

MOVDX,COUNTB

INAL,DX

MOVAH,AL

INAL,DX

XCHGAL,AH

CMPAX,999

JNAL1;延时结束,则继续执行,否则,跳到L1,继续延时

….

5.比较8254方式0与方式4、方式1与方式5的区别?

方式0与方式4

方式0OUT端计数过程中为低,计数值减为0时,输出变高

方式4OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲

方式1与方式5

方式1OUT端输出宽度为n个CLK的低电平,计数值减为0时,输出为高

方式5OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲

6.在8088最小系统中,8253的端口地址为284H~287H。

系统提供的时钟为1MHz,要求在OUT0输出周期为20微秒的方波,在OUT1输出周期为200微秒,其中每周期为负的时间是180微秒的信号。

请编写8253的初始化程序。

解:

MOVDX,287H;写计数器0控制方式字

MOVAL,00010110B

OUTDX,AL

MOVDX,284H;写计数器0时常数

MOVAL,20

OURDX,AL

MOVDX,287;写计数器2控制方式字

MOVAL,10010110B

OUTDX,AL

MOVDX,286H;写计数器2时常数

MOVAL,200

OUTDX,AL

MOVDX,287H

MOVAL,01010010B;写计数器1控制方式字

OUTDX,AL

MOVDX,285H

MOVAL,9;写计数器1时常数

OUTDX,AL

7.通过8253计数器0的方式0产生中断请求信号,现需要延迟产生中断的时刻,可采用:

A)在OUT0变高之前重置初值;

B)在OUT0变高之前在GATE0端加一负脉冲信号;

C)降低加在CLK0端的信号频率;

D)以上全是。

解:

D

A:

方式0下,在OUT0变高之前重置初值,将在下一个CLK的下降沿使时常数从CR读入CE并重新计数。

B:

在OUT0变高之前在GATE0端加一负脉冲信号可以延时一个时钟周期,达到延时的目的。

C:

降低加在CLK0端的信号频率,可以增大时钟周期,达到延长OUT0端低电平的时间。

(注:

A中,如果重置的初值为1,则不会达到延时的效果)

8.已知8254计数器0的端口地址为40H,控制字寄存器的端口地址为43H,计数时钟频率为2MHz,利用这一通道设计当计数到0时发出中断请求信号,其程序段如下,则中断请求信号的周期是32.7675ms。

MOVAL,00110010B

OUT43H,AL

MOVAL,0FFH

OUT40H,AL

OUT40H,AL

9.若8254芯片可使用的8086端口地址为D0D0H~D0DFH,试画出系统设计连接图。

设加到8254上的时钟信号为2MHz,

(1)利用计数器0~2分别产生下列三种信号:

1周期为10us的对称方波

2每1s产生一个负脉冲

310s后产生一个负脉冲

每种情况下,说明8254如何连接并编写包括初始化在内的程序段。

(2)希望利用8086通过一专用接口控制8253的GATE端,当CPU使GATE有效开始,20us后在计数器0的OUT端产生一个正脉冲,试设计完成此要求的硬件和软件。

解:

(1)选用D0D0H~D0DFH中的偶地址DODO,DOD2,DOD4,DOD6为基本地址作为8254的端口地址,设8086工作在最小方式下。

8254端口地址译码电路如下图:

①计数器0输入端加2MHz的时钟信号,GATE0加+5V电压,输出OUT0信号为周期为10µs的对称方波。

初始化代码:

MOVDX,0D0D6H;写计数器0工作方式

MOVAL,00010110B

OUTDX,AL

MOVDX,0D0D0H;写计数器0时常数

MOVAL,20

OUTDX,AL

②CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK1做时钟信号,OUT1输出为每1s产生一个负脉冲。

初始代码:

MOVDX,0D0D6H;写计数器0的工作方式

MOVAL,00010110B

OUTDX,AL

MOVDX,0D0D0H;写计数器0的时常数

MOVAL,100

OUTDX,AL

MOVDX,0D0D6H;写计数器1的工作方式

MOVAL,01110100B

OUTDX,AL

MOVDX,0D0D2H;写计数器1的时常数

MOVAX,20000

OUTDX,AL

XCHGAL,AH

OUTDX,AL

③CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK2做时钟信号,OUT2输出为10s后产生一个负脉冲。

初始代码:

MOVDX,0D0D6H;写计数器0的工作方式

MOVAL,00110110B

OUTDX,AL

MOVDX,0D0D0H;写计数器0的时常数

MOVAX,1000

OUTDX,AL

XCHGAL,AH

OUTDX,AL

MOVDX,0D0D6H;写计数器2的工作方式

MOVAL,10111000B

OUTDX,AL

MOVDX,0D0D4H;写计数器2的时常数

MOVAX,20000

OUTDX,AL

XCHGAL,AH

OUTDX,AL

1)选用地址D0D0,DOD2,DOD4,DOD6为8253的端口地址,D0D8为GATE端口地址,该端口采用74LS373,8253用方式4,在OUT输出端加非门实现脉冲功能。

接口电路如图:

初始代码为:

MOVDX,0D0D8H;GATE初始化

MOVAL,0

OUTDX,AL

MOVDX,0D0D6H;写计数器0工作方式

MOVAL,00011000B

OUTDX,AL

MOVDX,0D0D0H;写计数器0时常数

MOVAL,40

OUTDX,AL

MOVDX,0D0D8H

MOVAL,1

OUTDX,AL;使GATE变高有效

 

10.若加到8254上的时钟频率为0.5MHz,则一个计数器的最长定时时间是多少?

若要求10分钟产生一次定时中断,试提出解决方案。

解:

一个计数器的最长定时时间应该是置入时常数0时,此时定时时间为:

65536/0.5*10^6s=131ms

采用方式0即:

计数达到终值时中断来10分钟产生一次定时中断,此时时常数CR为:

10*60*0.5*10^6=3*10^9.

由于一个计数器最多分频65536,所以至少得使用2个计数器。

我们采用计数器0和计数器1.计数器0的时常数CR0为60000,计数器1的时常数CR1为50000.

连接方式为:

把0.5MHz的时钟频率接到计数器0的CLK0,然后把计数器0的OUT0接到计数器1的CLK1。

这样计数器1的OUT1端输出的就是10分钟产生一次的定时中断。

11.织布机控制系统如图9.26所示,已知织布机每织1米发出一个正脉冲,每织100米要求接收到一脉冲,去触发剪裁设备把布剪开。

(1)设8253的端口地址为80H~83H,编写对8253初始化程序。

(2)假定系统提供的信号频率为1MHz,希望利用8253的其余通道产生0.1秒的周期信号,编写初始化程序。

图9.26织布机控制系统

解:

(1)

MOVDX,83H

MOVAL,00010100B

OUTDX,AL

MOVDX,80H

MOVAL,100

OUTDX,AL

(2)

将计数器1的输出OUT1信号作为计数器2的时钟输入CLK2,计数器1的时钟输入为系统提供1MHZ的信号

MOVDX,83H

MOVAL,01110100B

OUTDX,AL

MOVDX,81H

MOVAX,1000

OUTDX,AL

XCHGAL,AH

MOVDX,AL

MOVDX,83H

MOVAL,10010110B

OUTDX,AL

MOVDX,82H

MOVAL,100

OUTDX,AL

12.在IBMPC系统中根据下列不同条件设计接口逻辑,利用8253完成对外部脉冲信号重复频率的测量。

(1)被测脉冲信号的重复频率在10~1000Hz范围内。

(2)被测脉冲信号的重复频率在0.5~1.5Hz范围内。

(3)被测脉冲信号重复频率在10~100Hz范围内。

(4)被测是间歇脉冲信号,每次有信号时有100个脉冲,重复频率为0.8~1.2MHz,间歇频率大约每秒15次,要求测有信号时的脉冲重复频率。

解:

用两个计数器,计数器0的CLK接待测信号,GATE接半周期为10s的高电平信号,OUT接8259,同时取反接计数器1的GATE端。

计数器1的CLK接系统时钟,半周期为T0。

在这样的逻辑电路下,计数器0的功能是记录待测信号的脉冲数N0,计数器1的功能是记录在相同时间里系统时钟信号的脉冲数N1。

根据T=N1*T0/N0可计算出待测信号的周期。

S(t)是待测信号,S’(t)为给定的周期大于10s的高电平信号。

端口声明:

COUNTA为计数器0的地址,COUNTB为计数器2的地址,COUNTD为控制器地址,COUNT为373地址

程序如下:

MOVDX,COUNTD;计数器1初始化

MOVAL,01110000B

OUTDX,AL

MOVDX,COUNTB

OUTDX,AL

MOVDX,COUNTB

MOVAL,O

OUTDX,AL

MOVDX,COUNTD;计数器0初始化

MOVAL,00010000B

OUTDX,AL

MOVDX,COUNTA

MOVAL,0

OUTDX,AL

OUTDX,AL

STI

读两计数器的计数,并进行计算的中断服务子程序:

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDX,COUNTD

MOVAL,00000000B

OUTDX,AL

MOVDX,COUNTA

INAL,DX

XCHGAL,AH

INAL,DX

XCHGAL,AH

NEGAX

INCAX

MOVBX,AX

MOVDX,COUNTD

MOVAL,00010000B

OUTDX,AL

MOVDX,COUNTB

INAL,DX

XCHGAL,AH

INAL,DX

XCHGAL,AH

NEGAX

INCAX

MOVCX,T0

MULCX

DIVBX

MOVSFR,AX

POPDX

POPCX

POPBX

POPAX

IRET

SFR中保存结果即为待测信号的周期。

对于

(1)题,10*10不小于100,10*1000不大于65535,可以用计数法。

同理(3)也可用此方法。

对于

(2)题,可用周期法。

逻辑电路图如下:

程序如下:

MOVDX,COUNTD

MOVAL,00110100B

OUTDX,AL

MOVDX,COUNTA

MOVAL,0

OUTDX,AL

OUTDX,AL

STI

PUSHAX

PUSHBX

PUSHDX

MOVDX,COUNTD

MOVAL,00000000B

OUTDX,AL

MOVDX,COUNTA

INAL,DX

XCHGAL,AH

INAL,DX

XCHGAL,AH

NEGAX

INCAX

MOVBX,AX

MOVDX,000FH

MOVAX,4240H

DIVBX

MOVSFR,AX

POPDX

POPBX

POPAX

IRET

(4)如图设计接口,计数器1用来记录在50个脉冲所用时间,50个信号脉冲最多用1/0.8*50(约为63us)由于计数器1用1MHzCLK,故其计数个数N即为Nus,所以当N>63时,则有低电平间隔计入,须重新计数。

当N>63时,则计算得待测频率。

程序如下:

MOVDX,COUNTD

MOVAL,00H

OUTDX,AL

MOVDX,COUNTD

MOVAL,00010000B

OUTDX,AL

MOVDX,COUNTA

MOVAL,50

OUTDX,AL

MOVDX,COUNTD

MOVAL,01110000B

OUTDX,AL

MOVCOUNTB

MOVAL,0

OUTDX,AL

OUTDX,AL

L2:

MOVDX,COUNT;给GATE0和GATE1高电平,开始计数

MOVAL,81H

OUTDX,AL

L1:

NOP

MOVDX,COUNTD

MOVAL,00000000B

OUTDX,AL

MOVDX,COUNTA

INAL,DX

MOVDX,COUNTA

INAL,DX

ANDAL,AL;判断是否计完50个脉冲,若未计完继续等待

JNZL1

MOVDX,COUNT

MOVAL,00H;若计完则暂停计数

OUTDX,AL

MOVDX,COUNTD;读计数器1结果

MOVAL,01000000B

OUTDX,AL

MOVDX,COUNTB

INAL,DX

XCHGAL,AH

INAL,DX

XCHGAL,AH

NEGAX

INCAX

CMPAX,70H;当AL大于70,则有间歇计入,重新测试

JAL2

MOVBL,AL

MOVAL,50;计算频率

DIVBL

MOVFREC,AL

 

全国高等学校“十 一五”重点规划教材

 

现代微型计算机原理

与接口技术教程

(习题解答)

主编:

杨文显

副主编:

杨晶鑫

编著:

黄春华胡建人宓双

 

清华大学出版社

习题一

1.8086CPU由哪几个部件构成?

它们的主要功能各是什么?

8086CPU由指令执行部件EU和总线接口部件BIU两个部份组成。

指令执行部件主要功能是执行指令。

总线接口部件的主要功能是完成访问存储器或I/O端口的操作:

•形成访问存储器的物理地址;

•访问存储器取得指令并暂存到指令队列中等待执行;

•访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果。

2.什么是逻辑地址?

什么是物理地址?

它们各自如何表示?

如何转换?

程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。

段基址表示一个段的起始地址的高16位。

偏移地址表示段内的一个单元距离段开始位置的距离。

访问存储器的实际地址称为物理地址,用20位二进制表示。

将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:

物理地址=段基址×16+偏移地址

在32位CPU的保护模式下,“逻辑地址”的表示产生了一些变化,请参考第8章的相关内容。

3.什么是“堆栈”?

它有什么用处?

在使用上有什么特点?

堆栈是内存中的一块存储区,用来存放专用数据。

例如,调用子程序时的入口参数、返回地址等,这些数据都按照“先进后出”的规则进行存取。

SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。

数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。

4.

设X=36H,Y=78H,进行X+Y和X-Y运算后FLAGS寄存器各状态标志位各是什么?

5.按照传输方向和电气特性划分,CPU引脚信号有几种类型?

各适用于什么场合?

CPU引脚传输的信号按照传输方向划分,有以下几种类型:

输出:

信号从CPU向外部传送;

输入:

信号从外部送入CPU;

双向:

信号有时从外部送入CPU,有时从CPU向外部传送。

双向信号主要用于数据信号的传输;输出信号用于传输地址信号和一些控制信号;输入信号主要用于传输外部的状态信号(例如READY)和请求(中断、DMA)信号。

按照信号的电器特性划分,有以下几种类型:

一般信号:

用来传输数据/地址信号时,高电平表示“1”,低电平表示“0”;用来表示正逻辑的控制/状态信号时,“1”表示有效,“0”表示信号无效;用来表示负逻辑的控制/状态信号时,“0”表示有效,“1”表示信号无效。

三态信号:

除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,也称为“悬浮态”。

CPU放弃总线控制权,允许其他设备使用总线时,将相关信号置为“悬浮态”。

6.8086CPU以最小模式工作,现需要读取内存中首地址为20031H的一个字,如何执行总线读周期?

请具体分析。

为了读取内存中首地址为20031H的一个字,需要执行二个总线读周期。

第一个总线周期读取20031H字节内容,进行的操作如下。

T1状态:

=1,指出CPU是从内存读取数据。

随后CPU从地址/状态复用线(A19/S6~A16/S3)和地址/数据复用线(AD15~AD0)上发出读取存储器的20位地址20031H。

为了锁存地址,CPU在T1状态从ALE引脚输出一个正脉冲作为地址锁存信号。

由于需要读取高8位数据线上的数据(奇地址),

=0。

为了控制总线收发器8286接受数据,

=0。

T2状态:

地址信息撤消,地址/数据线AD15~AD0进入高阻态,读信号

开始变为低电平(有效),

=0,用来开放总线收发器8286。

T3状态:

CPU检测READY引脚信号。

若READY为高电平(有效)时,表示存储器或I/O端口已经准备好数据,CPU在T3状态结束时读取该数据。

若READY为低电平,则表示系统中挂接的存储器或外设不能如期送出数据,要求CPU在T3和T4状态之间插入1个或几个等待状态Tw。

TW状态:

进入TW状态后,CPU在每个TW状态的前沿(下降沿)采样READY信号,若为低电平,则继续插入等待状态TW。

若READY信号变为高电平,表示数据已出现在数据总线上,CPU从AD15~AD0读取数据。

T4状态:

在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完成读取数据的操作。

第二个总线周期读取地址为20032H字节的内容。

CPU发出的信号与第一个周期类似,区别在于T1状态CPU发出存储器地址为20032H,由于只需要读取低8位数据线上的数据(偶地址),

=1。

在CPU内部,从20031H读入的低位字节和从20032H读入的高位字节被拼装成一个字。

 

7.8086CPU有几种工作方式?

各有什么特点?

8086/8088CPU有两种工作模式:

最大工作模式和最小工作模式。

所谓最小工作模式,是指系统中只有一个8086/8088处理器,所有的总线控制信号都由8086/8088CPU直接产生,构成系统所需的总线控制逻辑部件最少,最小工作模式因此得名。

最小模式也称单处理器模式。

最大模式下,系统内可以有一个以上的处理器,除了8086/8088作为“中央处理器”之外,还可以配置用于数值计算的8087“数值协处理器”、用于I/O管理的“I/O协处理器”8089。

各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。

CPU两种工作模式由

引脚决定,

接高电平,CPU工作在最小模式;将

接地,CPU工作在最大模式。

8.分析8086CPU两个中断输入引脚的区别,以及各自的使用场合。

INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。

中断允许标志IF=1时才能响应INTR上的中断请求。

NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。

CPU一旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。

NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。

INTR引脚用于连接一般外部设备的中断请求。

9.什么是时钟周期、总线周期、指令周期?

它们的时间长短取决于哪些因素?

时钟周期:

CPU连接的系统主时钟CLK一个周期的时间。

CLK信号频率越高,时钟周期越短。

总线周期:

CPU通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。

8086CPU总线周期一般由四个时钟周期组成,存储器/IO设备(接口)速度不能满足CPU要求时,可以增加一个或多个时钟周期。

指令周期:

CPU执行一条指令的时间(包括取指令和执行该指令所需的全部时间)称为指令周期。

指令周期的时间主要取决于主时钟的频率和指令的复杂程度,它也受到存储器或IO设备接口工作速度的影响。

10.在一次最小模式总线读周期中,8086CPU先后发出了哪些信号?

各有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1