第三章微机中微处理器_第1页
第三章微机中微处理器_第2页
第三章微机中微处理器_第3页
第三章微机中微处理器_第4页
第三章微机中微处理器_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章微机中的微处理器3.1微处理器的一般结构3.28086微处理器的功能结构3.38086的寄存器结构3.48086的存储器组织3.58086的I/O组织3.68086的寻址方式微处理器的功能:组成计算机系统的核心部件,具有运算和控制的功能。①运算②接收和发送数据③指令的寄存、译码和执行④数据暂存⑤提供定时和控制信号⑥响应中断3.1.1微处理器的内部结构3.1微处理器的一般结构微处理器的特点:从程序设计的角度考虑,CPU必须便于处理:①赋值和算术表达式②关系和逻辑表达式③数组和其它数据结构④条件转移和无条件转移⑤循环⑥子程序⑦输入/输出3.1.1微处理器的内部结构程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)控制器I/O控制逻辑工作寄存器地址寄存器数据寄存器......ALU3.1.1微处理器的内部结构指令的执行过程3.1.1微处理器的内部结构

外部结构——输入/输出引脚——微处理器级总线

微处理器通过微处理器级总线与外部部件和设备相联系。1.总线的功能⑴和存储器之间交换信息⑵和I/O设备之间交换信息⑶为了系统工作而接收和输出必要的信号,如输入时钟脉冲、复位信号、电源和接地等2.总线的分类⑴数据总线(DataBus)⑵地址总线(AddressBus)⑶控制总线(ControlBus)一.总线功能与分类3.1.2微处理器的外部结构

存储器通常由几个模块组成,每个模块有几千个单元,每个存储单元有唯一的存储器地址与其对应。二.存储器和I/O地址空间

I/O接口——保证数据、控制与状态信息在CPU和I/O设备之间正常传送的电路。I/O和CPU之间的通信利用称为I/O端口的寄存器来完成。对应一个I/O设备的I/O接口,可能包括几个I/O端口,每个I/O端口都有一个唯一的I/O地址与其对应。3.1.2微处理器的外部结构

存储单元和I/O端口以字节为单位存放数据,每个字节对应一个标识地址。地址总线的条数即为二进制地址码的位数,它可能表示的不同地址的集合称为地址空间。

地址码的位数决定了地址空间的大小:2n二.存储器和I/O地址空间单地址空间:对存储器和I/O端口统一进行编址。双地址空间:对存储器和I/O端口独立进行编址。存储器:高位——选择模块,低位——选择模块内的存储单元。I/O设备:高位——选择I/O接口,低位——选择I/O端口。3.1.2微处理器的外部结构123456内部寄存器

IP

ES

SSDSCS总线控制电路EU控制器∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列执行单元(EU)总线接口单元(BIU)16位20位16位8位ALU数据总线数据总线8086总线3.28086微处理器的功能结构流水线技术原则:(3)EU取得指令,译码并执行指令。若指令需要取操作数或存操作结果,需要访问存储器或I/O,EU向BIU发出访问总线请求。当BIU接到EU的总线请求,若正忙,则须等BIU执行完当前的总线周期,才能响应EU的请求;若BIU空闲,则立即执行EU申请总线的请求。(1)BIU的指令队列有两个或两个以上字节为空时,BIU自动启动总线周期,取指填充指令队列。直至队列满,进入空闲状态。(2)EU每执行完一条指令,从指令队列的队首取指。特殊情况:系统初始化后,指令队列为空,EU等待BIU从内存取指,填充指令队列。(4)EU执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列被自动清除,BIU根据本条指令执行情况重新取指填充指令队列。指令流水线:CPU取指1执行1存结果1取指2执行2取指3取操作数3执行3BUS忙闲忙忙闲忙忙闲EU执行1执行2执行3执行4BIU取指1取指2存结果1取指3取操作数3取指4存结果3取指5BUS忙忙忙忙忙忙忙忙指令的执行过程:取指令——取操作数(如果需要)——执行指令——写入存储器。8086首次引入了流水线技术,执行指令和总线访问可以同时进行,提高了总线利用率。8086/8088以前的CPU3.38086的寄存器结构

AXAHALBXBHBL数据寄存器

CXCHCL (8/16位)DXDHDL

通用寄存器

SP堆栈指针

BP基址指针指针/变址寄存器

SI源变址 (16位)

DI目的变址

CS代码段

DS数据段段寄存器

SS堆栈段 (16位)

ES附加段

专用寄存器

IP指令指针

控制寄存器

FLAG标志寄存器 (16位)

