《微机原理与接口》习题及参考答案 周明德第五版.docx
《《微机原理与接口》习题及参考答案 周明德第五版.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口》习题及参考答案 周明德第五版.docx(18页珍藏版)》请在冰豆网上搜索。
《微机原理与接口》习题及参考答案周明德第五版
《微机原理与接口》课程习题及参考答案
2012年秋季
第一章习题(教材P29)作业1
1.1微处理器、微型计算机和微型计算机系统三者之间有什么不同?
【解】把CPU(运算器和控制器)集成在一个芯片上,即为微处理器。
微处理器加上部分存储器和外设(或外设接口)就构成了微型计算机。
微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成微型计算机系统。
1.2CPU在内部结构上由哪几部分组成?
CPU应该具备哪些主要功能?
【解】CPU主要由算术逻辑单元、指令寄存器、指令译码器、可编程逻辑阵列、寄存器组、标志寄存器等组成。
CPU主要功能是进行算术逻辑运算,以及控制计算机按照程序的规定自动运行。
1.3微型计算机采用总线结构有什么优点?
【解】采用总线结构,扩大了数据传送的灵活性,减少了连线;而且总线可以标准化,易于兼容和工业化生产。
1.4数据总线和地址总线在结构上有什么不同之处?
如果一个系统的数据和地址合用一组总线或者合用部分总线,那么要靠什么来区分地址和数据?
【解】数据总线是双向的,地址总线是单向的。
采用数据和地址线复用,主要靠信号的时序来区分。
通常在读写数据时,在复用的总线上先输出地址信息,然后再传送数据。
第二章习题(教材P43)作业2
2.98086的基本程序执行寄存器是由哪些寄存器组成的?
【解】8086的基本程序执行寄存器组成如下:
⑴8个通用寄存器:
可用于存放操作数和指针。
⑵4个段寄存器:
保存段基值(或段选择子)。
⑶1个标志寄存器:
保存状态位和控制标志位。
⑷1个指令指针寄存器:
存放下一条要执行的指令的指针。
2.13如何形成指令中的各种条件码?
【解】指令中的条件码,即标志寄存器中的状态标志。
它们主要由算术和逻辑运算指令设置或清除。
也有设置和清除某些状态标志位的专用指令。
2.16段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?
【解】指令的物理地址=1200H×16+FF00H=21F00H
2.178086微处理器的执行部件有什么功能?
由哪几部分组成?
【解】8086微处理器的执行部件负责指令的执行。
它主要由算术逻辑单元、标志寄存器和通用寄存器等部分组成。
第三章习题1(教材P87)作业3
3.118086汇编语言指令的寻址方式有哪几类?
哪一种寻址方式的指令执行速度最快?
【解】寻址方式分为:
立即数寻址、寄存器寻址和存储器寻址方式。
其中,寄存器寻址方式的指令执行速度最快。
3.12在直接寻址方式中,一般只指出操作数的偏移地址,那么段地址如何确定?
如果要用某个段寄存器指出段地址,在指令中应该如何表示?
【解】默认的数据访问,操作数在DS段;堆栈操作数在SS段;串操作的源操作数(SI)在DS段,目的操作数(DI)在ES段。
如果要显式地指定段地址,则在操作数中规定段寄存器(段超越)。
例如:
MOVAX,ES:
[1000H]
3.13在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何确定段地址?
【解】根据所使用的寄存器,隐含地规定了默认的段寄存器。
IP:
默认CS段;SP、BP:
默认SS段;AX、BX、CX、DX、SI、DI:
默认DS段。
允许段超越,例如:
MOVES:
[BX],AX
第三章习题2(教材P86~P87)作业4
3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。
(1)MOVSI,300(3)ADDAX,[BX][SI]
【解】
(1)SOPD是立即数寻址,DOPD是寄存器寻址。
(3)SOPD是基址加变址寻址,DOPD是寄存器寻址。
3.2试述指令MOVAX,2000H和MOVAX,DS:
[2000H]的区别。
【解】前一条指令是立即数寻址,即将立即数2000H送至AX;后一条指令是存储器直接寻址,是将存储器DS:
[2000H]单元中的内容送至AX。
3.4判断下列指令书写是否正确。
(1)MOVAL,BX(4)MOV5,AL
【解】
(1)不正确,AL与BX数据宽度不同
(4)不正确,立即数不能作为目的操作数。
3.5设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H,试问:
(1)执行指令PUSHAX后,SP的值是多少?
(2)再执行PUSHBX及POPAX后,SP、AX和BX的值是多少?
【解】
(1)SP=0FFEH
(2)SP=0FFEH,AX=3000H,BX=3000H
3.8用两种方法写出从80H端口读入信息的指令,再用两种方法写出从40H端口输出100H的指令。
【解】从80H端口读入信息的两种分法:
(1)INAL,80H
(2)MOVDX,80H
INAL,DX
从40H端口输出100H的两种分法:
(1)MOVAX,100H
(2)MOVAX,100H
OUT40H,AXMOVDX,40H
OUTDX,AX
第三章习题3(教材P88~P89)作业5
3.23两种循环移位指令(带CF的和不带CF的)在执行操作时,有什么区别?
在编制乘、除法程序时,为什么常用移位指令来代替乘、除法指令?
试编写一个程序段,实现将BX中的数乘以10,结果仍放在BX中的操作。
【解】两种指令的区别在于是否把标志位的值放入循环中。
左移1位相当于乘2,右移1位除2。
故左移和右移可实现乘2和除2的幂,且移位指令比乘除指令快得多。
BX×10=BX×2+BX×8=BX×2+BX×23
SHLBX,1
MOVAX,BX;AX=BX×2
SHLBX,1;BX×4
SHLBX,1;BX×8
ADDBX,AX;BX=BX×8+BX×2=BX×10
3.25用串操作指令设计实现如下功能的程序段:
首先将100H个数从2170H处转移到1000H处;然后,从中搜索出与AL中字符相等的单元,并将此单元的值换成空格符。
【解】
MOVSI,2170H
MOVDI,1000H
MOVCX,100H
CLD
REPMOVSB
MOVDI,1000H
MOVCX,100H
MOVAL,‘*’
NEXT:
SCASB
JZN1
LOOPNEXT
HLT
N1:
MOV[DI-1],20H
JMPNEXT
HLT
3.26在使用条件转移指令时,特别要注意它们均为相对转移指令,请解释“相对转移”的含义。
如果要向较远的地方进行条件转移,那么程序中应该怎样设置?
【解】相对转移即为相对于指令指针的转移。
通常,偏移量是8位数,是短转移;要向较远的地方进行条件转移,可以先转到附近,再无条件转向目的地。
3.29在执行中断返回指令IRET和普通子程序返回指令RET时,具体操作内容有什么不同?
【解】IRET除了弹出中断要返回的地址(CS和IP)外,还要恢复中断前的标志寄存器。
第四章习题1(教材P142~P143)作业6
4.1在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:
MOVAL,10H;AL=01H
MOVCX,1000H;CX=1000H
MOVBX,2000H;BX=2000H
MOV[CX],AL;(1000H)=10H
XCHGCX,BX;BX=1000H,CX=2000H
MOVDH,[BX];DH=10H
MOVDL,01H;DL=01H
XCHGCX,BX;BX=2000H,CX=1000H
MOV[BX],DL;(2000H)=01H
HLT
【解】AL=10H;BX=2000H;CX=1000H;DX=1001H;
(1000H)=10H;(2000H)=01H
4.4利用变址寄存器,编写一段程序,把自1000H单元开始的100个数传送到自1070H开始的存储区中。
【解】
MOVSI,1000H
MOVDI,1070H
MOVCX,100
CLD
REPMOVSB
HLT
4.10把在题4.7中指定的数据块中的正数传送到自1000H开始的存储区;而把其中的负数传送到自1100H开始的存储区。
分别统计正数和负数的个数,分别存入1200H和1201H单元中。
【解】
MOVSI,0500H
MOVDI,1000H
MOVBX,1070H
MOVCX,100
MOVDX,0
N1:
MOVAL,[SI]
TESTAL,8000H;测试符号位
JNZN2
MOV[DI],AL
INCDL;正数的个数计数
INCSI
INCDI
JMPN3
N2:
MOV[BX],AL
INCDH;负数的个数计数
INCSI
INCBX
N3:
LOOPN1
MOV[1200H],DX
HLT
4.11自0500H单元开始,有10个无符号数,编写一个程序,求这10个数的和(用8位数运算指令),把和放到050AH及050BH单元中(和用两个字节表示),且高位在050B单元。
【解】
MOVBX,0500H
MOVAX,0
MOVCL,10
N1:
MOVDL,[BX]
ADDAL,DL
ADCAH,0
INCBX
DECCL
JNZN1
MOV[050AH],AX
HLT
第四章习题2(教材P143~P144)作业7
4.18在0100H单元和010AH单元开始,存放两个各为10个字节的BCD数(地址最低处放的是最低字节),求它们的和,且把和存入0114H开始的存储单元中。
【解】
LEASI,[0100H]
LEADI,[0114H]
CLC
MOVCL,10
N1:
MOVAL,[SI]
MOVBL,[SI+10]
ADCAL,BL
DAA
MOV[DI],AL
INCSI
INCDI
DECCL
JNZN1
4.28若从0200H单元开始有100个数,编写一个程序检查这些数,正数保持不变,负数都取补后送回。
【解】
LEABX,[0200H]
MOVCX,100
CHE:
MOVAL,[BX]
ANDAL,AL
JSMINUS
INCBX
JMPL1
MINUS:
NEGAL
MOV[BX],AL
INCBX
L1:
LOOPCHE
HLT
4.37若自0500H单元开始有1000个带符号数,把它们的最小值找出来,并且放在1000H单元中。
【解】
LEABX,[0500H]
MOVAX,[BX]
INCBX
INCBX
MOVCX,999
AGAIN:
CMPAX,[BX]
JLNEXT
MOVAX,[BX]
NEXT:
INCBX
INCBX
LOOPAGAIN
MOV[1000H],AX
HLT
第五章习题(教材P173)作业8
5.1总线周期的含义是什么?
8086/8088CPU的基本总线周期由几个时钟周期组成?
如果一个CPU的时钟频率为8MHz,那么,它的时钟周期是多少?
一个基本总线周期是多少?
如果主频为5MHz呢?
【解】CPU访问总线(对内存单元或I/O端口读/写一个字节或字)所需的时间称为总线周期。
8086/8088CPU的基本总线周期由4个时钟周期组成。
主频为8MHz时,时钟周期为1/8MHz=125ns,一个基本总线周期为500ns;
主频为5MHz时,时钟周期为1/8MHz=200ns,一个基本总线周期为800ns。
5.2在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?
什么情况下需要插入等待状态Tw?
Tw在哪儿插入?
怎样插入?
【解】以存储器读为例说明:
T1状态:
输出地址、地址锁存、内存和I/O端口访问控制信号等;
T2状态:
CPU开始数据传送操作,将地址/数据复用线切换为传输数据状态,由总线控制器发出相应的读写控制信号及数据使能信号;同时将高端地址/状态复用线切换为状态线,输出状态信息,指示具体操作;
T3状态:
其时钟下降沿采样READY信号,若READY有效,则进入T4状态;若READY无效,则插入等待状态Tw,并在Tw的下降沿继续采样READY信号直到READY有效,转入T4状态;
T4状态:
CPU完成数据传输,状态信号变为无操作的过渡状态,结束总线周期。
CPU访问慢速的内存或I/O端口时,不能在基本总线周期内完成数据传输,需要插入等待状态Tw,在T3状态对READY信号采样,READY无效时插入Tw。
5.38086CPU和8088CPU是怎样解决地址线和数据线的复用问题的?
ALE#信号何时处于有效电平
【解】8086/8088CPU利用分时时序信号解决地址线和数据线的复用问题。
在总线周期的T1状态在复用线上输出地址信号及地址锁存信号ALE#,供外部电路锁存地址信息;从T2状态开始将复用线切换为数据状态,用于传送数据。
第六章习题(教材P206~208)作业9
6.1若有一单板机,具有用8片2114芯片构成的4KBRAM,连线如图6-1所示。
若以每1KBRAM作为一组,则此4组RAM的基本地址是什么?
地址有没有重叠区?
每一组的地址范围为多少?
【解】
4组RAM的基本地址为:
000H~3FFH(1024个字节)
地址有重叠区(每组16KB,实际占用1KB,重叠区有15KB)
地址线A13~A10不连接时(即A13~A10=XXXXB):
第一组的地址范围:
0000H~3FFFH
第二组的地址范围:
4000H~7FFFH
第三组的地址范围:
8000H~BFFFH
第四组的地址范围:
C000H~FFFFH
地址线A13~A10译码为全0时(即A13~A10=0000B):
第一组的地址范围:
0000H~03FFH
第二组的地址范围:
4000H~43FFH
第三组的地址范围:
8000H~83FFH
第四组的地址范围:
C000H~C3FFH
6.4若要扩充1KBRAM(用2114芯片),规定地址为8000H~83FFH,地址线应该如何连接?
【解】扩充1KBRAM至规定的地址8000H~83FFH,其地址线的低10位地址A9~A0直接连接2114芯片,高6位地址A15~A10置为100000B。
第七章习题(教材P235~237)作业10
7.1外部设备为什么要通过接口电路和主机系统连接?
【解】外设这类多,传输信息可能是数字量或模拟量,且传输速度、时序、电平、功率等与CPU不兼容,通常需要接口电路完成两者之间的转换与匹配。
7.5什么叫端口?
通常有哪几类端口?
计算机对I/O端口编址时通常采用哪两种方法?
在8086/8088系统中,用哪种方法对I/O端口进行编址?
【解】端口是信息输入或输出的通路;通常有数据端口、状态端口和控制端口等。
在计算机中用地址来区分不同的端口,采用两种编址方法:
存储器对应的(存储器映像方式)和端口寻址的输入输出方式(隔离I/O方式)。
8086/8088系统中,采用隔离I/O方式。
7.7CPU和外设之间的数据传输方式有哪几种?
实际选择某种传输方式时,主要依据是什么?
【解】CPU与外设之间的数据传送方式主要有三种:
查询传送方式、中断传送方式和直接数据通道(DMA)传送方式。
具体采用哪种传送方式,主要依据数据传送的速度和数量。
外设速度较慢或要求实时处理时,可采用中断传送方式;外设速度与CPU相当时,可采用查询传送方式;要求传送速度块且是批量传送时,采用DMA传送方式。
7.10查询方式有什么优缺点?
中断传送方式为什么能弥补查询传送方式的缺点?
【解】采用查询传送方式,CPU在外设有无数据时都要不断查询状态信息,判断是否可以传送数据,优点是简单、可靠;缺点是效率低、速度慢。
中断传送方式只有在外设准备就绪后,需要传送数据时,才发出中断申请,CPU转入中断服务程序实现数据传送,CPU的工作效率高。
7.17试说明在DMA方式时由内存向外设传输数据的过程。
【解】当CPU响应DMA请求发出HLDA信号后,DMA控制器获得总线控制权,向地址线发内存地址,同时发读写控制信号,把内存读出的数据输出至外设。
然后判断是否已经传送完毕。
若未完,修改内存地址,重复输出过程,直至输出完成,撤销DMA请求,交还总线控制权给CPU。
第八章习题(教材P263~264)作业11
8.1在中断响应过程中,8086CPU向8259A发出的两个INTA#信号分别起什么作用?
【解】8086发出的第一个INTA#信号告知8259A中断申请已被响应,8259A接到信号后,把当前中断优先权最高的中断申请置入中断服务寄存器ISR,并将中断申请寄存器IRR中的对应为清零,同时准备好该中断的中断类型号;8259A在8086发出的第二个INTA#信号期间将中断类型号放在数据总线上。
8.4什么叫中断向量?
它如何产生?
如果1CH的中断处理子程序从5110H:
2030H开始,则中断向量表应如何存放?
【解】中断向量就是中断服务程序的入口地址,所有的中断向量存放在内存空间的最低1KB区域(中断向量表);通过CPU执行指令时(软件中断)和响应外部中断时获得的中断类型号,寻址中断向量表获得中断向量。
中断类型号为1CH的中断向量表地址=1CH×4=70H,低字存放IP值,高字存放CS值,即:
(0070H)=30H,(0071H)=20H,(0072H)=10H,(0073H)=51H。
8.7简述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部6个单元中是什么内容?
【解】CPU响应可屏蔽中断的过程如下:
①获取中断类型号N;②标志寄存器入栈;③清除IF、TF(关中断、禁止单步);④断点处IP入栈;⑤断点处CS入栈;⑥取内存单元(0:
N×4)字内容送IP;⑦取内存单元(0:
N×4+2)字内容送CS,转去执行中断服务程序(保护现场→开中断→服务程序主体→关中断→恢复现场→开中断→IRET返回)。
CPU响应可屏蔽中断后,堆栈顶部6个单元中的内容从高到低依次为:
标志寄存器、断点IP值和CS值。
8.218086CPU有哪几种中断?
哪些是硬件中断?
哪些是软件中断?
【解】8086CPU有两类中断:
1、软件中断(内部中断),由指令的执行所引起的(如:
除法错、INT指令、INTO指令和单步执行等);2、硬件中断(外部中断),由外部的事件所引起的(如:
非屏蔽中断NMI、可屏蔽中断INTR)。
8.248259A的中断屏蔽寄存器IMR和8086/8088CPU的中断允许标志IF有什么差别?
在中断响应过程中,它们怎样配合工作?
【解】中断允许标志IF用于确定允许或禁止外部可屏蔽中断,是一个总的屏蔽位,管控所有的外部可屏蔽中断的请求。
外部可屏蔽中断引脚INTR通过中断控制器8259A可接受多个外部中断源的请求,8259A针对8个中断源设置的中断屏蔽寄存器IMR均有单独对应的中断屏蔽位,增大了灵活性。
只有当IF=1且某中断源对应的屏蔽位为零时,中断源的申请才可能被响应。
第九章习题(教材P274)作业12
9.2计数器/定时器8253有哪几种工作方式?
各有何特点?
其用途如何?
【解】计数器/定时器8253有以下6种工作方式:
方式0:
计数结束中断方式,计数结束时产生一个正跳变的中断请求信号,常用于事件计数功能,且只计数一次;
方式1:
硬件可重触发单脉冲方式,触发后可产生一个宽度为n个时钟周期的负脉冲,常用作门控信号;
方式2:
速率波发生器方式,产生n次分频的周期信号,且低电平时只有一个时钟周期宽度,可用作一般分频功能;
方式3:
方波速率发生器方式,产生n次分频的方波或近似方波的周期信号,可用作一般分频功能,常用于产生波特率时钟信号;
方式4:
软件触发选通方式,在门控信号有效时,写入一次计数初值,延迟n个时钟周期产生一个单周期负脉冲,仅一次有效;
方式5:
硬件件触发选通方式,在写入计数初值后,门控信号每产生一个上跳沿,
延迟n个时钟周期产生一个单周期负脉冲,仅一次有效。
9.4若已有一频率发生器,其频率为1MHz,若要求通过计数器/定时器8253,产生每秒一次的信号,8253应如何连接?
编写出初始化程序。
【解】1MHz信号分频1000000次产生1Hz信号,一个计数通道最大的分频系数为65536,需采用两个通道级联进行分频,每个通道各分频1000次(计数初值1000=03E8H)。
采用通道0和通道1级联,均工作在方式2,二进制计数,初始化程序段如下:
MOVAL,34H
OUTPORT3,AL;PORT3为控制口地址
MOVAL,0E8H
OUTPORT0,AL;PORT0为通道0端口地址
MOVAL,03H
OUTPORT0,AL
MOVAL,74H
OUTPORT3,AL;PORT3为控制口地址
MOVAL,0E8H
OUTPORT1,AL;PORT1为通道1端口地址
MOVAL,03H
OUTPORT1,AL
第十章习题(教材P293~294)作业13
10.3在输入过程和输出过程中,并行接口分别起什么作用?
【解】在输入过程中:
并行接口主要起输入数据的缓冲或锁存作用,并产生相应的应答控制信号;在输出过程中:
并行接口主要起输出数据的锁存作用,并产生相应的应答控制信号
10.6可编程并行接口8255A的方式选择控制字和置1/置0控制字都是写入控制端口的,那么,它们又是由什么来区分的?
【解】用控制字的最高位区分:
D7=1时,写入的是方式控制字;D7=0时,写入的是按位置位/复位字。
10.8设置8255A工作方式,8255A的控制端口地址为00C6H。
要求端口A工作在方式1,输入;端口B工作在方式0,输出;端口C的高4位配合端口A工作,低4位为输入。
【解】根据题意,方式控制字为:
10110001B,编程语句为:
MOVAL,0B1H;MOVAL,0B9H亦可
OUT0C6H,AL
10.9设可编程并行接口芯片8255A的4个端口地址为00C0H、00C2H、00C4H、00C6H,要求用置0/置1方式对PC6置1,PC4置0。
【解】C口的置0/置1的功能是通过控制口实现的。
PC6的置1控制字为:
00001101B;PC4的置0控制字为:
00001000B。
编程语句如下:
MOVAL,0DH
OUT0C6H,AL
MOVAL,08H
OUT0C6H,AL
第十一章习题(教材P310~311)作业14
名(有名)(出名)(名字)(成名)(名气)11.1为什么串行接口部件中的4个寄存器可以1位地址进行区分?
一(座)房一(个)苹果一(片)树叶一(群)鸭子【解】串行接口部件中有两类端口:
控制端口(控制字和状态字)和数据端口,可用1位地址加以区分,而控制端口的控制字输出和状态字输入以及数据端口的发送和接收可用读或写操作控制。
11.6设异步传输时,每个字符对应1位起始位、7位信息位、1位奇/偶校验位和1位停止位,如果波特率为9600,则每秒钟能传输的最大字符数是多少?
美丽的鲜花美丽的春天美丽的孔雀【解】因为每个字符帧的总位数=1+7+1+1=10位,波特率为:
9600(