TJISE微机原理习题库.docx
《TJISE微机原理习题库.docx》由会员分享,可在线阅读,更多相关《TJISE微机原理习题库.docx(36页珍藏版)》请在冰豆网上搜索。
TJISE微机原理习题库
微机原理及应用习题库与答案
习题与练习题1
第1章绪论
1.计算机分那几类?
各有什么特点?
答:
传统上分为三类:
大型主机、小型机、微型机。
大型主机一般为高性能的并行处理系统,存储容量大,事物处理能力强,可为众多用户提供服务。
小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心。
微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。
2.简述微处理器、微计算机及微计算机系统三个术语的内涵。
答:
微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响。
微计算机包括微处理器、存储器、I/O接口电路及系统总线。
微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。
3.80X86微处理器有几代?
各代的名称是什么?
答:
从体系结构上可分为3代:
8080/8085:
8位机。
8086/8088/80286:
16位机。
80386/80486:
32位机。
第2章微处理器结构及微计算机的组成
1.8086是多少位的微处理器?
为什么?
答:
8086是16位的微处理器,其内部数据通路为16位,对外的数据总线也是16位。
2.8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?
答:
执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。
AX、BX、CX、DX一般作为通用数据寄存器。
SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。
总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。
段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。
IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。
3.8086对存储器的管理为什么采用分段的办法?
答:
8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围(1MB,20位地址)。
若不用分段方法,16位地址只能寻址64KB空间。
6.在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?
具体说明。
答:
逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:
0088H。
偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。
物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。
7.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。
答:
物理地址:
320F8H。
8.8086与8088的主要区别是什么?
答:
8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节。
9.8086被复位以后,有关寄存器的状态是什么?
微处理器从何处开始执行程序?
答:
标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1。
处理器从FFFFOH存储单元取指令并开始执行。
10.8086基本总线周期是如何组成的?
各状态中完成什么基本操作?
答:
基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。
在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。
11.结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号的功能。
答:
ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口“准备好”信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。
12.8086中断分哪两类?
8086可处理多少种中断?
答:
8086中断可分为硬件中断和软件中断两类。
8086可处理256种类型的中断。
13.8086可屏蔽中断请求输入线是什么?
“可屏蔽”的涵义是什么?
答:
可屏蔽中断请求输入线为INTR;“可屏蔽”是指该中断请求可经软件清除标志寄存器中IF位而被禁止。
14.8086的中断向量表如何组成?
作用是什么?
答:
把内存0段中0~3FFH区域作为中断向量表的专用存储区。
该区域存放256种中断的处理程序的入口地址,每个入口地址占用4个存储单元,分别存放入口的段地址与偏移地址。
17.8086如何响应一个可屏蔽中断请求?
简述响应过程。
答:
当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,请除IF、TF;8086将类型码乘4后得到中断向量表的入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。
18.什么是总线请求?
8086在最小工作模式下,有关总线请求的信号引脚是什么?
答:
系统中若存在多个可控制总线的主模块时,其中之一若要使用总线进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的过程。
8086在最小工作模式下有关总线请求的信号引脚是HOLD与HLDA。
19.简述在最小工作模式下,8086如何响应一个总线请求?
答:
外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程。
21.“80386是一个32位微处理器”,这句话的涵义主要指的是什么?
答:
指80386的数据总线为32位,片内寄存器和主要功能部件均为32位,片内数据通路为32位。
22.80X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?
有什么不足?
答:
好处是先前开发的软件可以在新处理器组成的系统中运行,保护了软件投资。
缺点是处理器的结构发展受到兼容的约束,为了保持兼容性增加了硅资源的开销,增加了结构的复杂性。
23.80386内部结构由哪几部分组成?
简述各部分的作用。
答:
80386内部结构由执行部件(EU)、存储器管理部件(MMU)和总线接口部件(BIU)三部分组成。
EU包括指令预取部件、指令译码部件、控制部件、运算部件及保护检测部件,主要功能是执行指令。
存储器管理部件包括分段部件、分页部件,实现对存储器的分段分页式的管理,将逻辑地址转换成物理地址。
总线接口部件作用是进行片外访问:
对存储器及I/O接口的访问、预取指令;另外的作用是进行总线及中断请求的控制
24.80386有几种存储器管理模式?
都是什么?
答:
80386有三种存储器管理模式,分别是实地址方式、保护方式和虚拟8086方式
25.在不同的存储器管理模式下,80386的段寄存器的作用是什么?
答:
在实地址方式下,段寄存器与8086相同,存放段基地址。
在保护方式下,每个段寄存器还有一个对应的64位段描述符寄存器,段寄存器作为选择器存放选择符。
在虚拟8086方式下,段寄存器的作用与8086相同。
26.试说明虚拟存储器的涵义,它与物理存储器有什么区别?
80386虚拟地址空间有多大?
答:
虚拟存储器是程序员面对的一个巨大的、可寻址的存储空间,这个空间是内存与外存联合形成的,在操作系统的管理下,程序可象访问内存一样去访问外存而获得所需数据。
物理存储器是指机器实际拥有的内存储器,不包括外存。
80386的虚拟地址空间为64TB大。
29.80386的分段部件是如何将逻辑地址变为线性地址的?
答:
分段部件根据段选择符从全局描述符表或局部描述符表中取出对应的段描述符。
把段描述符32位段基地址与逻辑地址中的32位偏移量相加就形成了线性地址。
30.80386中如何把线性地址变为物理地址?
答:
分段部件形成的32位线性地址中高10位作为寻址页目录表的偏移量,与控制寄存器CR3中页目录表基地址共同形成一个32位的地址指向页表中的一个页项,即为一个页面描述符。
该页面项中高20位作为页面基地址,线性地址的低12位为偏移量,相加后形成指向某一存储单元的32位物理地址。
若禁止分页功能,线性地址就是物理地址。
31.80386对中断如何分类?
答:
80386把中断分为外部中断和内部中断两大类,外部中断经NMI和INTR引线输入请求信号。
内部中断也叫内部异常中断,分为陷阱中断、内部故障异常中断、异常终止中断。
32.80386在保护方式下中断描述符表与8086的中断向量表有什么不同?
答:
8086工作在实地址方式,向量表是在存储器的0段中最低1024字节内存中。
80386在保护方式下要通过中断描述符表中的描述符访问虚拟空间的中断向量,中断描述符表的位置不是固定的,要由IDTR寄存器实现在虚拟空间的定位。
33.简述80386在保护方式下的中断处理过程。
答:
80386响应中断后,接收由中断源提供的类型码并将其乘8,与IDTR寄存器中基地址相加,指出中断描述符的位置,读出中断描述符,依其中的段选择符及条件决定从两个描述符表LDT或GDT中的一个得到段描述符,形成中断服务程序入口所在存储器单元的线性地址。
2.指出下列程序中的错误:
STAKSGSEGMENT
DB100DUP(?
)
STA_SGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGEND
CDSEGSEGMENT
MAINPROCFAR
START:
MOVDS,DATSEG
MOVAL,34H
ADDAL,4FH
MOVDATA,AL
STARTENDP
CDSEGENDS
END
答案:
改正后:
STAKSGSEGMENT
DB100DUP(?
)
STAKSGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGENDS
CDSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CDSEG,DS:
DTSEG,SS:
STAKSG
START:
MOVAX,DTSEG
MOVDS,AX
MOVAL,34H
ADDAL,4FH
MOVDATA1,AL
MOVAH,4CH
INT21H
MAINENDP
CDSEGENDS
ENDS
3.将下列文件类型填入空格:
(1).obj
(2).exe(3).crf(4).asm(5).lst(6).map
编辑程序输出的文件有______________________________________;
汇编程序输出的文件有______________________________________;
连接程序输出的文件有______________________________________。
答案:
编辑程序输出文件:
(4)
汇编程序输出文件:
(1),(3),(5)
连接程序输出文件:
(2),(6)
4.下列标号为什么是非法的?
(1)GET.DATA
(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM
答案:
非法标号:
(1)因为‘.’只允许是标号的第一个字符
(2)第一个字符不能为数字
(3)不允许出现‘-’
(4)不能是保留字,如助记符
(5)不能有空格
5.下面的数据项定义了多少个字节?
DATA_1DB6DUP(4DUP(0FFH))
答案:
24字节
6.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?
为什么?
DTSEGSEGMENT|DTSEGSEGMENT
ORG10H|ORG10H
DATA1DB72H|DATA1DW7204H
DB04H|DTSEGENDS
DTSEGENDS|
答案:
不一样.分别是72H,04H和04H,72H.存储字时低8位存在低字节,高8位存在高字节.
7.下面的数据项设置了多少个字节?
(1)ASC_DATADB‘1234’
(2)HEX_DATADB1234H
答案:
(1)设置了4个字节
(2)设置了2个字节
8.执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
.
.
.
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
答案:
(AX)=40
9.指出下列指令的错误:
(1)MOVAH,BX
(2)MOV[SI],[BX](3)MOVAX,[SI][DI]
(4)MOVAX,[BX][BP](5)MOV[BX],ES:
AX(6)MOVBYTEPTR[BX],1000
(7)MOVAX,OFFSET[SI](8)MOVCS,AX(9)MOVDS,BP
答案:
(1)源、目的字长不一致
(2)源、目的不能同时为存贮器寻址方式
(3)基址变址方式不能有SI和DI的组合
(4)基址变址方式不能有BX和BP的组合
(5)在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式
(6)1000超出一个字节的表数范围
(7)OFFSET只用于简单变量,应去掉
(8)CS不能作为目的寄存器
(9)段地址不能直接送入数据段寄存器
10.
DATASEGMENT
TABLE_ADDRDW1234H
DATAENDS
.
.
.
MOVBX,TABLE_ADDR
LEABX,TABLE_ADDR
请写出上述两条指令执行后,BX寄存器中的内容。
答案:
MOVBX,TABLE_ADDR;执行后(BX)=1234H
LEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR
12.变量DATAX和DATAY定义如下:
DATAXDW0148H
DW2316H
DATAYDW0237H
DW4052H
按下述要求写出指令序列:
(1)DATAX和DATAY中的两个字数据相加,和存放在DATAY和DATAY+2中。
(2)DATAX和DATAY中的两个双字数据相加,和存放在DATAY开始的字单元中。
(3)DATAX和DATAY两个字数据相乘(用MUL)。
(4)DATAX和DATAY两个双字数据相乘(用MUL)。
(5)DATAX除以23(用DIV)。
(6)DATAX双字除以字DATAY(用DIV)。
答案:
(1)MOVAX,DATAX
ADDAX,DATAY
MOVBX,DATAX+2
ADDBX,DATAY+2
MOVDATAY,AX
MOVDATAY+2,BX
(2)MOVAX,DATAX
ADDDATAY,AX
MOVAX,DATAX+2
ADCDATAY+2,AX
(3)MOVAX,DATAX
MULDATAY
MOVDATAY,AX
MOVDATAY+2,DX
(4)MOVAX,WORDPTRDATAX
MOVBX,WORDPTRDATAY
MULBX
MOVRESULT,AX
MOVRESULT+2,DX
MOVAX,WORDPTRDATAX
MOVAX,WORDPTRDATAY+2
MULBX
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY
MULBX
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY+2
MULBX
ADDRESULT+4,AX
ADCRESULT+6,DX
(5)MOVAX,DATAX
MOVBL,23
DIVBL
MOVBL,AH
MOVAH,0
MOVDATAY,AX;存放商
MOVAL,BL
MOVDATAY+2,AX;存放余数
(6)MOVAX,DATAX
MOVDX,DATAX+2
DIVDATAY
MOVDATAY,AX
MOVDATAY+2,DX
13.试分析下面的程序段完成什么操作?
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
答案:
将DX:
AX中的双字左移4位(乘16)
14.用其他指令完成和下列指令一样的功能:
(1)REPMOVSB
(2)REPLODSB(3)REPSTOSB(4)REPSCASB
答案:
(1)LOOP1:
MOVAL,BYTEPTR[SI]
MOVES:
BYTEPTR[DI],AL
INCSI或:
DECSI
INCDI或:
DECDI
LOOPLOOP1
(2)LOOP1:
MOVAL,BYTEPTR[SI]
INCSI或:
DECSI
LOOPLOOP1
(3)LOOP1:
MOVES:
BYTEPTR[DI],AL
INCDI或:
DECDI
LOOPLOOP1
(4)LOOP1:
CMPAL,ES:
BYTEPTR[DI]
JEEXIT
INCDI或:
DECDI
LOOPLOOP1
EXIT:
15.编写程序段,比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串与NEWS不同,则执行NEW_LESS,否则顺序执行程序。
答案:
LEASI,OLDS
LEADI,NEWS
MOVCX,5
CLD
REPZCMPSB
JNZNEW_LESS
16.假定AX和BX中的内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX的值超过CX的值,则转去执行EXCEED
(2)若BX的值大于AX的值,则转去执行EXCEED
(3)CX中的值为0吗?
若是则转去执行ZERO
(4)BX的值与AX的值相减,会产生溢出吗?
若溢出则转OVERFLOW
(5)若BX的值小于AX的值,则转去执行EQ_SMA
(6)若DX的值低于CX的值,则转去执行EQ_SMA
答案:
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPCX,0
JEZERO
(4)SUBBX,AX
JOOVERFLOW
(5)CMPBX,AX
JLEQ_SMA
(6)CMPDX,CX
JBEQ_SMA
17.假如在程序的括号中分别填入指令:
(1)LOOPL20
(2)LOOPNEL20(3)LOOPEL20
试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个寄存器的内容分别是什么?
TITLEEXLOOP.COM
CODESGSEGMENT
ASSUMECS:
CODESG,DS:
CODESG.SS:
CODESG
ORG100H
BEGIN:
MOVAX,01
MOVBX,02
MOVDX,03
MOVCX,04
L20:
INCAX
ADDBX,AX
SHRDX,1
()
RET
CODESGENDS
ENDBEGIN
答案:
(1)(AX)=5(BX)=16(CX)=0(DX)=0
(2)(AX)=2(BX)=4(CX)=3(DX)=1
(3)(AX)=3(BX)=7(CX)=2(DX)=0
18.变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。
答案:
MOVAX,0
MOVAL,N1+1
SUBAL,N2+1
AAS
MOVDL,AL
MOVAL,N1
SBBAL,N2
AAS
MOVDH,AL
19.有两个3位的ASCII数串ASC1和ASC2定义如下:
ASC1DB‘578’
ASC2DB‘694’
ASC3DB‘0000’
请编写程序计算ASC3←ASC1+ASC2。
答案:
CLC
MOVCX,3
MOVBX,2
BACK:
MOVAL,ASC1[BX]
ADCAL,ASC2[BX]
AAA
ORASC3[BX+1],AL
DECBX
LOOPBACK
RCLCX,1
ORASC3[BX],CL
20.假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=5,(DX)=0,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060)=00B0H,.(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令单独执行完后,有关寄存器及存储单元的内容,若影响条件码请给出条件码SF、ZF、OF、CF的值。
(1)SBBAX,BX
(2)CMPAX,WORDPTR[SI+0FA0H]
(3)MULBYTEPTR[BX](4)AAM
(5)DIVBH(6)SARAX,CL
(7)XORAX,0FFE7H(8)REPSTOSB
(9)JMPWORDPYR[BX](10)XCHGAX,ES:
[BX+SI]
答案:
(1)(AX)=0F05FH,(SF)