3.3.1通用寄存器组数据寄存器:16位数据寄存器

AX——累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;BX——基址寄存器,常用做存放存储器基地址;CX——计数器,循环和串操作等指令中的隐含计数器;DX——数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。8位数据寄存器:

AHBHCHDHALBLCLDL3.3.1通用寄存器组地址指针和变址寄存器:变址寄存器常用于存储器寻址时提供地址:SI——源变址寄存器DI——目的变址寄存器串操作类指令中,SI和DI具有特别的功能。指针寄存器用于寻址内存堆栈内的数据:SP——堆栈指针,指示栈顶的偏移地址。SP不能再用于其他目的,具有专用目的。BP——基址指针,表示数据在堆栈段中的基地址。SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址。8086有4个16位段寄存器:CS——代码段寄存器,指明代码段的起始地址SS——堆栈段寄存器,指明堆栈段的起始地址DS——数据段寄存器,指明数据段的起始地址ES——附加段寄存器,指明附加段的起始地址3.3.2段寄存器组3.3.3控制寄存器组指令指针寄存器IP:

指示代码段中指令的偏移地址,它与代码段寄存器CS联用,确定下一条指令的物理地址。计算机通过CS:IP寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。标志寄存器(FLAG):

状态标志——记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。CFZFSFPFOFAF

控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式。DFIFTF3.3.3控制寄存器组标志寄存器(FLAG)D15D0OFDFIFTFSFZFAFPFCF进位标志奇偶标志辅助进位标志符号标志单步中断中断允许方向标志溢出标志1-有进、借位0-无进、借位1-低8位有偶数个10-低8位有奇数个11-低4位向高4位有进、借位0-低4位向高4位无进、借位1-结果为00-结果不为0零标志进位标志CF:当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。例如:3AH+7CH=B6H,没有进位:CF=0AAH+7CH=(1)26H,有进位:CF=1溢出标志OF:若算术运算的结果有溢出,则OF=1;否则OF=0例如:3AH+7CH=B6H,产生溢出:OF=1AAH+7CH=(1)26H,没有溢出:OF=0标志寄存器(FLAG)标志寄存器(FLAG)问题:什么是溢出?溢出和进位有什么区别?处理器怎么处理,程序员如何运用?如何判断是否溢出?处理器内部以补码表示有符号数。8个二进制位能够表达的整数范围是:+127~-12816位表达的范围是:+32767~-32768如果运算结果超出了这个范围,就是产生了溢出。有溢出,说明有符号数的运算结果不正确。什么是溢出?标志寄存器(FLAG)例如:3AH+7CH=B6H,即58+124=182,已经超出-128~127范围,产生溢出,所以OF=1;另一方面,补码B6H表达真值是-74,显然运算结果也不正确。溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。溢出和进位标志寄存器(FLAG)例1:3AH+7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算:58+124=182,范围外,有溢出溢出和进位对比标志寄存器(FLAG)例2:AAH+7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=38,范围内,无溢出

处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。如何运用溢出和进位标志寄存器(FLAG)应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(异号数相减可转化为同号数相加),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确。其他情况下,则不会产生溢出。溢出的判断标志寄存器(FLAG)3.48086的存储器组织3.4.1存储器地址空间和数据存储格式8086的存储器是以字节(8位)为单位组织的。20条地址总线,可寻址的存储器地址空间为220B(1MB)。每个存储单元都有一个编号——存储器地址每个存储单元存放一个字节的内容二进制位——存储一位二进制数:0或1。字节——8个二进制位,D7~D0。字——16位,2个字节,D15~D0。双字——32位,4个字节,D31~D0。信息的表达单位:3.48086的存储器组织3.4.1存储器地址空间和数据存储格式两个连续的字节,为一个字:低对低,高对高(小端方式)。字的地址指低字节的地址。字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周期。[0002H]=1234H[0004H]=7856H12H34H78H56H0000H0002H0004HD7D03.48086的存储器组织3.4.2存储器分段管理和物理地址的形成8086CPU有20条地址线,最大可寻址空间为220=1MB,物理地址范围从00000H~FFFFFH。

8086CPU将1MB空间分成许多逻辑段(Segment),每个段最大限制为64KB,段地址的低4位为0000B。这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址。3.48086的存储器组织3.4.2存储器分段管理和物理地址的形成对应每个物理存储单元都有一个唯一的20位编号,即物理地址。00000H~FFFFFH分段后在用户编程时,采用逻辑地址,形式为:段基地址:段内偏移地址

