文档详情

第二章Win汇编语言-汇编语言程序设计基础-体系结构.ppt

发布:2015-08-10约5.14千字共30页下载文档
文本预览下载声明
Windows 32位汇编语言 程序设计体系结构—第二节 宋军 计算机学院信息安全系 songjun@cug.edu.cn 主要内容 IA-32 处理器体系结构 IA-32 CPU的工作模式 IA-32 CPU寄存器组 IA-32 存储器管理 实模式 保护模式 微机系统 硬件、软件 存储器地址 存储器地址是存储单元的编号 每个存储单元存放一个字节量的数据 一个字节B(Byte)包含8个二进制位b(bit) 存储容量指存储器所具有的存储单元个数 基本单位是字节B。 更大的容量单位有 KB(千字节)、MB(兆字节)、GB(千兆字节)TB(兆兆字节) 微处理器(CPU) 微处理器是微机的硬件核心 主要包含指令执行的运算和控制部件,还有多种寄存器 对汇编程序员来说,微处理器抽象为以名称存取的寄存器 课程以Intel 32位微处理器为主体学习32位汇编语言程序设计 Intel微处理器发展 Intel微处理器发展 4位微处理器:4004 8位微处理器:8008/8080/8085 16位微处理器:8086/8088/80186/80286 32位微处理器:IA-32CPU 80386/80486/Pentium, MMX Pentium/P6/Pentium 4 64位微处理器: Xeon /Pentium M /Core Duo IA-32CPU工作模式 实地址模式(Real-address Mode) 实现8086处理器的程序设计环境 所有的Intel处理器都是从实地址模式引导的 保护模式(Protected Mode) 处理器的主要状态 虚拟8086模式 (Virtual-8086 Mode) 系统管理模式(System Management Mode) 电源管理、系统安全等 自定义特定系统启动过程 IA-32 基本执行环境 地址空间 保护模式:4GB内存寻址(0~232-1) 虚拟8086模式:每个程序独立1MB内存 实地址模式:1MB内存 寄存器组 寄存器是CPU内部的高速存储单元 基本寄存器:8个通用寄存器,6个段寄存器,一个标志寄存器(EFLAGS),1个指令指针(EIP) 浮点单元(FPU):8个浮点寄存器 系统寄存器:内存管理、控制、中断、测试 其它寄存器:MMX 常用寄存器组 汇编语言程序员:CPU是可编程的寄存器组 基本寄存器 通用寄存器 4个数据寄存器(EAX、EBX、ECX、EDX) 2个变址寄存器(ESI、EDI) 2个指针寄存器(ESP、EBP) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 6个段寄存器(ES、CS、SS、DS、FS、GS) 通用寄存器 通用寄存器 关系 每一个32位寄存器的低字是相应的16位寄存器,对其中某16位的操作,并不影响另外对应16位的数据; 前4个16位寄存器又分成高8位和低8位两个独立的寄存器,对其中某8位的操作,不影响另外对应8位的数据 用途 可以用来传送和暂存数据,参与算术逻辑运算,保存运算结果 32位和16位的通用寄存器也可以保存存储器地址 每个寄存器又有它们各自的专用目的 数据寄存器(EAX/EBX/ECX/EDX) 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 EAX累加器:存放操作数和结果,乘除运算、I/O指令中用于寄存器与外部设备传送信息 EBX基址寄存器:查表和间接寻址时存放基址 ECX计数寄存器:串操作和循环中做计数(隐含) EDX数据寄存器:乘除运算、I/O指令中特指端口地址 数据寄存器EAX和EDX的乘、除运算 乘法运算 除法运算 变址寄存器(ESI/EDI) 变址寄存器常用于存储器寻址时提供地址 ESI源变址寄存器 EDI目的变址寄存器 变址寄存器不可分割成8位寄存器,SI和DI是ESI和EDI的低16位。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果 串操作类指令中,ESI和EDI具有特定功能,SI/ESI与DS、DI/EDI与ES联用 指针寄存器(ESP/EBP) 指针寄存器用于寻址内存堆栈内的数据 ESP为堆栈指针寄存器,指示栈顶的偏移地址,ESP不能再用于其他目的,具有专用目的 EBP为基址指针寄存器,表示数据在堆栈段中的基地址(栈顶 ) 堆栈段寄存器SS和指针寄存器ESP或EBP共同指示堆栈的存储空间 注意:指针寄存器不可再分割成8位寄存器,SP和BP分别是ESP和EBP的低16位 堆栈示例 下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码 ;假设执行函数前堆栈指针ESP为NN push?? p2??? ;参数2入栈, ESP -= 4h , ESP = NN - 4h push
显示全部
相似文档