微机原理习题答案9章Word下载.docx
- 文档编号:19805338
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:133
- 大小:416.88KB
微机原理习题答案9章Word下载.docx
《微机原理习题答案9章Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理习题答案9章Word下载.docx(133页珍藏版)》请在冰豆网上搜索。
MOVAX,10000;
写计数器0时常数,分频得到100Hz时钟频率
XCHGAL,AH
MOVDX,COUNTD;
写计数器1方式控制字
MOVAL,01110000B
MOVDX,COUNTB
MOVAX,999;
分频得到0.1Hz时钟频率。
(在方式0下,时常数为N时,
;
OUT输出的低电平宽度为N+1).
L1:
;
延时
当前CE的内容锁存到OL
MOVAL,01000000B
MOVDX,COUNTB
INAL,DX
MOVAH,AL
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
MOVDX,284H;
写计数器0时常数
MOVAL,20
OURDX,AL
MOVDX,287;
写计数器2控制方式字
MOVAL,10010110B
MOVDX,286H;
写计数器2时常数
MOVAL,200
MOVDX,287H
MOVAL,01010010B;
写计数器1控制方式字
MOVDX,285H
MOVAL,9;
写计数器1时常数
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
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工作方式
MOVDX,0D0D0H;
②CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK1做时钟信号,OUT1输出为每1s产生一个负脉冲。
初始代码:
MOVDX,0D0D6H;
写计数器0的工作方式
写计数器0的时常数
MOVAL,100
写计数器1的工作方式
MOVAL,01110100B
MOVDX,0D0D2H;
写计数器1的时常数
MOVAX,20000
③CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK2做时钟信号,OUT2输出为10s后产生一个负脉冲。
MOVAL,00110110B
MOVAX,1000
写计数器2的工作方式
MOVAL,10111000B
MOVDX,0D0D4H;
写计数器2的时常数
1)选用地址D0D0,DOD2,DOD4,DOD6为8253的端口地址,D0D8为GATE端口地址,该端口采用74LS373,8253用方式4,在OUT输出端加非门实现脉冲功能。
接口电路如图:
初始代码为:
MOVDX,0D0D8H;
GATE初始化
MOVAL,0
MOVAL,00011000B
MOVDX,0D0D0H;
MOVAL,40
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
(2)
将计数器1的输出OUT1信号作为计数器2的时钟输入CLK2,计数器1的时钟输入为系统提供1MHZ的信号
MOVDX,83H
MOVAL,01110100B
MOVDX,81H
MOVDX,AL
MOVDX,82H
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
MOVDX,COUNTB
MOVAL,O
计数器0初始化
MOVAL,00010000B
STI
读两计数器的计数,并进行计算的中断服务子程序:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,COUNTD
MOVAL,00000000B
INAL,DX
NEGAX
INCAX
MOVBX,AX
MOVCX,T0
MULCX
DIVBX
MOVSFR,AX
POPDX
POPCX
POPBX
POPAX
IRET
SFR中保存结果即为待测信号的周期。
对于
(1)题,10*10不小于100,10*1000不大于65535,可以用计数法。
同理(3)也可用此方法。
对于
(2)题,可用周期法。
逻辑电路图如下:
MOVAL,00110100B
MOVAL,00000000B
MOVDX,000FH
MOVAX,4240H
(4)如图设计接口,计数器1用来记录在50个脉冲所用时间,50个信号脉冲最多用1/0.8*50(约为63us)由于计数器1用1MHzCLK,故其计数个数N即为Nus,所以当N>
63时,则有低电平间隔计入,须重新计数。
当N>
63时,则计算得待测频率。
MOVAL,00H
MOVAL,00010000B
MOVAL,50
MOVAL,01110000B
MOVCOUNTB
L2:
MOVDX,COUNT;
给GATE0和GATE1高电平,开始计数
MOVAL,81H
NOP
ANDAL,AL;
判断是否计完50个脉冲,若未计完继续等待
JNZL1
MOVDX,COUNT
MOVAL,00H;
若计完则暂停计数
读计数器1结果
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接受数据,
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先后发出了哪些信号?
各有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 习题 答案