段地址左移4位+偏移地址=20位物理地址例如:逻辑地址“1460H:100H”=物理地址14700H显然,一个物理地址可以有多个逻辑地址。3.48086的存储器组织3.4.2存储器分段管理和物理地址的形成偏移地址:说明主存单元距离段起始位置的偏移量。

每段不超过64KB,偏移地址也可用16位数据表示。段地址:说明逻辑段在主存中的起始位置。

8086规定段地址必须是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址。3.48086的存储器组织3.4.2存储器分段管理和物理地址的形成8086对逻辑段的要求是:

段地址低4位均为0,每段最大不超过64KB。每个段不要求必须是64KB,段与段可以重叠。1MB空间最多能分成多少个段?

每隔64K个存储单元开始一个段,所以1MB最少有:

220÷216=16个段每隔16个存储单元就可以开始一个段,所以1MB最多有:

220÷16=216=64K个段1MB空间最少能分成多少个段?各个逻辑段独立示意图各个逻辑段重叠示意图3.48086的存储器组织3.4.3信息的分段存储与段寄存器的关系代码段用来存放程序的指令序列:代码段寄存器CS存放代码段的段地址,指令指针寄存器IP指示下条指令的偏移地址;处理器利用CS:IP取得下一条要执行的指令。堆栈段确定堆栈所在的主存区域:堆栈段寄存器SS存放堆栈段的段地址,堆栈指针寄存器SP指示堆栈栈顶的偏移地址;处理器利用SS:SP操作堆栈顶的数据。3.48086的存储器组织3.4.3信息的分段存储与段寄存器的关系数据段存放当前运行程序所用的数据:数据段寄存器DS存放数据段的段地址,存储器寻址方式得到存储器中操作数的偏移地址。处理器利用DS:EA存取数据段中的数据。附加段是附加的数据段,也用于数据的保存:附加段寄存器ES存放附加段的段地址,存储器寻址方式得到存储器中操作数的偏移地址。处理器利用ES:EA存取附加段中的数据。串操作指令将附加段作为其目的操作数的存放区域。程序员如何分配各个逻辑段?3.48086的存储器组织3.4.3信息的分段存储与段寄存器的关系程序的指令序列必须安排在代码段;程序使用的堆栈一定在堆栈段;程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段。数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。3.58086的I/O组织

I/O接口与CPU之间的通信是利用称为I/O端口的寄存器来完成的。微型机系统要为I/O芯片的每个端口分配一个地址,各个端口有唯一的I/O地址与之对应,是单独编址的。

8086CPU地址总线的低16位用来对8位I/O端口寻址,I/O地址空间为65536,即可访问65536个8位的I/O端口,寻址范围是64KB。任何两个编号相邻的8位端口可以组成一个16位端口。3.68086的寻址方式指令由操作码和操作数两部分组成:操作码:说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。操作码操作数操作数:指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数。3.68086的寻址方式指令中的操作数,可以是一个具体的数值,可以是存放数据的寄存器,或指明数据在主存位置的存储器地址。

指令系统设计了多种操作数的来源,寻找操作数的过程就是操作数的寻址方式。8086的寻址方式有:

立即数寻址方式寄存器寻址方式存储器寻址方式3.68086的寻址方式MOVdest,src ;dest←src;MOV指令的功能是将源操作数src;传送至目的操作数destMOVAL,05H ;AL←05HMOVBX,AX;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]指令的助记符格式:

操作码操作数1,操作数2 ;注释立即数寻址

指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。可以是8位数i8(00H~FFH),可以是16位数i16(0000H~FFFFH)。立即数寻址方式常用来给寄存器赋值。MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102HA1H00H05HA1H00H02H01H……小地址端大地址端寄存器寻址MOV

AX,1234H;AX←1234HMOV

BX,AX

;BX←AX操作数存放在CPU的内部寄存器REG中8位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4个段寄存器SEG:CS/DS/SS/ES存储器寻址

指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中。8086设计了多种存储器寻址方式:

直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式存储器寻址直接寻址方式有效地址在指令中直接给出,默认的段地址在DS段寄存器,可使用段超越前缀改变。MOVAX,[2000H] ;AX←DS:[2000H];指令代码:A10020MOVAX,ES:[2000H];AX←ES:[2000H];指令代码:26A10020存储器寻址寄存器间接寻址方式有效地址存放在基址寄存器BX,或变址寄存器SI、DI,或基址指针BP中。段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变。MOVAX,[BX]

;AX←DS:[BX]MOVAX,ES:[DI];AX←ES:[SI]存储器寻址寄存器相对寻址方式

有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI。

有效地址=BX/BP/SI/DI+8/16位位移量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论