《微机原理与接口技术》洪永强习题答案.docx
《《微机原理与接口技术》洪永强习题答案.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》洪永强习题答案.docx(100页珍藏版)》请在冰豆网上搜索。
《微机原理与接口技术》洪永强习题答案
....
《微机原理与接口技术》
—习题及参考答案
与洪永强编著的教材配套使用
2008年9月2日
参考
....
第1章微型计算机概述1
第2章微处理器2
第3章寻址方式和指令系统5
第4章汇编语言程序设计10
第5章输入输出接口13
第6章存储器14
第7章中断系统16
第8章计数器/定时器与DMA控制器22
第9章并行接口与串行接口24
第10章总线28
第11章模拟量输入/输出通道接口30
第12章人机交互设备及其接口32
0.1下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1)(-85)+76
(2)85+(-76)(3)85-76
(4)85-(-76)(5)(-85)-76(6)-85-(-76)
答:
(1)(-85)+76=10101011B+01001100B=11110111B=0F7H;CF=0;OF=0
(2)85+(-76)=01010101B+10110100B=00001001B=09H;CF=1;OF=0
(3)85-76=01010101B-01001100B=01010101B+10110100B=00001001B=09H;CF=0;OF=0
(4)85-(-76)=01010101B-10110100B=01010101B+01001100B=10100001B=0A1H;
CF=0;OF=1
(5)(-85)-76=10101011B-01001100B=10101011B+10110100B=01011111B=5FH;CF=0;OF=1
(6)
-85-(-76)=10101011B-10110100B=10101011B+01001100B=11110111B=0F7H;CF=0;OF=0
参考
....
第1章微型计算机概述
1.1微型计算机的发展经历了哪几个时代?
每个时代有哪些主要特点?
1.2简述Pentium4微处理器的处理能力。
1.3冯·诺依曼计算机的结构特点是什么?
答:
(1)、由运算器、控制器、存储器、输入设备和输出设备五大部分组成。
(2)、数据和程序以二进制代码形式不加区别地存放在存储器中,存放位置由地址指定,地址码也为二进制。
(3)、控制器是根据存放在存储器中的指令序列及程序来工作的,并由一个程序计数器(即指令地址计数器)控制指令的执行。
控制器具有判断能力,能以计算结果为基础,选择不同的动作流程。
1.4典型微机有哪三大总线?
它们传送的是什么信息?
答:
(1)、有数据总线,地址总线和控制总线。
(2)、数据总线用来传输数据信息,是双向总线;
地址总线用于传送CPU发出的地址信息,是单向总线;
控制总线用来传送控制信号、时序信号和状态信息等。
其中有的
是CPU向内存和外设发出的信息,有的则是内存或外设向CPU发出的信息。
可见,CB中每一根线的方向是一定的、单向的,但CB作为一个整体是双向的。
1.5什么叫微处理器?
什么叫微型计算机?
什么叫微型计算机系统?
这三者有什么区别和联系?
1.6微处理器内部一般由哪些部分组成?
各部分的主要功能是什么?
1.7试用示意图说明内存单元的地址和内存单元的内容,二者有何联系和区别?
答:
示意图如有所示:
参考
....
联系:
存储单元中存放着信息,该信息可以是数据,也可以是另一单元的
地址的一部分,每个存储单元都包含着地址和内容两个部分。
都用二进制数表示,地址为无符号整数,书写格式为16进制。
区别:
地址是微机用来管理内存单元而设置的,相当于内存单元的编号;而内容是存放在各个内存单元中的二进制信息。
1.8高级语言、汇编语言、机器语言有何区别?
各有何特点?
1.9评价微型计算机性能的主要指标有哪些?
试举例说明现在市场主流机型微型计算机的性能参数。
1.10现代微型计算机的主板通常由哪些部分组成?
主板上的总线扩展插槽有何用途?
第2章微处理器
2.18086CPU从功能上分为哪两个工作部件?
每个工作部件的功能、组成和特点分别是什么?
2.28086CPU中有几个通用寄存器,有几个变址寄存器,有几个地址指针寄存器?
它们中通常哪几个寄存器可作为地址寄存器使用?
答:
(1)、有4个通用寄存器AX、BX、CX、DX,有2个变址寄存器SI、DI,
有2个地址指针寄存器SP、BP。
(1)、BX、BP、SI、DI四个寄存器可作为地址寄存器使用。
2.38086CPU的标志寄存器中有哪些标志位?
它们的含义和作用是什么?
答:
(1)、有6个状态标志位CF、OF、ZF、SF、AF、PF;3个控制标志位DF、
IF和TF。
(2)、状态信息由中央处理机根据计算机的结果自动设置,6位状态位
的意义说明如下:
OF(OverFlag)溢出标志:
带符号数计算溢出时为1;
SF(SignFlag)符号标志:
运算结果为负时为1,取最高有效位;
ZF(ZeroFlag)零标志:
运算结果是0为1;
CF(CarryFlag)进位标志:
运算结果有进位为1;
AF(AuxiliaryFlag)辅助进位标志:
第3位有进位置1(半字节);
PF(ParityFlag)奇偶进位标志:
运算结果中1的个数位为偶数置1。
(3)、控制信息由系统程序或用户程序根据需要用指令设置:
DF(DirectionFlag)方向标志:
DF为1,SI、DI减量,由高地址向低地址处理;DF为0,SI、DI增量,由低地址向高地址处理;
IF(InteruptFlag)中断标志:
IF为1时允许中断;
参考
....
TF(TrapFlag)陷阱标志(又叫跟踪标志):
每执行一条指令就引起一个内部中断。
用于单步方式操作,TF为1,指令执行完后产生陷阱,由系统控制计算机;TF为0,CPU不产生陷阱,正常工作。
2.4简述最小模式和最大模式的含义及其区别。
2.58086CPU的地址线有多少位?
其寻址范围是多少?
答:
(1)、8086CPU的地址线有20位;
(2)、其寻址范围是1MB。
2.68086CPU工作在最小模式时,
(1)当CPU访问存储器时,要利用哪些信号?
(2)当CPU访问外部设备时,要利用哪些信号?
(3)当HOLD有效并得到响应时,CPU的哪些信号是高阻?
2.7
8086CPU工作在最大模式时,S2、S1、S0在CPU访问存储器与CPU访问外
部设备时,分别是什么状态?
2.8
在8086最大模式系统中,8288总线控制器的作用是什么?
它产生哪些控制
信号?
FFFFF
FFFFE
2.9
8086采用什么方式管理内存?
1MB的内存空
FFFFD
FFFFC
间分为哪两个存储体?
它们如何与地址总线、数据总线相连?
答:
(1)、8086采用分段方式管理内存;
(2)、1MB的内存空间分为偶地址和奇地址两个存储体;
(3)、如右图所示:
5
4
3
2
1
0
A19~A1D15~D8BHED7~D0A0
高(奇)位和低(偶)位存储器条
2.10什么是段基址、偏移地址和物理地址?
它们之间有什么关系?
答:
(1)、段基址:
存储器分段时,每个段的起始地址的低4位为0,高16位为段基址,放入段寄存器中;
偏移地址:
段内某内存单元的物理地址相对于段起始地址的偏移量称
为段内偏移地址,也叫有效地址;
物理地址:
8086/8088有20条地址线,最大内存容量为1MB(220),其中任何一个内存单元都有一个唯一的20位的地址,称为内存单元的物理地址。
(2)、物理地址(PA)=段基址×10H+偏移地址(EA)
2.11对于8086,已知(DS)=1050H,(CS)=2080H,(SS)=0400H,(SP)=2000H,问:
(1)在数据段中可存放的数据最多为多少字节?
首地址和末地址各为多
少?
参考
....
(2)堆栈段中可存放多少个16位的字?
首地址和末地址各为多少?
(3)代码段最大的程序可存放多少字节?
首地址和末地址各为多少?
(4)如果先后将FLAGS、AX、BX、CX、SI和DI压入堆栈,则(SP)=?
如果此时(SP)=2300H,则原来的(SP)=?
答:
(1)、64KB;首地址为1050:
0000H,末地址为1050:
FFFFH。
(2)、1000H个16位的字;首地址为0400:
0000H,末地址为0400:
1FFEH。
(3)、64KB;首地址为2080:
0000H,末地址为2080:
FFFFH。
(4)、(SP)=1FF4H;原来的(SP)=230CH
2.12(3)、如右图所示:
对于8086,当(CS)=2020H时,物理地址为24200H,则当(CS)=6520H时,物理地址应转移到什么地方?
2.13什么是总线周期?
什么是时钟周期?
一个典型的总线周期最小包括几个时钟周期?
什么情况下需要插入等待周期TW?
答:
(1)、总线周期:
总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。
(2)、时钟周期:
CPU输入的CLK时钟信号。
(3)、4。
(4)、当被写入数据或者被读取数据的外设或存储器不能及时地配合
CPU传送数据。
这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好的信号”,于是CPU会在T3之后插入一个或多个附加的时钟周期TW。
2.14总线周期中每个T状态的具体任务是什么?
2.15试画出8086最小模式下将内存单元50326H的内容55H读入AL的时序图。
2.1680386CPU的主要特点是什么?
2.1780386CPU包含哪些寄存器?
各有什么主要用途?
2.18什么是实地址方式?
什么是保护虚拟地址方式?
什么是虚拟8086方式?
它们各有什么特点?
2.1980386CPU中,选择符中3个字段的名字分别叫什么?
大小各是多少?
各有什么作用?
2.20一个段描述符中有几个字节?
试说明其中每个字段的含义与作用?
2.2180386的地址空间可映射到多少页?
页有多大?
2.22页转换产生的线性地址的3部分各是什么?
2.23简述Pentium的主要结构特点。
参考
....
2.24Pentium内部结构的主要特点有哪些?
什么是超标量结构?
什么是超级流水线?
2.25简述Pentium处理器中U和V两个指令流水线的特点及作用。
2.26Pentium4处理器有哪些高级特性?
第3章寻址方式和指令系统
3.1
什么叫寻址方式?
8086CPU有哪几种寻址方式?
3.2
指出下列指令中源操作数和目的操作数的寻址方式:
(1)MOV
AX,0AH
(2)ADD
[BX],DX
(3)PUSHCS
(4)POP
DS
(5)MUL
BL
(6)MOVDX,[1200H]
(7)MOVSB
(8)SUBAX,5[BP+DI]
答:
(1)、DEST为寄存器寻址,SRC为立即数寻址。
(2)、DEST为寄存器间接寻址,SRC为寄存器寻址。
(3)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。
(4)、DEST为寄存器寻址,SRC为隐含堆栈指针寄存器间接寻址。
(5)、DEST为隐含寻址,SRC为寄存器寻址。
(6)、DEST为寄存器寻址,SRC为存储器直接寻址。
(7)、DEST为附加段存储器DI隐含寻址,SRC为数据段存储器SI隐含寻址。
(串传送)
(8)、DEST为寄存器寻址,SRC为基址变址相对寻址。
3.3在直接寻址方式中,一般只指出操作数的偏移地址。
试问:
段地址如何确定?
如果要用某个段寄存器指出段地址,指令应如何表示?
答:
(1)、段地址默认为是DS的内容。
(2)、用短跨越前缀指出段地址。
指令中用“段寄存器:
”表示。
3.4当用寄存器间接寻址方式时,试问:
BX、BP、SI、DI分别在什么情况下使用?
它们的物理地址如何计算?
3.5分别指出下列指令中源操作数和目的操作数的寻址方式。
若是存储器寻址,
试写出其有效地址和物理地址。
设
(DS)=6000H,(ES)=2000H,(SS)=1500H,
(SI)=00A0H,(DI)=6010H,(BX)=0800H,(BP)=1200H,数据变量VAR为0050H。
(1)MOV
AX,3050H
(2)MOVDL,80H
(3)MOV
AX,VAR
(4)
MOVAX,VAR[BX][SI]
(5)MOV
AX,[BX+25H]
(6)
MOVDI,ES:
[BX]
(7)MOV
DX,[BP]
(8)
MOVBX,20H[BX]
参考
....
(9)ANDAX,BX(10)MOVBX,ES:
[SI]
(11)ADCAX,[BX+DI](12)PUSHDS
答:
(1)、DEST为寄存器寻址,SRC为立即数寻址。
(2)、DEST为寄存器寻址,SRC为立即数寻址。
(3)、DEST为寄存器寻址,SRC为直接寻址。
EA=0050H,PA=(DS)×10H+EA=60050H
(4)、DEST为寄存器寻址,SRC为基址变址相对寻址。
EA=0050H+0800H+00A0H=08F0H,PA=(DS)×10H+EA=608F0H
(5)、DEST为寄存器寻址,SRC为寄存器相对寻址。
EA=0800H+25H=0825H,PA=(DS)×10H+EA=60825H
(6)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=0800H,PA=(ES)×10H+EA=20800H
(7)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=1200H,PA=(SS)×10H+EA=16200H
(8)、DEST为寄存器寻址,SRC为寄存器相对寻址。
EA=20H+0800H=0820H,PA=(DS)×10H+EA=60820H
(9)、DEST为寄存器寻址,SRC为寄存器寻址。
(10)、DEST为寄存器寻址,SRC为寄存器间接寻址。
EA=00A0H,PA=(ES)×10H+EA=200A0H
(11)、DEST为寄存器寻址,SRC为基址变址寻址。
EA=0800H+6010H=6810H,PA=(DS)×10H+EA=66810H
(12)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。
EA=(SP)-2,PA=(SS)×10H+EA
3.6设堆栈指针SP的初值为2300H,(AX)=5000H,(BX)=4200H。
执行指令PUSHAX后,(SP)=?
,再执行指令PUSHBX及POPAX之后,(SP)=?
(AX)=?
(BX)=?
答:
(1)、(SP)=22FEH。
(2)、(SP)=22FEH,(AX)=4200H,(BX)=4200H。
3.7试说明指令MOVBX,15[BX]与指令LEABX,15[BX]的区别。
答:
指令MOVBX,15[BX]是读取数据段偏移地址为((BX)+0FH)的内容送到BX中。
指令LEABX,15[BX]是取该偏移地址值(BX)+0FH送到BX中。
3.8已知(DS)=2000H,有关的内存单元值为(21000H)=00H,(21001H)=12H,
(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,
(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,位移量COUNT=1200H。
执行下列指令后,寄存器AX、BX、SI的值分别是多少?
MOVBX,OFFSETCOUNT
MOVSI,[BX]
MOVAX,COUNT[SI][BX]
答:
(AX)=3040H,(BX)=1200H,(SI)=1000H。
参考
....
3.9设标志寄存器值原为0401H,AX=3272H,BX=42A2H。
执行下列减法指令SBBAL,BH之后,AX和标志寄存器的值分别是多少?
答:
(AX)=322FH,(FR)=0410H。
3.10设若标志寄存器原值为0A11H,SP=0060H,AL=4。
下列几条指令执行后,标志寄存器、AX、SP的值分别是多少?
PUSHF
LAHF
XCHGAH,AL
PUSHAX
SAHF
POPF
答:
(FR)=0411H,(AX)=0411H,(SP)=005EH。
3.11指出下列指令的错误
(1)ADDSI,CL
(2)MOV50,AL
(3)MOVCS,AX
(4)MOVDS,1234H
(5)SHLAX,05H
(6)XCHG
200,AL
(7)IN
AX,378H
(8)JNZ
BX
(9)MOVAH,CX
(10)MOV
33H,AL
(11)MOVAX,[SI][DI]
(12)MOV
[BX],[SI]
(13)ADDBYTEPTR[BP],256
(14)MOV
DATA[SI],ES:
AX
(15)JMPBYTEPTR[BX]
(16)OUT
230H,AX
(17)MOVDS,BP
(18)MUL
39H
答:
(1)、SI,CL字长不同。
(2)、DEST不能为立即数50。
(3)、DEST为CS段寄存器寻址。
(4)、立即数不能直接送段寄存器。
(5)、多次移位必须要用CL指出来。
(6)、DEST不能为立即数200(交换指令不能有立即数寻址)。
(7)、端口地址超过0FFH必须要用DX寄存器间接寻址。
(8)、条件转移指令只能用短内直接短转移寻址,不能用寄存器寻址。
(9)、AH,CX字长不同。
(10)、DEST不能为立即数33H。
(11)、SRC可为基址变址寻址。
但不能为变址变址寻址。
(12)、双操作数指令不能同时为存储器寻址方式。
(13)、字长不同:
256不是字节长度了。
(14)、段跨越前缀应放在存储器操作数或整个指令的前面。
(15)、JMP指令的寻址方式不能为字节属性。
(16)、端口地址超过0FFH必须要用DX寄存器间接寻址。
(17)、指令正确。
参考
....
(18)、8086的乘法指令不能为立即数。
3.12若内存单元DATA在数据段中偏移量为24C0H处,24C0~24C3H单元中依次存放着55H、66H、77H、88H。
下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少?
MOVAX,DATA
LEASI,DATA
MOVCL,[SI]
LDSBX,DATA
3.13条件转移指令均为相对转移指令,请解释“相对转移”含义,试问若须往较远的地方进行条件转移,该怎么办?
3.14假设(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,位移量DATA=40H(217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H。
试确定下列转移指令的转移地址。
(1)JMP2300H
(2)JMPWORDPTR[BX]
(3)JMPDWORDPTR[BX+DATA](4)JMPBX
(5)JMPDWORDPTR[BX][DI]
答:
(1)、0200H:
2300H。
CS不变
(2)、0200H:
2300H。
CS不变
(3)、9000H:
0400H
(4)、0200H:
0500HCS不变
(5)、(23DA2H):
(23DA0H)
3.15若32位二进制数存放于DX和AX中,试利用移位与循环指令实现以下操作:
(1)DX和AX中存放的无符号数,将其分别乘2除2。
(2)若DX和AX中为有符号数,将其分别乘2和除2。
答:
(1)
、SHLAX,1
;AX乘2
RCLDX,1
;DX乘2
SHRDX,1
;DX除2
RCRAX,1
;AX除2
(2)
、SALAX,1
;AX乘2
RCLDX,1
;DX乘2
SARDX,1
;DX除2
RCRAX,1
;AX除2
3.16下段程序完成什么工作?
DATX1DB300DUP(?
)
DATX2DB100DUP(?
)
MOVCX,100
MOVBX,200
MOVSI,0
参考
.
.
.
.
MOV
DI,0
NEST:
MOV
AL,DATX1[BX][SI]
MOV
DATX2[DI],AL
INC
SI
INC
DI
LOOP
NEXT
3.17执行下列指令后,AX寄存器的内容是什么?
TABLE
DW10,20,30,40,50;000AH,0014H,001EH,0028H,0032H
ENTRY
DW3
TABLE
0AH
⋯⋯
00H
MOV
BX,OFFSETTABLE
14H
ADD
BX,ENTRY
TABLE+3
00H
MOV
AX,[BX]