第二章 微处理器的组织.docx
- 文档编号:3508839
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:12
- 大小:28.35KB
第二章 微处理器的组织.docx
《第二章 微处理器的组织.docx》由会员分享,可在线阅读,更多相关《第二章 微处理器的组织.docx(12页珍藏版)》请在冰豆网上搜索。
第二章微处理器的组织
2.1Intel8086微处理器的主要性能如何?
为什么在8086之后要推出8088微处理器?
答:
8086是Intel系列的16位微处理器,也是80x86系列微处理器的基础。
它有16根数据线,可以处理8位或16位数据;有20根地址线,可以寻址1MB的存储单元和64KB的I/O端口。
在推出8086之后不久,Intel公司还推出了准16位微处理器8088。
8088的内部寄存器、运算器以及内部数据总线都是按16位设计的,只是其外部数据总线设计为8位。
这样设计的目的主要是为了与Intel原有的8位外围接口芯片直接兼容。
2.2从功能上讲,8086CPU内部可分为哪两个独立的部分?
答:
从功能上讲,8086CPU内部可分为两个独立的部分,即总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。
2.38086/8088的BIU内部有哪些主要的部件?
答:
BIU内有4个16位段地址寄存器CS、DS、SS和ES,16位指令指针IP和内部暂存器,还有6字节指令队列缓冲器,20位地址加法器以及总线控制电路。
2.48086设计指令队列缓冲器的作用是什么?
答:
由于有指令队列缓冲器,使BIU与EU可以分开并独立工作,因此,在一般情况下,当CPU正在执行一条指令时,可以同时取出一条或多条指令在指令队列总排队,并在执行完前一条指令时,可立即执行下一条指令,而不需要像以往8位CPU那样重复地进行先取指令和后执行指令的串行操作。
16位CPU这种指令预取与指令执行的并行重叠操作,提高了总线的信息传输效率和整个系统的执行速度。
2.58086/8088的地址加法器有何作用?
试举例加以具体阐述。
答:
地址加法器用于产生20位的物理地址。
其具体做法是:
各段寄存器中分别用来存放16位地址,它们是确定存储器各段的20位起始地址的高16位信息,通常称为段地址。
当由指令指针IP提供或由执行单元EU按寻址方式计算出寻址单元的16位偏移地址(也称为偏移量)后,再与左移4位后的段寄存器的内容相加,则最终形成一个20位的物理地址(即寻址内存的实际地址)。
比如,CPU要形成某个指令代码的物理地址,就要将IP的值与代码段寄存器CS(CodeSegment)左移4位后的内容相加。
假设CS=2000H,IP=0618H,此时指令的物理地址为20618H。
2.6什么叫做“段加偏移”的寻址机制?
答:
从8086/8088微处理器开始,利用段基地址加偏移地址来计算物理地址的方法,就称为“段加偏移”的寻址机制。
2.716位指令指针IP(InstructionPointer)的功能是什么?
答:
16位指令指针IP(InstructionPointer)的功能与8位CPU中的PC类似。
在程序正常运行过程中,IP中含有BIU要取的下一条指令(实际是指令代码的1个字节)的偏移地址。
IP在程序运行中能自动进行加1修正,使之总是指向要执行的下一条指令(字节)。
2.8执行单元EU是否与总线控制电路直接相连?
它的功能是什么?
答:
执行单元EU并不与系统的总线控制电路直接相连,这使得它能与总线接口单元BIU之间保持一种既相互联系又相互独立的关系。
EU的功能只是负责执行指令;执行的指令从BIU的指令队列缓冲器中取得,执行指令的结果或执行指令所需要的数据,都由EU向BIU发出请求,再由BIU对存储器或I/O端口进行存取。
2.9执行单元EU由哪几部分组成?
EU的具体作用是什么?
答:
EU由算术逻辑单元ALU、数据暂存寄存器、通用寄存器组、标志寄存器和EU控制电路组成。
EU是控制、定时与状态逻辑电路,它不断接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。
数据在ALU中进行运算,运算结果的特征保留在标志寄存器FLAGS中。
2.108086/8088的寄存器编程结构中共有多少个寄存器?
答:
8086/8088的内部寄存器编程结构中共有14个16位寄存器。
2.118086/8088的通用寄存器是怎样构成的?
它们各自的作用是什么?
答:
8086/8088的通用寄存器分为两组:
数据寄存器以及指针寄存器和变址寄存器。
1.数据寄存器
执行单元EU中有4个16位数据寄存器AX、BX、CX和DX。
每个数据寄存器分为高字节H和低字节L,它们均可作为8位数据寄存器独立寻址,独立使用。
在多数情况下,这些数据寄存器是用在算术运算或逻辑运算指令中,用来进行算术逻辑运算。
在有些指令中,它们则有特定的用途:
如AX作累加器;BX作基址寄存器,在查表指令XLAT中存放表的起始地址;CX作计数寄存器,在使用带有重复前缀(如REP)的数据串操作指令中用来存放数据串元素的个数;DX作数据寄存器,在字的除法运算指令DIV中存放余数。
这些寄存器在指令中的特定功能是被系统隐含使用的。
2.指针寄存器和变址寄存器
指针寄存器是指堆栈指针寄存器SP和堆栈基址指针寄存器BP,简称为P组。
变址寄存器是指源变址寄存器SI和目的变址寄存器DI,简称为I组。
它们都是16位寄存器,一般用来存放地址的偏移量(即相对于段起始地址的距离,或称为偏置)。
指针寄存器SP和BP都用来指示存取位于当前堆栈段中的数据所在的地址,但SP和BP在使用上有区别。
入栈(PUSH)和出栈(POP)指令是由SP给出栈顶的偏移地址,故SP称为堆栈指针寄存器(简称堆栈指针)。
而BP则是存放位于堆栈段中一个数据区基地址的偏移地址,故称为堆栈基址指针寄存器(简称基址指针)。
显然,由SP所指定的堆栈存储区的栈顶和由BP所指定的堆栈段中某一块数据区的首地址是两个不同的意思,不可混淆。
变址寄存器SI和DI用于存放当前数据串的偏移地址(简称偏移量或偏置)。
其中,SI存放源数据串的偏移地址,故SI称为源变址寄存器;而DI存放目的数据串的偏移地址,故DI称为目的变址寄存器。
例如,在数据串操作指令中,被处理的数据串的偏移地址由SI给出,处理后的结果数据串的偏移地址则由DI给出。
2.128086/8088CPU内的4个16位段寄存器存放的是什么地址?
怎样才能寻址1MB存储空间?
又如何才能将这1MB存储空间分成为若干个逻辑段?
逻辑段的最大长度是多少?
答:
8086/8088CPU内的4个16位段寄存器(CS、DS、SS、ES),用于存放16位的段地址。
当段寄存器左移4位后才能形成20位的段起始地址,这样就有可能寻址1MB存储空间并将其分成为若干个逻辑段,使每个逻辑段的长度为64KB(它由16位的偏移地址限定)。
2.138086/8088在1MB存储空间内形成的逻辑段能否上下浮动?
什么叫做逻辑地址?
为什么将未定位之前在程序中出现的地址叫做逻辑地址?
答:
逻辑段可以通过修改段寄存器的内容被任意设置在整个1MB存储空间上下浮动。
逻辑地址是程序员在程序中设置的地址。
因为逻辑段在存储器中定位以前,还不是可以真正寻址的实际内存地址,所以,通常人们就将未定位之前在程序中出现的地址叫做逻辑地址。
2.148086/8088的指令能否直接访问4个段寄存器?
这些段寄存器各自存放哪个段的段地址?
这些段又各自存放什么内容?
答:
8086/8088的指令能直接访问这4个段寄存器,其中,代码段寄存器CS用来存放程序当前使用的代码段的段地址,CPU执行的指令将从代码段取得;堆栈段寄存器SS用来存放程序当前所使用的堆栈段的段地址,堆栈操作的数据就在这个段中;数据段寄存器DS用来存放程序当前使用的数据段的段地址,一般地说,程序所用的数据就存放在数据段中;附加段寄存器ES用来存放程序当前使用的附加段的段地址,它通常也用来存放数据,但典型用法是用来存放处理以后的数据。
2.158086/8088的16位标志寄存器FLAGS是怎样设置的?
答:
8086/8088的16位标志寄存器FLAGS只用了其中的9位作标志位,即6个状态标志位,3个控制标志位。
2.168086/8088的标志寄存器FLAGS中设置状态标志位的作用是什么?
6个状态标志位的操作是怎样的?
答:
状态标志位用来反映算术或逻辑运算后结果的状态,以记录CPU的状态特征。
6位状态标志位的操作如下。
CF(CarryFlag)进位标志:
当执行一个加法或减法运算使最高位(即D15位或D7位)产生进位或借位时,则CF为1;否则为0。
此外,循环指令也会影响它。
PF(ParityFlag)奇偶性标志:
当指令执行结果的低8位中含有偶数个“1”时,则PF为1;否则为0。
此标志位用于机器中传送信息时,对产生的代码出错情况提供检测条件。
此标志在现代程序设计中很少使用。
今天,奇偶校验常常由数据通信设备完成,而不是由微处理器完成。
AF(AuxiliaryCarryFlag)辅助进位标志:
当执行一个加法或减法运算使结果的低字节的低4位向高4位(即D位向D位)有进位或借位时,则AF为1;否则为0。
DAA和DAS指令测试这个特殊标志位,该标志一般用在BCD码运算中作为是否需要对AL寄存器进行十进制调整的依据。
ZF(ZeroFlag)零标志:
零标志表示一个算术或逻辑操作的结果是否为零。
若当前的运算结果为零,则ZF为1;否则为0。
SF(SignFlag)符号标志:
符号标志保持算术或逻辑运算指令执行后结果的算术符号。
它和运算结果的最高位(由D位或D位判定)相同。
当数据用补码表示时,负数的最高位为1,正数的最高位为0。
OF(OverflowFlag)溢出标志:
溢出标志在有符号数进行加法或减法时可能出现。
溢出将指示运算结果已超出机器能够表示的范围。
当补码运算有溢出时,例如,用8位加法将7FH(+127)加上01H,结果为80H(-128)。
此时OF标志为1;否则为0。
对于无符号数的操作,将不会影响溢出标志。
2.178086/8088的标志寄存器FLAGS中设置控制标志位的作用是什么?
3个控制标志位的操作是怎样的?
答:
控制标志位用来控制CPU的操作,由程序设置或清除。
3个控制控制标志位的操作如下。
DF(DirectionFlag)方向标志:
它用来控制数据串操作指令的步进方向。
若用STD指令将DF置1,则数据串操作过程中地址会自动递减;若用CLD指令将DF清0,则数据串操作过程中地址会自动递增。
地址的递增或递减由DI或SI两个变址寄存器来实现。
IF(InterruptEnableFlag)中断允许标志:
它是控制可屏蔽中断的标志。
若用STI指令将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IF清0,则禁止CPU接受外来的可屏蔽中断请求信号。
IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。
TF(TrapFlag)跟踪(陷阱)标志:
它是为调试程序的方便而设置的。
若将TF置为1,则8086/8088CPU处于单步工作方式;否则,将正常执行程序。
在高型号微处理器中,跟踪(陷阱)标志能够激活芯片上的调试特性(调试程序,以便找到错误或故障),当TF标志为1时,则微处理器将根据调试寄存器和控制寄存器的指示中断程序流。
需要指出的是,8086/8088所有上述标志位对Intel系列后续高型号微处理器的标志寄存器都是向上兼容的,只不过后者有些增强功能或者新增加了一些标志位而已。
2.18一个基本的总线周期是如何组成的?
总线周期中的4个状态各起什么作用?
答:
一个最基本的总线周期由4个时钟周期组成,习惯上将4个时钟周期分别称为4个状态,即T1、T2、T3与T4这4个状态。
4个状态中的基本作用如下:
①在T1状态,CPU往多路复用总线上发送地址信息,以选中所要寻址的存储单元或外设端口的地址。
②在T2状态,CPU从总线上撤消地址,并使总线的低16位浮置成高阻状态,为传送数据做准备。
总线的高4位(A19~A16)用来输出本总线周期状态信息。
这些状态信息用来表示是否允许中断、当前正在使用什么段寄存器等。
③在T3状态,多路总线的高4位继续提供状态信息,而其低16位(对8088CPU则为低8位)上将出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
④在有些情况下,由于外设或存储器的速度较慢,不能及时地配合CPU传送数据。
这时,外设或存储器就会通过“READY”的信号线在T3状态启动之前向CPU发一个“数据未准备好信号”,表示它们还来不及同CPU之间传送数据,于是,CPU会在T3之后自动插入1个或多个附加的时钟周期TW,这个TW就叫等待状态,它表示此时CPU在总线上的信息情况和T3状态时的信息情况一样。
只有在指定的存储器或外设已经完成数据传送时,它们又通过“READY”的信号线向CPU发出一个“准备好”信号,当CPU接收到这一信号后,才会自动脱离TW状态而进入T4状态。
⑤在T4状态,总线周期结束。
2.19CPU在什么情况下才执行总线周期?
又在什么情况下才执行空闲周期?
答:
只有当CPU和存储器或I/O端口之间传送数据时,或者它正在填充指令队列缓冲器时,CPU才执行总线周期。
如果CPU在执行一个总线周期之后,并不立即执行下一个总线周期,那么,系统总线就会处于空闲状态,此时,CPU将执行空闲周期。
2.20什么叫规则字?
什么叫非规则字?
它们在存取时所需要的总线周期数和操作有何不同?
答:
对存放在存储器中的字,其低位字节可以由奇数地址开始存放,也可以由偶数地址开始存放;前者称为非规则存放,这样存放的字称为非规则字,后者称为规则存放,这样存放的字称为规则字。
对规则字的存取可1个总线周期完成,而对非规则字的存取则需要两个总线周期。
这就是说,读或写一个以偶数为起始地址的字的指令,只需要访问1次存储器;而对于一个以奇数为起始地址的字的指令,就必须两次访问存储器中的两个偶数地址的字,忽略每个字中所不需要的那半个字,并对所需的两个半字进行字节调整。
2.218086的1MB存储空间分为几个存储体(或存储库)?
它们如何与数据总线相连?
CPU又用什么信号线来选择?
答:
8086的1MB存储空间实际上分为两个512KB的存储体,又称存储库,分别叫高位库和低位库。
低位库与数据总线D7~D0相连,该库中每个地址均为偶数地址;高位库与数据总线D15~D8相连,该库中每个地址均为奇数地址。
地址总线A19~A1可同时对高、低位库的存储单元寻址,A0或BHE则用于库的选择,分别接到库选择端SEL上。
2.22在8086/8088系统中,1MB存储空间中各个逻辑段的位置可以具体安排成哪些形式?
答:
在8086/8088系统中,1MB存储空间被分为若干逻辑段,每个段的20位起始地址(即段基址)是一个能被16整除的数,即最后4位为0。
段和段之间可以是连续的,分开的,部分重叠的、或完全重叠的。
当然,每个存储单元的内容不允许重叠,否则会导致冲突。
1个程序所用的具体存储空间可以为1个逻辑段,也可以为多个逻辑段。
2.23物理地址和逻辑地址有何区别?
它们在8086/8088系统中是如何表示的?
答:
物理地址是指CPU对内存进行访问时实际寻址所使用的地址,对8086/8088来说是用20位二进制数或5位十六进制数表示的地址。
通常,物理地址又称为实际地址。
逻辑地址是由程序和指令表示的一种地址,它包括两部分:
段地址和偏移地址。
对8086/8088来说,前者是由16位段寄存器直接给出的16位地址;后者是由指令寻址时的寄存器组合与位移量之和,它最终所给出的是一个16位的偏移量,表示所寻址的地址单元距离段起始地址之间的偏移字节的多少,故称为偏移地址(又简称为偏移)。
段地址和偏移地址都用无符号的16位二进制数或4位十六进制数表示。
2.24一个物理地址可以对应多个逻辑地址吗?
为什么?
试举例说明之。
答:
一个物理地址可对应多个逻辑地址,因为逻辑地址包括段地址和偏移地址两部分,只要同时改变段地址和偏移地址而保持其和不变,则物理地址也将不变。
比如,物理地址11245H可以从两个部分重叠的段中得到:
一个段地址为1123H,偏移地址为15H,其物理地址为(11230H+15H)=11245H;另一个段地址为1124H,而偏移地址为05H,其物理地址仍为(11240H+05H)=11245H。
从上面的计算可知,尽管两个段采用了不同的逻辑地址,但它们仍可获得同一个物理地址。
2.25寻址代码段时,系统默认CPU使用什么寄存器?
答:
寻址代码段时,系统默认CPU使用CS和IP来寻址。
由CS给定代码段的段地址,而IP给定当前在代码段中所寻址的代码的偏移量。
2.26寻址堆栈段时,系统默认CPU使用什么寄存器?
答:
寻址堆栈段时,系统默认CPU使用SS和SP来寻址。
由SS给定堆栈段的段地址,而SP给定当前栈顶,即指出从堆栈的段基址到栈顶的偏移量。
2.27寻址数据段时,系统默认CPU使用什么寄存器?
答:
寻址数据段时,系统默认CPU使用DS和由寄存器组合所形成的有效地址来寻址。
由DS给定数据段的段地址,而有效地址指出从数据段的段基址到所寻址存储器数据的偏移量。
2.28寻址数据串时,系统默认CPU使用什么寄存器?
答:
寻址源数据串时,系统默认CPU使用DS和SI来寻址。
由DS给定源数据串的段地址,而有效地址指出从源数据串的段基址到所寻址源串数据元素的偏移量。
寻址目标数据串时,系统默认CPU使用ES和DI来寻址。
由ES给定目标数据串的段地址,而有效地址指出从目标数据串的段基址到所寻址目标串数据元素的偏移量。
2.29为什么要研究8086/8088微处理器的引脚信号与功能?
答:
由于在众多系列的微处理器及其系统中,目前Intel系列的微处理器及其系统占有最大的使用范围与销售份额,而8086/8088微处理器是其最重要的基础,因此,要从研究8086/8088微处理器的引脚信号与功能开始学习与掌握微处理器技术。
2.308086/8088的40条引线按功能可分为哪几类?
答:
它们的40条引线按功能可分为5类:
地址/数据总线AD15~AD0;地址/状态总线A19/S6~A16/S3;8条基本的控制总线(BHE
/S7、RD、READY、TEST、INTR、NMI、RESET、CLK);电源线Vcc和地线GND;其他控制线(24~31引脚)。
2.318086/8088的地址/数据总线AD15~AD0有何特点?
它们在总线周期的4个时钟内各处于什么状态?
答:
8086/8088的地址/数据总线AD15~AD0采用的是分时复用的存储器或端口的地址和数据总线。
它在传送地址时为单向的三态输出,而传送数据时可双向三态输入/输出。
正是利用分时复用的方法才能使8086/8088用40条引脚实现20位地址、16位数据及众多的控制信号和状态信号的传输。
不过在8088中,由于只能传输8位数据,所以,只有AD7~AD08条地址/数据线,A15~A8只用来输出地址。
作为复用引脚,在总线周期的T1状态用来输出要寻址的存储器或I/O端口地址;在T2状态浮置成高阻状态,为传输数据作准备;在T3状态,用于传输数据;T4状态结束总线周期。
当CPU响应中断以及系统总线“保持响应”时,复用线都被浮置为高阻状态
2.32BHE/S7的功能是什么?
答:
BHE/S7是高8位数据总线允许/状态复用引脚,三态、输出。
BHE在总线周期的T1状态时输出,S7在T2~T4时输出。
在8086中,当BHE/S7引脚上输出BHE信号时,表示总线高8位AD15~AD8上的数据有效。
在8088中,第34引脚不是BHE/S7,而是被赋予另外的信号:
在最小模式时,它为系统状态信号SS0,并和DT/R与M/IO一起决定了8088当前总线周期的读/写动作;在最大模式时,它恒为高电平。
S7在当前的8086芯片设计中未被赋予定义,暂作备用状态信号线。
2.33RD的功能是什么?
答:
RD是读控制信号,三态、输出。
当RD=0时,表示CPU将要执行一个对存储器或I/O端口的读操作。
到底是对内存单元还是对I/O端口读取数据,取决于M/IO (8086)或M/IO(8088)信号。
在一个读操作的总线周期中,RD信号在T2、T3和TW状态均为低电平,以保证CPU读有效。
在系统总线进入“保持响应”期间,RD被浮空。
2.34READY的功能是什么?
答:
READY是“准备好”信号线,输入。
它实际上是由所寻址的存储器或I/O端口发来的响应信号,高电平有效。
当READY=1时,表示所寻址的内存或I/O设备已准备就绪,马上就可进行一次数据传输。
CPU在每个总线周期的T3状态开始对READY信号采样。
如果检测到READY为低电平,表示存储器或I/O设备尚未准备就绪,则CPU在T3状态之后自动插入一个或几个等待状态TW,直到READY变为高电平,才进入T4状态,完成数据传送过程,从而结束当前总线周期。
2.358086/8088微处理器在复位后,其内部的寄存器处于什么状态?
答:
8086/8088微处理器在复位后,其内部的寄存器处于初始化的待命状态,如表5.1所示。
表5.1 复位后内部寄存器的状态
内部寄存器
状态
标志寄存器
IP
CS
DS
SS
ES
指令队列缓冲器
清除
0000H
FFFFH
0000H
0000H
0000H
清除
2.36INTR的功能是什么?
答:
INTR是可屏蔽中断请求信号,输入,高电平有效。
当INTR=1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。
若IF=1,则CPU响应中断,停止执行当前的指令序列,并转去执行中断服务程序。
2.37RESET的功能是什么?
答:
RESET是复位信号,输入,高电平有效。
通常与8284A(时钟发生/驱动器)的复位输出端相连,8086/8088要求复位脉冲宽度不得小于4个时钟周期,而初次接通电源时所引起的复位,则要求维持的高电平不能小于50μs;复位后,CPU的主程序流程恢复到启动时的循环待命初始状态,其内部寄存器状态如表中所示。
此时,标志寄存器与指令队列缓冲器的原有信息被清除,IP与DS、SS和ES也被清零,而CS被置为FFFFH。
当RESET信号变为低电平时,CPU就从FFFF0H开始执行程序。
在程序执行时,RESET线保持低电平。
复位后内部寄存器的状态
内部寄存器
状态
标志寄存器
IP
CS
DS
SS
ES
指令队列缓冲器
清除
0000H
FFFFH
0000H
0000H
0000H
清除
2.38MN/MX的功能是什么?
答:
MN/MX是系统操作的模式控制线,它有两种功能:
当MN/MX=1时,8086/8088工作于最小模式(MN),在此操作模式下,全部控制信号由CPU本身提供。
当MN/MX=0时,8086/8088工作于最大模式(MX)(即24~31引脚的功能示于括号内的信号)。
这时,系统的控制信号由8288总线控制器提供,而不是由8086/8088直接提供。
2.39时钟发生器(8284A)的功能是什么?
答:
8284A是8086/8088微处理器的一个辅助器件,用于为微处理器提供所需要的时钟信号,并为准备好信号READY和复位信号RESET进行同步。
2.408086/8088系统有哪两种工作模式?
它们由什么引脚信号来区分?
答:
由8086/8088CPU构成的微机系统,有最小模式和最大模式两种系统配置。
它们由MN/MX引脚信号来区分,当MN/MX接电源电压时,系统就工作于最小模式,即单处理器系统方式,它适合于较小规模的应用;当MN/MX接地时,系统就工作于最大模式,它适合于多处理器系统的应用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 微处理器的组织 第二 微处理器 组织