微机原理与接口技术课程习题答案Word格式.docx
《微机原理与接口技术课程习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程习题答案Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
8088具有20根地址线。
在访问内存时使用地址A0~A19,可直接寻址1MB容量的内存范围;
在访问外设时使用地址线A0~A15,共能寻址64K个输入输出端口。
实际上PC/XT在寻址外设时,只使用地址线A9~A0;
若A9=1,说明它要寻址的IO端口位于IO插卡上。
4.2参见p.106-107
总线操作指的是发生在总线上的某些特定操作,总线周期指的是完成一次特定总线操作所需的时间。
对8088而言其典型的总线周期由4个T状态组成。
PC/XT所采用的时钟频率为4.77MHz,每个T状态的持续时间为210ns。
如果CLK引脚接5MHz的时钟信号,那么每个T状态的持续时间为200ns。
4.4解答:
当8088进行读写存储器或I/O接口时,如果存储器或I/O接口无法满足CPU的读写时序(来不及提供或读取数据时),需要CPU插入等待状态TW。
(在T3前沿检测Ready信号,若无效则插入TW。
)
具体在读写总线周期的T3和T4之间插入TW。
4.6参见p.99,p.110
8088的某些输出线有三种状态:
高电平、低电平、悬空(高阻态),称为三态能力。
在高阻状态,CPU放弃其了对该引脚的控制权,由连接它的设备接管。
具有三态能力的引脚有:
AD7~AD0,A15~A8,A19/S6~A16/S3,ALE,IO/M*,WR*,RD*,DEN*,DT/R*。
4.11
总线周期
IO/M*
WR*
RD*
存储器读
低
高
低
存储器写
I/O读
I/O写
4.12答:
取该指令时引发存储器读总线操作。
执行该指令时引发I/O读总线操作。
(时序图略)
4.138088系统最小组态下,对指令ADD[2000H],AX(长度3B)。
答:
取该指令时需要3个总线周期,均为存储器读周期。
执行该指令时需要4个总线周期,2个为存储器读总线周期(读出字操作数参与运算),2个为存储器写总线周期(保存16位运算结果)。
4.15参见p.106图
74LS373的G为电平锁存引脚,控制选通且转为无效时锁存数据。
OE*输出允许引脚,信号来自ALE。
4.16参见p.106图
数据收发器74LS245是8位双向缓冲器,G*控制端为低电平有效,可传输数据;
DIR控制导通方向:
DIR=1,A→B;
DIR=0,A←B。
4.17参见p.111-112
归纳为:
1、8086数据总线变为16位,数据地址线复用为AD15~AD0。
2、8086指令队列程度变为6字节长,当有2个字节空才取下一指令。
3、8088引脚IO/M*,8086变为M/IO*;
4、引脚SS0*变为BHE*/S7,BHE*的作用是使D15~D8有效。
5、8086存储器组织为奇偶分块,偶地址取字只要读1次,奇地址取字需要读两次。
6、I/O端口大都采用偶地址,目的是引导8位数据到低8位总线AD7~AD0上,以提高效率。
=========================
5.1
Cache、主存和辅存的作用——参见p.120~121
虚拟存储器——参见p.121
在CPU看来,访问主存和访问辅存有什么不同?
访问主存:
通过存储器访问机器指令,按字随机访问。
访问辅存:
通过操作系统,按块顺序访问。
5.2在半导体存储器中,RAM指的是随机存取存储器,它可读可写,但断电后信息一般会丢失;
而ROM指的是只读存储器,正常工作时只能从中读取信息,但断电后信息不会丢失。
以EPROM芯片2764为例,其存储容量为8K×
8位,共有8条数据线和13条地址线。
用它组成64KB的ROM存储区共需8片2764芯片。
5.4一个容量为4K×
4位的假想RAM存储芯片,他应该有多少根地址线引脚和多少根数据线引脚?
如果让你来进行设计,那么它还需要哪些控制引脚?
这些引脚分别起什么样的控制作用?
解答:
4K×
4的芯片应该有12根地址线引脚和4根数据线引脚。
控制引脚应该有:
读取信号OE*:
有效时,表示读取存储单元的数据
写入信号WE*:
有效时,表示将数据写入存储单元
片选信号CS*:
有效时,表示选中该芯片,可以进行读写操作。
5.7什么是存储芯片的位扩充和地址扩充?
采用静态RAM的芯片2114(1K*4位)或动态RAM的芯片4116(16K*1位)来组成32KB的RAM存储区,请问各需要多少芯片?
在位方向和地址方向各需要进行什么样的扩充?
(参见p.140)使用多个芯片来扩充存储数据位的宽度,称为位扩充。
采用多个芯片在地址方向上进行扩充,称为地址扩充或字扩充。
用SRAM2114组成32KBRAM存储区:
2片为一组,得1KB,所以组成32KB就要32组,共需要64片SRAM2114。
用DRAM4116组成32KBRAM存储区:
8片为一组,得16KB,所以组成32KB只要2组,共需要16片DRAM4116。
5.8存储芯片为什么要设置片选信号?
它与系统地址总线有哪些连接方式?
采用何种连接方式可避免地址重复?
采用哪些连接方式可节省用于译码的硬件?
片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间。
存储器片选信号通常与CPU地址总线的高位地址线相关联,可以采用“全译码”、“部分译码”、“线选译码”方式。
采用全译码方式可以避免地址重复。
采用部分或线选译码可以节省译码硬件。
5.9在一个针对存储器的译码系统中,如果有4个地址线未参与译码,那么每个存储单元会同时拥有几个地址?
理论上每个存储单元会同时拥有16个地址。
5.10解答:
p.144图5.33中4个存储芯片的可用地址范围:
6264
(1)
6264
(2)
2732
(1)
2732
(2)
00000~01FFFH
02000~03FFFH
04000~04FFFH
05000~05FFFH
40000~41FFFH
42000~43FFFH
44000~44FFFH
45000~45FFFH
80000~81FFFH
82000~83FFFH
84000~84FFFH
85000~85FFFH
C0000~C1FFFH
C2000~C3FFFH
C4000~C4FFFH
C5000~C5FFFH
重复地址由于A19A18的不定性,每片各有4段范围。
5.11采用全译码方式和6264芯片(SRAM,容量8K×
8位),在内存40000H~43FFFH区段扩充RAM,请画出这些芯片与最大组态的系统总线的连接示意图。
解:
方法为:
容量=末地址-首地址+1=214=16KB,所以要2片6264芯片。
A12~A0为片内地址,A15~A13作片选译码的输入CBA,
A19~A16
A15~A13
A12~A0
地址范围
1
2
0100
000
001
全0~全1
40000H~41FFFH
42000H~43FFFH
5.13采用3:
8译码器74LS138和2764芯片(EPROM,8K×
8位),通过全译码方式在8088系统的地址最高端组成32KB的ROM区,请画出各2764芯片与8088最大组态下形成的线条总线的连接示意图。
注意地址最高端组成32KB的ROM区,意味着地址范围是F8000H~FFFFFH,这样最高五根地址线A19~A15上要全为1。
2764芯片的片内地址是13根即A12~A0,它们是全0到全1变化;
现在需要4片来构成32KB存储区,采用3:
8译码器的话,A15~A13应该取后4种情况,即取100~111分别产生Y4~Y7。
其余地址线可以以多种方式组合产生控制信号。
3
4
1111
100
101
110
111
F8000H~F9FFFH
FA000H~FBFFFH
FC000H~FDFFFH
FE000H~FFFFFH
考虑:
如果要求地址从低端开始的话,高5位全0,即00000H~07FFFH,如何连接?
5.16
访问的局部性原则
——P122第1行。
高速缓存和虚拟存储的目的
——p121下部。
=======================
6.1在80x86系统中,I/O端口的地址采用独立编码方式,访问端口时要使用专门的I/O指令,有2种寻址方式,其具体形式是:
直接寻址和DX间接寻址。
6.2一般的I/O接口电路安排有哪三类寄存器?
他们各自的作用是什么?
(参见p.154)
⑴数据寄存器
保存外设给CPU和CPU发往外设的数据。
⑵状态寄存器
保存外设或接口电路的状态。
⑶控制寄存器
保存CPU给外设或接口电路的命令。
6.4
K0单独按下:
输入0FEH,控制L0—〉L7依次循环亮灯,
K1单独按下:
输入0FDH,控制L7—〉L0反向依次循环亮灯,
程序流程略。
BEG:
MOVDX,8000H
LOP0:
INAL,DX
MOVBL,AL
MOVCX,8;
循环次数
CMPAL,0FEH;
测试是否K0单独按下
JZLOP1
CMPAL,0FDH;
测试是否K1单独按下
JZLOP2
JMPLOP0
;
LOP1:
ROLBL,1;
利用AL初值作为开始位置
MOVAL,BL
NOTAL;
因为有反相器LS06
OUTDX,AL
CALLDELAY
LOOPLOP1
LOP2:
RORBL,1;
LOOPLOP2
6.5数据口地址为FFE0H,状态口地址为FFE2H,当状态标志D0=1时输入数据就绪,编写查询方式进行数据传送程序,读入100个字节,写到2000H:
2000H开始的内存中。
(程序格式参见p.63~64)
.CODE
MOVAX,2000H
MOVDS,AX;
段地址
MOVBX,AX;
MOVCX,100
NEXT:
MOVDX,0FFE2H
STATUS:
INAL,DX;
读入状态
TESTAL,01H
JZSTATUS
DECDX
DECDX;
数据口地址
INAL,DX
MOV[BX],AL
INCBX
LOOPNEXT
MOVAX,4C00H;
结束
INT21H
6.6某字符输出设备,其数据端口和状态端口的地址均为80H。
在读取状态时,当标志位D7为0时表明该设备闲,可以接收一个字符。
请编写采用查询方式进行数据传送的程序段,要求将存放于符号地址ADDR处的一串字符(以$为结束标志)输出给该设备,注意在程序中加上注释。
参考答案一:
movbx,offsetaddr
again:
movah,[bx];
取一个字节的字符码
cmpah,’$’
jzdone
status:
inal,80h;
查询一次
testal,80h
jnzstatus
moval,ah
out80h,al;
输出一个字节
incbx
jmpagain;
循环
done:
……
参考答案二:
.DATA
addrDB‘xx……xx$’
.CODE
MOVAX,@DATA
MOVDS,AX
LEABX,addr
Status:
INAL,80H;
读入状态,ifD7=1,为负数
CMPAL,0;
或ROLAL,1
JSStatus;
JCSTATUS
MOVAL,[BX]
CMPAL,‘$’
JZendof
OUT80H,AL
INCBX
JMPStatus
Endof:
MOVAX,4C00H
INT21H
6.7以可屏蔽中断为例,说明一次完整的中断过程主要包括那些环节?
8088响应可屏蔽中断请求时需要先满足那些前提条件?
中断过程的主要环节:
(参见p.165)
中断请求、中断响应、关中断、断点保护、中断源识别、现场保护、中断服务、恢复现场、开中断、中断返回。
8088响应可屏蔽中断请求时需要先满足:
中断允许——IF=1。
当前指令执行完毕。
6.8什么是中断源?
为什么要设立中断优先权?
什么是中断嵌套?
何种情况下程序可能发生中断嵌套?
中断源:
计算机系统中引起中断的事件或原因。
当多个中断源同时请求时,CPU需要利用中断优先权决定首先响应哪一个;
当一个中断正在服务时,又发生了新的中断请求,CPU需要利用中断优先权确定后者是否优先权更高,以便实现中断嵌套。
中断嵌套:
当一个中断服务时CPU又响应新的中断请求就形成中断嵌套。
CPU允许中断(开中断)、新的中断请求比正在服务的中断优先权更高,通常发生中断嵌套。
6.9参见P.167流程
MOVDX,8001H
INAL,DX
JZNEXT1;
D0未置1则转测下一位
CALLPROC0
JMPSTATUS
NEXT1:
TESTAL,02H
JZNEXT2
CALLPROC1
NEXT2:
TESTAL,04H
JZNEXT3
CALLPROC2
NEXT3:
TESTAL,08H
CALLPROC3
6.10DMA的意思是直接存储器存取,主要用于高速外设和内存间的数据传送。
进行DMA传送的一般过程是:
外设先向DMA控制器提出DMA传送请求,DMA控制器通过HOLD信号有效向CPU提出总线请求,CPU回以HLDA信号有效表示响应。
此时CPU的三态信号线将输出高阻状态,即将它们交由DMAC(DMA控制器)进行控制,完成外设和内存间的直接数据传送。
==================
7.7假如某并行总线的数据宽度为32位,工作频率为100MHz,若2个时钟周期传送一次数据,其传输速率是多少?
如果在时钟的前后沿各传送一次数据,其传输速率是多少?
如果采用2-1-1-1的突发传送模式,其平均传输速率是多少?
f=100MHz,则时钟周期T=1/f=10ns
1)2T一次的传输速率,即频率减半:
fd=(32/8)*100/2M=200MB/s
或fd=(32/8)/(2*10ns)=200MB/s
2)前后沿各传送一次,即频率加倍:
fd=(32/8)*200M=800MB/s
或即1T2次:
fd=(32/8)/(10/2ns)=800MB/s
3)采用2-1-1-1的突发传送模式,平均为5T4次:
fd=(32/8)/(5*10ns/4)=320MB/s
8.18088CPU具有哪些中断类型?
各种中断如何产生,如何得到中断向量号?
参见p.191、p.192~193
8.28088中断向量表的作用是什么?
(参见p.194)
它是中断向量号到对应的中断服务程序入口地址的链接表。
通过中断向量号n,可以读取中断向量表的物理地址为n*4开始的单元,获取中断服务程序的入口地址(即中断向量),长度4个字节。
8.3说明程序段的功能:
(程序略,见p.212上)
此段程序将中断服务程序intproc的入口地址写入中断向量表的80h*4开始的单元中。
(stows是数据串传送指令,参见p.78。
(实际上可以使用指令序列:
movax,segintproc
movds,ax
movdx,offsetintproc
movax,2580h
int21h来完成相同功能)
8.48259A中IRR、IMR和ISR三个寄存器的作用是什么?
(参见p.196~197)
•中断请求寄存器IRR
–保存8条外界中断请求信号IR0~IR7的请求状态
–Di位为1表示IRi引脚有中断请求;
为0表示无请求
•中断服务寄存器ISR
–保存正在被8259A服务着的中断状态
–Di位为1表示IRi中断正在服务中;
为0表示没有被服务
•中断屏蔽寄存器IMR
–保存对中断请求信号IR的屏蔽状态
–Di位为1表示IRi中断被屏蔽(禁止);
为0表示允许
8.5PC/XT对8259A的初始化程序如下:
moval,13h;
00010011
out20h,al;
ICW1
moval,08h;
00001000
out21h,al;
ICW2
moval,09h;
00001001
ICW4
请说明其设定的工作方式?
从第一个写指令ICW1,看出是边沿触发、单片方式,有ICW4;
第二个写指令ICW2为中断向量08h;
第三个写指令ICW4中断方式字,表示普通全嵌套、数据线缓冲方式,从片、非自动中断结束、16位微处理器。
8.6某时刻8259A的IRR内容是08h,说明只有引脚IR3上有中断请求。
某时刻8259A的ISR内容为08h,说明只有IR3上的请求正在被CPU服务。
在两片8259A级联的中断电路中,主片的第5级IR5接从片的中断请求输入,则初始化主、从片时ICW3的控制字分别是20H和05H。
(分别是00100000和00000101)
8.78259A仅占用两个I/O端口地址,它是如何区别4条ICW命令和3条OCW命令的?
首先ICW1、OCW2和OCW3占用的I/O端口为低位地址,即A0为0,其余的初始化命令字和控制命令字的A0都为1,所以把ICW1、OCW2和OCW3与别的初始化命令字和控制命令字区别开来;
而ICW1的D4=1,OCW2的D4D3=00,OCW3的D4D3=01所以可以区分开ICW1、OCW2和OCW3;
又知道ICW1是初始化时写入的第一个命令字,紧接着写入的应该是ICW2、ICW3,又ICW1的最低位指定了初始化时是否写入ICW4,所以这些初始化命令字就可以区分开来了。
当初始化完成后工作期间,3个操作命令字是这样区分的:
OCW1占用的I/O端口为高位地址,OCW2和OCW3占用的为低位地址,所以OCW2和OCW3可以和OCW1区分开;
而OCW2和OCW3的D3位不同,所以二者又被区分开。
8.8题略p.212。
根据题意:
SFNM=0,AEOI=0,LTIM=0,ICW1=00010011,ICW2=90H,ICW4=0000x101,初始化8086所接的8259A中断控制器:
MOVDX,0FFDCH;
对应20H端口
MOVAL,13H
OUTDX,AL
MOVDX,0FFDEH;
对应21H端口
MOVAL,90H
MOVAL,05H
8.108259A的中断请求有哪两种触发方式,它们分别对请求信号有什么要求?
PC系列机中采用哪种方式?
上跳沿触发,要求克服噪音尖峰。
高电平触发,请求及时撤销请求信号。
PC系列机采用上升沿方式。
8.11解答:
0bh=00001011b,写OCW3,接下来要读的是ISR,中断服务寄存器。
8.12解答:
0bch=10111100b,21H写OCW1即IMR,结果是只允许IR0、IR1、IR6中断,其他中断被屏蔽。
8.14中断服务程序