(完整版)微型计算机原理(第三章课后答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微型计算机原理
第三章80X86微处理器
1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2)EU的作用:执行指令,并为BIU提供所需的有效地址。
(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令
队列中。这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?
答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄
存器4个和控制寄存器2个。其主要作用是:(1)数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址,
CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长
乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址。
SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,
每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的
用途是存放操作数在堆栈段内的偏移地址。SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。
DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。(3)段寄存器:用于存放段地址
CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。DS 的内容左
移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存
储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程
序时保护断点和现场。
ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附
加数据段用来存放字符串操作时的目的字符串。(4)控制寄存器IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地
址。用户程序不能直接访问IP。FLAGS称为标志寄存器,它是一个16位的寄存器,但只用了其中9位,这9位包括(个状态标
志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU 的某种操作。
3.8086/8088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?答:可用来指示段内偏移地址的寄存器共有6个:IP、SP、BP、BX、SI、DI
4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?
答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是:(1)状态标志:用来反映算术和逻辑运算结果的一些特征。
CF(Carry Flag)—进位标志位。当进行加减运算时,若最高位发生进位或借位,则CF为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。PF(Parity Flag)—奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。AF(Auxiliary Flag)—辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的
低4位向高4位有进位或借位,则AF为1,否则为0。ZF(Zero Flag)—零标志位。若当前的运算结果为0,则ZF为1,否则为00
SF(Sign Flag)—符号标志位。当运算结果的最高位为1时,SF=1,否则为00
OF(Overflow Flag)—溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,
OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o(2)控制标志位:用来控制CPU的操作,由程序设置或清除。它们是:
TF(TrapFlag)—跟踪(陷阱)标志位。它是为测试程序的方便而设置的。若将TF置1,8086/8088CPU处于单步工作方式,否则,将正常执行程序。IP(Interrupt Flag)—中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI指令将
IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IP清
0,则禁止CPU接受可屏蔽中断请求信号。IF的状态对非屏蔽中断及内部中断没有影响。DF(DirectionFlag)—方向标志位。若用STD将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLD将DF清0,则串操作按增地址方式进行,即每操作一次地址自动递增。
5.8086/8088CPU的地址总线有多少位?其寻址范围是多少?答:8086/8088地址总线有20根,寻址范围1MB
6.什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少?答:(1)指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。(2)指令队列的作用:存放EU将要执行的指令,使CPU的取指和执行指令能并行工作。
(3)指令队列的长度:8086为6个字节,8088为4个字节。
7.Intel8086与8088有何区别?答:8086与8088的区别有三处:(1)外部数据总线位数不同(即地址/数据分时复用引脚条数不同);8086为16位:AD15~AD0。8088为8位: