《80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第2章 80x86计算机组织结构》由会员分享,可在线阅读,更多相关《80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第2章 80x86计算机组织结构(34页珍藏版)》请在金锄头文库上搜索。
1、第2章 80X86计算机组织结构,2.1 80X86 计算机的基本结构 2.2 80X86 CPU 的寄存器 2.3 内存组织结构 2.4 80X86 CPU 的工作模式 2.5 存储器管理机制,2.1 80X86 计算机的基本结构,2.1.1 中央处理器 2.1.2 总线结构 2.1.3 存储器 2.1.4 外部设备,2.1 80X86 计算机的基本结构,微型计算机硬件系统结构主要是由三部分组成,它们是:中央处理器CPU(Central Processing Unit)、存储器(Memory)、输入输出(InputOutput)设备,并且用系统总线(System Bus)将它们连接在一起,如
2、图2-1所示。,图 2-1 计算机的基本结构,2.1.1中央处理器,中央处理器又称为微处理器(Microprocessor),内部包括运算器、控制器和寄存器三部分组成。中央处理器CPU的主要功能是执行存放在内存储器中的指令,当 CPU执行一条指令时,首先从内存储器中取出指令,分析指令的操作码,如果指令中要求从内存中读取操作数,经过译码分析后就会产生相应的从内存中读取操作数的控制命令,控制微机执行指令所要求的操作。 运算器也称为算术逻辑部件,是用来执行指令所要求的算术运算、逻辑运算和数据传送等操作。 控制器是控制执行步骤;从内存中取出指令,分析指令的操作码, 完成操作数的存取,发出相应的控制命令
3、等。,2.1.2 总线结构,总线负责传送地址、数据和控制信息,因此包括: 数据总线DB(Data Bus) 地址总线AB(Address Bus) 控制总线CB(Control Bus) 三总线的主要任务是负责CPU与内存、外存、外部设备交换信息。,1. 数据总线DB 数据总线是用来传送数据的。CPU与内存、I/O设备之间通过数据总线传送数据,80x86系列的数据总线有8位、16位、32位和64位。 2.地址总线AB 地址总线是用来传送地址的。当CPU与内存、I/O设备之间交换信息时,首先要传送地址,内存中的每个字节都对应着一个唯一的地址,I/O设备也是如此。地址总线的位数与寻址空间有着直接的
4、关系。例如:8086/8088地址总线20根,则可访问的地址为: 220 =1,048,576 = 1M 则8086/8088最大可用的存储空间为1M字节。,.控制总线CB 控制总线是传送控制信息的。CPU与内存、外设备之间的数据传送操作为读写操作,读操作是指CPU从内存、外设接口读取数据,写操作是指CPU把数据写到内存、外设接口中去。读写信息就是控制信息,是通过控制总线传送的。 不同型号的CPU总线位数不同,相应的字长与寻址空间也不同。 如教材表2-1所示。,2.1.3 存储器,存储器是计算机的记忆部件,包括内存(主存)和外部存储器(辅助存储器), 存储器中存放的是指令和数据。存储器由若干存
5、储单元构成,存储单元的最小单位是字节。将所有的存储单元按顺序编号,即每一个字节有一个唯一的编号,这些编号称为存储单元的地址(也称为物理地址)。若CPU要存取某个存储单元的内容,则首先提供该存储单元的地址,然后按地址选中对应的存储单元,就可以对单元内容进行存取操作。 IBM PC机及其兼容机的存储器系统结构基本是相同的,存储器系统主要分为3个主要部分: 程序暂驻区(TPA)、系统内存区和扩展存储区(XMS),其存储映像如图2-2所示。,图2-2 IBM PC机及其兼容机的存储器映像,2.1.4 外部设备,在微机系统中最常用的外部设备有: 键盘 显示器 打印机 外部存储器等 CPU与外部设备交换信
6、息是通过I/O接口电路来完成的。,2.2 80X86 CPU 的寄存器,2.2.1.通用寄存器 2.2.2 控制寄存器,2.2 80X86 CPU 的寄存器,图 2-3 80X86寄存器组,寄存器分为3类: 通用寄存器 控制寄存器 段寄存器,2.2.1.通用寄存器,80x86CPU的通用寄存器包括:4个32位数据寄存器,2个32位指针寄存器,2个32位变址寄存器。 8个8位通用寄存器: AL、AH、BL、BH、CL、CH、DL、DH。 8个16位通用寄存器:AX、BX、CX、DX、SI、DI、BP、SP。 8个32位通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。,
7、表2-.2 通用寄存器的用途,1. 数据寄存器 (AX、BX、CX、DX) 4个16位数据寄存器AX、BX、CX、DX,每个又可以分为两个独立的8位寄存器AH、AL、BH、BL、CH、CL、DH、DL。 4个32位通用寄存器:用于80386以上的机型:EAX、EBX、ECX、EDX。每个寄存器为32位,每个寄存器均可分为1个16位、2个8位寄存器使用。如EAX为32位寄存器,也可将EAX分为AX(16位寄存器)或AH(8位寄存器)或AL(8位寄存器)。,2. 指针寄存器(SP、ESP,BP、EBP、IP、EIP) SP、ESP:堆栈指针寄存器,存放当前堆栈段栈顶的偏移地址,ES与SS堆栈寄存器
8、配合存取堆栈中的数据。在实模式方式(SP),保护模式(ESP)。 BP、EBP为基址指针寄存器,在间接寻址时,用来存放基地址,是相对于堆栈段的基地址。 IP、EIP为指令指针寄存器,是存放当前正在执行的指令的下一条指令的偏移地址,该寄存器所指的地址为代码段的偏移地址。,3. 变址寄存器 SI、ESI为源变址寄存器,间接寻址时,在指令中用于地址寄存器和变址寄存器,在串操作时用于源串的地址。 DI EDI为目的变址寄存器,间接寻址时,在指令中用于地址寄存器和变址寄存器,在串操作时用于目的串的地址,2.2.2 控制寄存器,FLAGS为标志寄存器,用于表示程序运行时的状态和一些特殊控制。 8086/8
9、08880286的标志寄存器为16位,80386以上的标志寄存器为32位。,图2-5 80286 Pentium的标志寄存器,图2-4 8086/8088 标志寄存器,表2-3 8086/8088标志寄存器状态功能表,3段寄存器(CS、DS、SS、ES、FS、GS) 在PC机中存储器是采用分段管理的方法来组织数据,代码和数据是分开存放的,代码放在代码段中,数据放在数据段中,所谓的段(segment)就是在内存中所定义的一片存储空间,因此某个存储单元的物理地址需要用段基地址和偏移地址表示。段的基地址就存放在段寄存器中,一个程序可以由多个段组成. 808680286,有4个段寄存器,即代码段CS、
10、数据段DS、堆栈段SS、附加段ES。在程序执行过程中可以访问4个当前段。 80386及以上的机器,有6个段寄存器,增加了FS、GS为附加的数据段寄存器。在程序执行过程中可以访问6个当前段。,2.3 内存组织结构,2.3.1 内存的地址与字节、字的存放 2.3.2 堆栈,2.3.1内存的地址与字节、字的存放,1内存的地址 在存储器中内存单元的基本单位为字节,每个字节都有一个唯一的地址。,图2-6 内存单元的地址与内容 字的地址:字是由两个字节组成,如图2-6所示,则字1234H的地址为00002H,低字节在前(地址为00002H) 高字节在后(地址为00003H),2存储单元的内容 一个存储单元
11、存放的信息为存储单元的内容 字节单元内容:地址00002H的内容为34H,表示为(0002H)=34H。 字单元内容:多用偶地址来表示字单元的地址,字的低字节在偶地址上为偶地址,地址00002H的字单元内容为1234H,表示为(00002H)=1234H。如图2.6所示。 某单元内容的内容:某单元的内容为要寻找的单元地址,该地址所指的内容为要寻找的内容。,图2-7某单元内容的内容,(0004H)=1234H (1234H)=FFEEH 则记(0004H)=FFEEH;两个括号表示内容的内容,即地址0004H单元的内容的内容为FFEEH。,2.3.2 堆栈,堆栈(stack)是内存中的一块特定区
12、域,是一个常用的数据结构,在堆栈中的内容是按照“先进后出”的原则进行操作的。通常用来暂存数据、子程序(过程)调用与返回,调用中断处理程序与从中断处理程序返回等。 假如:最初SS=2000H,SP100H ,当没有向堆栈中压入任何数据时,栈顶和栈底是指向同一栈空间的,如图 2-7所示。当向堆栈中压入了个字1234H时,首先移动堆栈指针寄存器SP,SP-2SP ,此时SP=0FEH后再将1234H压入SP所指单元中,如图 2-8所示。,2.4 80X86 CPU 的工作模式,2.4.1 实模式 2.4.2 保护模式,2.4.1 实模式,1内存地址的分段 8086/8088地址总线20根可访问的地址
13、为: 220 =1,048,576 = 1M 2分段方法 用16位段地址与16位段内地址的迭加形成20位物理地址,放在16位段寄存器内的段地址定义在任意64K字节存储段的起始地址上,段内地址(偏移地址)定义在64K字节存储段内的任意单元。 地址的组合:物理地址=段地址*16D(或10H)+偏移地址,即物理地址等于2进制的16位段地址乘以16(左移4位)加2进制16位偏移地址。为了书写方便一般采用16进制表示地址和数据,则物理地址等于16进制的4位段地址乘以10H(左移1位)加16进制4位偏移地址。 如图2-9所示。,图2-9 物理地址的组合,图2-10实模式下的存储器的段结构,3物理地址、段地
14、址、段内地址和逻辑地址 (1)物理地址:与内存单元一一对应的20位2进制(或5位16进制)表示的地址为物理地址。 1MB=00000H FFFFFH 每个物理地址代表一个唯一的内存单元。 (2)段地址:将1MB的内存空间分成长为64K字节的程序区和数据区为段,每个段用1个16位2进制地址表示。在实模式下的寄存器为16位寄存器,段地址是存放在段寄存器中,代码段是存放源程序的2进制程序代码,该段的段地址放在CS中,数据段是存放操作数据的,其段地址放在DS中,堆栈段是堆栈用的存储区,其段地址放在SS中,附加段的段地址放在ES中。 (3)段内地址:(偏移地址或偏移值):16位2进制段内地址为偏移地址。
15、不同段内的偏移地址是存放在不同的寄存器中,段寄存器与装偏移地址的寄存器是按照一定的要求组合的。组合方式如表 2-4 所示。对于808680286允许访问4个存储段,80386以上允许访问6个存储段,其段寄存器与偏移地址的寄存器的组合方法如表 2-5 所示。 (4)逻辑地址:用段地址和偏移地址来表示内存单元的地址为逻辑地址,两地址之间用“:”隔开。常写成: 段地址:偏移地址。 例如: 物理地址为00001H 逻辑地址为0000H:0001H 当物理地址为00001H时,其逻辑地址为0000H:0001H,段地址为0000H段内地址为0001H。,4逻辑地址与物理地址的换算关系 逻辑地址是段地址和
16、偏移地址的组合表示,物理地址是段地址和偏移地址的迭加表示。 物理地址=段地址*16D(或10H)+偏移地址 逻辑地址=段地址:偏移地址,图2-12,【例2-7】设逻辑地址为1111H:2222H 则物理地址为:1111H10H+2222H=13332H 表示:当逻辑地址为1111H:2222H时物理地址为13332H 假设段地址1111H为代码段地址,则1111H存放在代码段寄存器CS中,偏移地址2222H就放在指针寄存器IP中。如图2-12所示。,【例2-8】167B6H为物理地址其逻辑地址为多种组合: 1000H:67B6H 1001H:67A6H 1002H:6796H 1366H:3166H 1367H:3156H 167BH:0006H 段地址加1,偏移地址就减10H(16)个字节,则每种组合的物理地址均为167B6H。,5、内存分配方法 例如,某一程序的长度为1020个字节,操作数占510个字节,堆栈段大约用250个字节, 在定义时将代码段长度定为1024D=400H ,数据段长度 512D=200H,堆