汇编语言课程课件-第二章

上传人:我*** 文档编号:146138792 上传时间:2020-09-27 格式:PPT 页数:109 大小:501.50KB
返回 下载 相关 举报
汇编语言课程课件-第二章_第1页
第1页 / 共109页
汇编语言课程课件-第二章_第2页
第2页 / 共109页
汇编语言课程课件-第二章_第3页
第3页 / 共109页
汇编语言课程课件-第二章_第4页
第4页 / 共109页
汇编语言课程课件-第二章_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《汇编语言课程课件-第二章》由会员分享,可在线阅读,更多相关《汇编语言课程课件-第二章(109页珍藏版)》请在金锄头文库上搜索。

1、第二章 微型计算机体系结构,教学重点,IA-32CPU的操作模式 了解IA-32CPU的工作模式 IA-32CPU功能结构 了解指令执行的过程 IA-32CPU寄存器组 IA-32CPU存储器管理,2.1 微机系统概述,硬件 软件,硬件组成,中央处理单元,包括运算器、控制器和寄存器组 运算器执行所有的算术和逻辑运算 控制器负责取指,译码和执行指令 汇编语言程序要使用寄存器,存储器 (Memory),计算机的记忆部件 汇编语言程序员主要关心主存地址,存储器地址(Address),存储器地址是存储单元的编号 每个存储单元存放一个字节量的数据 一个字节B(Byte)包含8个二进制位b(bit) 存储

2、容量指存储器所具有的存储单元个数 基本单位是字节B。 更大的容量单位有 KB(千字节)、MB(兆字节)、GB(千兆字节)TB(兆兆字节),外部设备(外设),实现人机交互和机器间通讯的机电设备,简称外设 输入设备:键盘、鼠标器 输出设备:显示器、打印机 外设通过输入输出接口电路(端口)与系统连接 汇编语言程序中对端口进行操作,总线,总线(BUS)是在计算机各部分之间进行数据传送的一组信号线 数据总线 控制总线 地址总线 CPU通过总线与存储器和外设连接,计算机的软件,系统软件 操作系统 汇编程序和编译程序 应用软件 文本编辑软件 软件开发工具(包),2.2 IA-32微处理器,微处理器是微机的硬

3、件核心 主要包含指令执行的运算和控制部件,还有多种寄存器 对程序员来说,微处理器抽象为以名称存取的寄存器 本书以Intel 32位微处理器为主体学习汇编语言程序设计,IA-32: Intel 32-bit Architecture,Intel微处理器发展,4位微处理器:4004 8位微处理器:8008/8080/8085 16位微处理器:8086/8088/80186/80286 32位微处理器:IA-32CPU80386/80486/Pentium, MMX Pentium/P6/Pentium 4 64位微处理器:Xeon /Pentium M /Core Duo,特权级(Privilie

4、ge Level),IA-32CPU从硬件上实现了特权级的管理功能 4个特权级: 特权级0 特权级3,高,低,IA-32CPU的操作模式,实地址模式 保护模式 虚拟8086工作模式 系统管理模式,实模式(Real-adress Mode),IA-32CPU在上电或复位后,初始化为实地址工作模式(Real-adress Mode) ,简称实模式 兼容Intel8086处理器的程序设计环境 可以切换到其他两种操作模式,实模式的特点,只能寻址1MB物理存储器 分段最大只能是64KB 段基地址和偏移量用16位表示 16位段 可以使用32位寄存器,32位操作数和32位的寻址方式 实模式下的程序具有最高特

5、权级,保护模式(Protected Mode),是32位处理器的主要状态 ,由实模式进入 所有指令和特性都可以使用,保护模式的特点,能寻址4GB物理存储器 分段最大可以是4GB 段基地址和偏移量用32位表示 32位段 使用32位的寻址方式和操作数,虚拟8086模式,虚拟8086模式(Virtual-8086 Mode)是保护模式的特例 工作环境与实模式类似,也有不同: 虚拟8086模式的程序具有最低特权级 多个16位段程序共存于主存并行运行 既可以运行8086程序,又可以利用IA-32CPU的保护机制,系统管理模式,系统管理模式(SMM, System Management Mode)是提供给

6、操作系统实现电源管理和系统安全等功能的一种透明机制,本书以保护模式下的Windows控制台应用程序为例介绍基于IA-32CPU的汇编语言程序设计方法.,IA-32CPU功能结构,总线接口单元(BIU,Bus Interface Unit) 指令预取单元(Code Prefetch Unit) 指令译码单元(Instruction Decode Unit) 执行单元(Execution Unit) 分段部件(Segment Unit) 分页部件(Paging Unit),图示,IA-32CPU功能结构图,返回,流水线技术 (pipelining),几条指令的不同阶段同时执行 , 从而提高CPU的

7、利用率 指令流水线 总线接口单元、指令预取单元及指令译码单元 地址流水线 分段部件、分页部件以及总线接口单元,IA-32CPU 寄存器组,对汇编语言程序员来说,IA-32CPU就是可编程的寄存器组,系统寄存器 内存管理寄存器 控制寄存器 调试寄存器 测试寄存器,基本程序运行寄存器 8组通用寄存器 1个标志寄存器 6个段寄存器 1个指令指针寄存器,IA-32CPU 的通用寄存器,32位通用寄存器: EAX, EBX, ECX, EDX EBP, EDI, ESI, ESP E 表示 32位扩展 16位通用寄存器: AX, BX, CX, DX, BP, DI, SI, SP 8位通用寄存器: A

8、H, AL, BH, BL, CH, CL, DH, DL H :16位寄存器的高字节 L : 16位寄存器的低字节,通用寄存器之间的关系,每一个32位寄存器的低字是相应的16位寄存器,对其中某16位的操作,并不影响另外对应16位的数据; 前4个16位寄存器又分成高8位和低8位两个独立的寄存器,对其中某8位的操作,并不影响另外对应8位的数据,通用寄存器的作用,通用寄存器可以用来存放计算的结果和操作数 32位和16位的通用寄存器也可以保存存储器地址 每个寄存器又有它们各自的专用目的,数据寄存器,EAX累加器,使用频度最高,用于算术、逻辑运算和与外设的信息交换; EBX基址寄存器,常用做存放存储器

9、地址; ECX计数器,在循环指令和串操作指令中用作隐含计数器; EDXI/O端口的指针,常用于存放外设端口地址;DX也用来存放双字长数据的高16位,变址寄存器,变址寄存器常用于存储器寻址时提供地址 ESI是源变址寄存器 EDI是目的变址寄存器 串操作类指令中,ESI和EDI具有特别的功能,指针寄存器,指针寄存器用于寻址内存堆栈内的数据 ESP为堆栈指针寄存器,指示栈顶的偏移地址 ESP不能再用于其他目的,具有专用目的 EBP为基址指针寄存器,表示数据在堆栈段中的基地址 堆栈段寄存器SS和指针寄存器ESP或EBP共同指示堆栈的存储空间,堆栈(Stack),堆栈是主存中一个特殊的区域 它采用先进后

10、出FILO(First In Last Out)或后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存取操作方式。 堆栈通常由处理器自动维持。在8086中,由堆栈段寄存器SS和堆栈指针寄存器SP共同指示,指令指针EIP,指令指针寄存器EIP,指示代码段中指令的偏移地址 它与代码段寄存器CS联用,确定下一条指令的物理地址 计算机通过CS : EIP寄存器来控制指令序列的执行流程 EIP寄存器是一个专用寄存器,段寄存器,IA-32CPU有6个16位段寄存器 CS(代码段)指明代码段的起始地址 SS(堆栈段)指明堆栈段的起始地址 DS(数据段)指明数据段的起始地址

11、ES(附加段)指明附加段的起始地址 FS(数据段)指明数据段的起始地址 GS(数据段)指明数据段的起始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途,代码段(Code Segment),代码段用来存放程序的指令序列 代码段寄存器CS存放代码段的段地址 指令指针寄存器EIP指示下条指令的偏移地址 处理器利用CS:EIP取得下一条要执行的指令 在实模式下,处理器利用CS:IP取得下一条要执行的指令,堆栈段(Stack Segment),堆栈段确定堆栈所在的主存区域 堆栈段寄存器SS存放堆栈段的段地址 堆栈指针寄存器ESP指示堆栈栈顶的偏移地址 处理器利用SS:ESP操作堆

12、栈顶的数据 在实模式下,处理器利用CS:EIP取得下一条要执行的指令,数据段(Data Segment),数据段存放运行程序所用的数据 数据段寄存器DS存放数据段的段地址 各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址 处理器利用DS:EA存取数据段中的数据,附加段(Extra Segment),附加段是附加的数据段,也用于数据的保存: 附加段寄存器ES存放附加段的段地址 各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址 处理器利用ES:EA存取附加段中的数据 串操作指令将附加段作为其目的操作数的存放区域,段超越前缀指令,没有指明时,一般的数据访问在DS段;使用EBP

13、访问主存,则在SS段 默认的情况允许改变,需要使用段超越前缀指令: CS:;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据 FS: ;数据段超越,使用数据段的数据 GS: ;数据段超越,使用数据段的数据,标志寄存器,标志(Flag)用于反映指令执行结果或控制指令执行形式 IA-32CPU的各种标志形成了一个32位的标志寄存器EFLAGS 在应用程序中主要使用EFLAGS中低16位的状态,程序设计需要利用标志的状态,EFLAGS示意图,标志的分类,状态标志用来记录程序运行结果的状态信息,许多指令

14、的执行都将相应地设置它 CF ZF SF PF OF AF 控制标志可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF 系统标志 IF TF NT IOPL VM RF AC VIF VIP ID,应用程序中主要使用前面两类标志,进位标志CF(Carry Flag),当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。,483Fh+645Ah=AC99h,没有进位:CF = 0 0206h+FFB0h=(1)01B6H,有进位:CF = 1,零标志ZF(Zero Flag),若运算结果为0,则ZF = 1; 否则ZF = 0,483

15、Fh+645Ah=AC99h,结果不是零:ZF = 0 1284H +ED7CH(1)0000H,结果是零:ZF = 1,注意:ZF为1表示的结果是0,符号标志SF(Sign Flag),运算结果最高位为1,则SF = 1;否则SF = 0,483Fh+645Ah=AC99h,最高位D151:SF = 1 0206h+FFB0h=(1)01B6H,最高位D150:SF = 0,有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态。,奇偶标志PF(Parity Flag),当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0,483Fh+645Ah=A

16、C99h =1010110010011001B 结果的低8位中有4个1,是偶数:PF = 1,PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作或32位双字操作。,溢出标志OF(Overflow Flag),若算术运算的结果有溢出, 则OF1;否则 OF0,483Fh+645Ah = AC99 ,产生溢出:OF = 1 0206h+FFB0h=(1)01B6H ,没有溢出:OF = 0,问题 什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出?,什么是溢出,处理器内部以补码表示有符号数 8位表达的整数范围是:127128 16位表达的范围是:3276732768 32位表达的范围是:-2147483648+2147483647 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确,483Fh+645Ah = AC99h ,就是18495+25690=44185 , 已经超出3276732768范围,产生溢出,故OF1; 另一方面,补码AC99H表达真值是-21351 , 显然运算结果也不正确,溢出和进

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号