微机原理第1-2章习题(答案)

  • 格式:doc
  • 大小:37.50 KB
  • 文档页数:4

微机原理第1-2章习题(答案)1.什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?这三者有什么联系和区别?答:微处理器是指微缩的CPU 大规模集成电路,其职能是执行算术、逻辑运算和控制整个计算机自动地、协调地完成操作;微型计算机是以微处理器为核心,配上大规模集成电路的RAM、ROM、I/O 接口以及相应的辅助电路而构成的微型化的计算机装置;微型计算机系统是以微型计算机为核心构成的某种特殊用途的应用系统;实际上,微型计算机是我们普通意义上提到的计算机的一种,而微处理器是微型计算机的核心,微型计算机系统则是微型计算机在不同应用场合下的扩展。

(注意,对于微型计算机和微型计算机系统的区别在不同的参考书上可能有不同的解释。

其中一种看法是:微型计算机是指纯硬件设备(也就是所谓的裸机),微型计算机系统才是真正包括软件和硬件在内的、有实用价值的微型计算机设备;另一种看法是:微型计算机是具有最简单软、硬件配置的微型计算机设备,而微型计算机系统是指具有较丰富的软硬件配置、适用于某些特别应用场合的微型计算机设备。

本书认为,这两个概念的区别在目前来说不是非常明显和非常重要,因此采用了比较含糊的说法。

)2.什么叫机器数?什么叫真值?试综述有符号数和无符号数的机器数主要有哪些表示方法。

答:一般数学上用“+”“-”号加上数值大小表示数据的形式我们称为数据的真值,如+15、-25 等;而计算机中用二进制表示的、符号也数码化了的带符号数称为机器数,如+15 可以表示为00001111,-25 可以表示为10011001(原码形式)。

计算机中,无符号数可以直接用二进制、八进制、十六进制或BCD 码等形式来表示;而带符号数可以用二进制、八进制或十六进制的原码、反码、补码三种方式来表示。

3. 写出下列十进制数的原码、反码和补码表示(用 8 位二进制数表示,最高位为符号位):(1)13 (2)120 (3)35 (4)-127(1) (13)10=(0000,1101)原码=(0000,1101)反码=(0000,1101)补码(2) (120)10=(0111,1000)原码=(0111,1000)反码=(0111,1000)补码(3) (35)10=(0010,0011)原码=(0010,0011)反码=(0010,0011)补码(4) (-127)10=(1111,1111)原码=(1000,0000)反码=(1000,0001)补码4. 8086CPU 分为哪两个部分?各部分主要由什么组成?答:8086/8088 CPU 分为总线接口部件(BIU)和执行部件(EU)两个部分。

其中:BIU 包括:4 个16 位的段地址寄存器(CS、DS、SS、ES);1 个16 位的指令指针寄存器IP;1 个20 位的地址加法器;指令队列寄存器;内部寄存器;输入输出总线控制逻辑;EU 包括:4 个16 位的通用数据寄存器(AX、BX、CX、DX);4 个16 位的专用寄存器(BP、SP、SI、DI);1 个16 位的标志寄存器FR;5.什么叫指令队列?8086CPU 中指令队列有什么作用?其长度是多少字节?答:指令队列是用来暂存指令的一组寄存器,按“先进先出”原则读写。

在8086CPU 中,只要指令队列未填满,BIU 就从外部存储器取指令并放入指令队列中;另一方面,只要指令队列中不空,EU 就可将指令队列中已有的指令取出执行,这样BIU 和EU 按并行方式重叠操作,大大提高了CPU 的利用率,也降低了CPU 对存储器、I/O端口存取速度的要求。

8086CPU 中的指令队列缓冲器长度为6 个字节。

6. 8086CPU 中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器亦可作为地址寄存器使用?答:8086 CPU 中共有:8 个16 位的通用寄存器AX、BX、CX、DX 、BP、SP、SI、DI;2 个变址寄存器SI、DI;2 个指针寄存器BP、SP;其中BX、BP、SI、DI 亦可作地址寄存器。

7. 8086 CPU 中有哪些标志位?它们的含义和作用如何?答:8086/8088 CPU 中共有9 个标志位,其中DF、IF 和TF 为控制标志位,其余6 个为状态标志位。

它们的含义和作用如下所示:CF(Carry Flag)进位标志:若算术运算的结果产生了进位或借位(对字节操作最高位是D7 位;对字操作最高位是D15 位),则CF=1,否则CF=0。

PF(Parity/Even Flag)奇偶标志:如果运算结果中含有偶数个1,则PF=1,否则PF=0。

此标志位主要用于数据通信中,检测数据传送有无出错。

AF(Auxiliary Carry Flag)辅助进位标志:用于反映一个字节(字的低字节)的低4 位向高 4 位有无进位(借位)的情况,有进(借)位时,AF=1,否则AF =0。

这个标志位主要用于实现BCD 码算术运算所需的二-十进制调整之用。

ZF(Zero Flag)零标志:若运算结果为0,此标志为1;否则ZF=0。

SF(Sign Flag)符号标志:因为补码运算的最高位是符号位,所以它和运算结果的最高位(字节操作是D7 位,字操作是D15 位)状态相同。

当运算结果为负时,SF=1;否则SF=0。

