资源描述
第二章 IA-32微处理器的 功能结构,计算机体系结构 = computer architecture (计算机系统结构),计算机体系结构是程序员所看到的系统的一些属性: 概念性的结构和功能上的表现,这些属性既不同于数据流和控制的组织,也不同于逻辑设计和物理实现。,Amdahl,1964,计算机体系结构是连接硬件和软件的一门学科,它研究的内容不但涉及计算机硬件,也涉及计算机软件。,2.2 IA-32微处理器的功能结构,计算机体系结构的含义,“系统结构” 是指概念性结构和功能特性(功能模块),就相当于动物的器官组成及其功能特性,如鸡有胃,胃可以消化食物。至于鸡的胃是什么形状的、鸡的胃部由什么组成就不是“系统结构”研究的问题了,而是“系统组成”研究的问题。所谓“系统组成”就是在逻辑上如何实现这种功能(功能模块的组成器件)。而计算机物理实现,主要着眼于器件技术和微组装技术(器件的物理实现)。,计算机体系结构(应用)、组成(设计)及物理实现(制造),2.2.1 Intel8086微处理器的功能结构,总线接口单元BIU 由段寄存器(CS、DS、SS、ES)、指令指针寄存器(IP)、地址加法器、内部寄存器、指令队列缓冲器及I/O控制逻辑等部分组成。 执行单元部件EU 由通用寄存器组、专用寄存器组、算术逻辑运算单元(ALU)、标志寄存器(FR)和内部控制逻辑组成。,执行单元,每条指令的执行有取指、译码和执行。,早期计算机指令执行过程:,指令花费时间取指指令执行,8088CPU指令执行过程:,指令的重叠操作,指令花费时间指令执行,2.2.2 80386的功能结构,存储器组织 拥有32位数据线和地址线,可以寻址4GB的物理地址; 内部执行环境(寄存器组) 首次将32位的寄存器组引入80x86体系的微处理器中, 32位的低半部分向下兼容;段寄存器仍为16位,段空间为4GB; 操作模式 实地址;保护模式;虚拟8086模式;,80386的主要特点,2.3 IA-32结构微处理器 的执行环境,220=1MB, 地址由00000-FFFFF(H)编码 若存放的信息是字节,则按顺序存放 若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地址 若存放的信息是双字,则将双字的低位字存放在低地址,高位字存放在高地址,2.3.2 基本执行环境 (1)存储器地址空间(8086),(2)基本程序执行寄存器,实地址方式存储器组织,四个不同的段:代码段存放机器指令;数据段存放数据信息;堆栈段供堆栈使用;附加段通常用来存放附加数据; 8086有四个16位段寄存器:cs代码段; ds数据段; ss堆栈段; es附加段。 地址的标准写法为:“段:偏移量”。注意由于位移可以重叠,所以给出的“段:偏移量”不是唯一的。如下列地址均指向同一内存单元: 0000:0123 0002:0103 0008:00A3 0010:0023 0012:0003,段可以位于内存中的任何位置,段的首地址必须能被16整除; 若段寄存器存放的是10H,而偏移量是100H,下列步骤说明实际物理地址计算过程: 段寄存器: 0000 0000 0001 0000 (10H) 左偏四位:0000 0000 0001 0000 偏移量: 0000 0001 0000 0000 (100H) 段加偏移量 0000 0000 0010 0000 0000 (200H),存储器物理地址的形成,逻辑地址 是程序中使用的地址,它由段基址和段内偏移值所组成,段基址与段内偏移值都为16位的二进制数。 物理地址 也叫实际地址或绝对地址,是CPU访问存储器时实际使用的地址,为20位地址。,物理地址段基址16段内偏移地址。,【例】各独立段的分配情况示例。,设CS=B000H、DS=1CDEH、SS=4200H、ES=0150H,它们分别为代码段、数据段、堆栈段和附加段的段首址。自每个段首址开始,各段均占64KB的范围,各段之间互不重叠。,【例】各段相互重叠情况示例。,设CS=0200H、DS=0400H、SS=0480H,这样代码段、数据段和堆栈段的物理首地址分别为02000H、04000H和04800H。其中代码段占8KB地址空间,数据段占2KB,堆栈段占256B,SP=0100H。如图所示。,(1)指令指针寄存器EIP (2)段寄存器 (3)通用寄存器 (4)程序状态和控制寄存器,2.3.4 基本程序执行寄存器,0,15,16,31,0,15,0,15,16,31,7,8,AL,BL,CL,DL,AX,BX,CX,DX,AH,BH,CH,DH,EAX,EBX,ECX,EDX,EIP,CS,DS,SS,ES,FS,GS,SP,BP,SI,DI,ESP,EBP,ESI,EDI,FLAGS,EFLAGS,EAX 累加器寄存器:存放操作数和结果 EBX 基址寄存器:在DS段中的数据指针;存放操作数 ECX 计数寄存器:串和循环操作的计数器 EDX 数据寄存器:I/O指针,1. 通用寄存器,基本寄存器:在程序执行时暂时保存中间结果;在进行算术运算和逻辑运算时,通用寄存器任何一个都可以作为源操作数或目的操作数。,指针和变址寄存器,ESI 串操作的源指针 EDI 串操作的目标指针 ESP 堆栈指针 EBP 堆栈上数据指针,通用寄存器的特殊用途和隐含性质,6个段寄存器,保存16位段基址: CS 代码段 SS 堆栈段 DS 数据段 ES 附加段 FS 数据段F GS数据段G,2. 段寄存器和存储器分段,指向数据段,3、EFLAGS寄存器,(1)状态标志位,CF:进位标志位,当执行一个加法运算指令使最高位产生进位时,或者执行一个减法运算指令使最高位引起借位,则CF=1;否则CF=0。 PF:奇偶标志位,若运算结果的低8位中所含1的个数为偶数,则PF=1;否则PF=0。 AF:辅助进位标志位。当加法运算时,如果第三位往第四位有进位,或者当减法运算时,第三位从第四位有借位,则AF=1;否则AF=0。 ZF:零标志位,当运算结果为0时,ZF=1;否则ZF=0。 SF:符号标志位,当运算结果的最高位为1时,SF=1; OF:溢出标志位,在算术运算中,带符号数的运算结果超出了8位(+127-128)或者16位(+32767-32768)数据所能表达的范围时,则OF=1。 IF:中断允许标志位。若IF=1,则CPU可以响应可屏蔽中断请求;,CF和OF的区别,O=C CS0,C1,(2)DF标志,DF:方向标志位,控制串操作指令的标志。若DF=0则执行串操作指令后,变址寄存器自动增量。,(3)系统标志和IOPL字段,1、中断允许标志I,2、追踪标志T,3、IOPL特权级字段,条件转移指令,JCXZ (CX = 0 转),1、根据单个标志位的转移指令,说明:指令中的字母N表示not,如果不带N说明标志为0转移,如果带N说明标志为1转移。,4、指令指针,8086CPU中的指令指针IP,它总是保存下一次将要从主存中取出指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令( JMP、CALL、RET、IRET )等。,8个通用寄存器 : AX , BX , CX , DX , SP , BP , SI , DI 4个段寄存器 : DS , CS , SS , ES 1个指令指针寄存器 : IP 1个标志寄存器材: FR,FR的格式,CF,PF,AF,ZF,SF,TF,IF,DF,OF,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,较验,进位,辅助进位,零标志,符号标志,跟踪标志,中断标志,方向标志,溢出标志,2.4 8086的寄存器,
展开阅读全文