OF(Overflow Flag)溢出标志:在带符号数的加或减运算中结果超出8 位或16 位符号数所能表示的数值范围(-128~127 或-32768~+32767)时,产生溢出使OF=1,否则OF=0。

DF(Direction Flag)方向标志位:此标志位用以控制串操作指令地址指针的步进方向。

每执行一条串操作指令,对地址要进行一次调整(对字节操作为加 1 或减1,对字操作为加 2 或减2)。

方向标志DF 决定地址是增量还是减量。

若DF=1,串地址为减量;DF=0,则为增量。

IF(Interrupt Enable Flag)中断允许标志位:也称为开中断标志位。

若使IF =1,则CPU 允许接受外部来的可屏蔽中断源发出的中断请求;若使IF=0,则表示CPU 不响应此中所请求。

IF 对非屏蔽中断及CPU 内部中断请求均不起作用。

TF(Trap Flag)陷阱标志位:也称为跟踪标志位。

若TF=1,则CPU 处于单步执行指令的工作方式。

在这种工作方式下,CPU 每执行完一条指令就自动地产生一次类型为 1 的内部中断,可以借此检查这条指令的执行情况。

8. 什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址由两个16 位的部分即段基址和偏移量组成,一般在程序中出现的地址都表示为逻辑地址形式;物理地址是一个20 位的地址,它是唯一能代表存储空间每个字节单元的地址,一般只出现在地址总线上。

由于8086CPU 中的寄存器只有16 位长,所以程序不能直接存放20 位的物理地址,而必须借助逻辑地址,即用两个16 位的寄存器来表示物理地址。

他们之间的关系是:物理地址=段基址*16+偏移量;另外,一个物理地址可对应多个逻辑地址。

9. 8086 CPU 使用的存储器为什么要分段和分体?怎么分段和分体?答:8086为16位CPU,其内部的ALU、相关的地址寄存器(如SP、IP 以及BX、BP、SI、DI)等都是16位的,因而对存储器地址的处理也只能是16 位操作,即8086的直接寻址能力在64KB范围内。

而实际上8086有20 条地址线,它的最大寻址空间为1MB。

这就产生了一个矛盾,即如何用16位的地址寄存器去表示一个20 位的存储器物理地址?实际使用的解决办法是:1MB大小的存储空间分为若干将“段”每段不超过64KB。

这样,一个20位的物理地址就可以用“16位段基址:16位偏移量”的形式(称为逻辑地址)来表示了,其中段地址存放在8086的段寄存器中。

8086为16位CPU,数据总线宽度为16位,一次能处理2个字节,而存储器的基本单元为1字节,为了兼顾CPU的处理能力和充分利用存储器资源,采用分体结构来分别处理高低字节。

10.已知当前段寄存器的基值(DS)=021FH,(ES)=0A32H,(CS)=234EH,则上述各段在存储器空间中物理地址的首址及末地址号是什么?答:数据段:021F0H~121EFH附加段:0A320H~1A31FH代码段:234E0H~334DFH11. 若(CS)=5200H 时,物理转移地址为 5B230H,则当 CS 的内容被设定为7800H,物理转移地址应为多少?答:按题目条件可知该转移地址距CS 所指代码段的段基址的偏移量为9230H (即=5B230H-52000H),因此若(CS)=7800H,则物理转移地址应为:78000H +9230H=81230H。

12. 某系统初始化后有(SS)=2258H,(SP)=0800H,说明该堆栈段在存储器中的物理地址范围。

若当前堆栈中存入 10 个字节数据,那么 SP 内容应为什么值?答:堆栈段在存储器中的物理地址范围为:22580H~22D80H,其中22580H (=2258H*16)为堆栈段的段基址,而22D80H(=2258H*16+0800H)为栈底地址。

在存入10 个字节数据后SP 内容应为07F6H(=0800H-0AH)。

13. 8086 CPU 读/写总线周期包含多少个时钟周期?什么情况下需要插入 T W 等待周期?T W的多少取决于什么因素?什么情况下会出现空闲状态T i?答:8086 CPU 的基本读/写总线周期包括 4 个时钟周期。

在某些情况下,被写入数据或被读取数据的存储器或外设在速度上跟不上CPU 时,就会由存储器或外设在T3 状态启动前向CPU 发无效的READY 信号,于是CPU 将在T3 之后插入1 个或多个附加的等待周期Tw。

如果在 1 个总线周期之后不立即执行下一个总线周期,那么总线就处于空闲状态,即执行空闲周期T i。

14. 现有 6 个字节的数据分别为 11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为 400A5H~400AAH,若当前(DS)=4002H,请说明它们的偏移地址值。

如果要从存储器中读出这些数据,需要访问几次存储器?每次各读出哪些数据?答:这几个字节数据的偏移地址值为:0085H~008AH(偏移地址= 物理地址- 段基址*16 = 物理地址- 40020H)数据是以字节形式存放的。

8086CPU,可分为以下三种情况:若以字节方式读数据,则每读一个字节需要访问一次存储器,共需 6 个总线周期;若以字的方式读数据,由于存放格式为非规则字,故每读一个非规则字需要两个总线周期,3 个非规则字仍需 6 个总线周期,每个总线周期读出一个字节;若对读取方式无具体规定,则可以先读一个奇地址字节11H,然后连续读两个规则存放的字3322H、5544H,最后读偶地址字节66H,这样共需访问 4 次存储器。