Win32汇编语言-汇编语言程序设计基础-体系结构.ppt

上传人:sh****n 文档编号:6567499 上传时间:2020-02-29 格式:PPT 页数:30 大小:969.05KB
返回 下载 相关 举报
Win32汇编语言-汇编语言程序设计基础-体系结构.ppt_第1页
第1页 / 共30页
Win32汇编语言-汇编语言程序设计基础-体系结构.ppt_第2页
第2页 / 共30页
Win32汇编语言-汇编语言程序设计基础-体系结构.ppt_第3页
第3页 / 共30页
点击查看更多>>
资源描述
2020 2 29 1 Windows32位汇编语言程序设计体系结构 第二节 宋军计算机学院信息安全系songjun 2 2020 2 29 主要内容 IA 32处理器体系结构IA 32CPU的工作模式IA 32CPU寄存器组IA 32存储器管理实模式保护模式 3 2020 2 29 微机系统 硬件 软件 汇编程序主要使用寄存器 汇编程序员关心存储器地址 汇编程序对端口进行操作 4 2020 2 29 存储器地址 存储器地址是存储单元的编号每个存储单元存放一个字节量的数据一个字节B Byte 包含8个二进制位b bit 存储容量指存储器所具有的存储单元个数基本单位是字节B 更大的容量单位有KB 千字节 MB 兆字节 GB 千兆字节 TB 兆兆字节 5 2020 2 29 微处理器 CPU 微处理器是微机的硬件核心主要包含指令执行的运算和控制部件 还有多种寄存器对汇编程序员来说 微处理器抽象为以名称存取的寄存器课程以Intel32位微处理器为主体学习32位汇编语言程序设计 6 2020 2 29 Intel微处理器发展 80386 80486 奔腾 奔腾II 奔腾4 80286 奔腾III 4004 摩尔定律 Moore sLaw 摩尔定律是指IC上可容纳的晶体管数目 约每隔18个月将会增加一倍 性能也将提升一倍 IA 32 8086 IA 64 安腾 7 2020 2 29 Intel微处理器发展 4位微处理器 40048位微处理器 8008 8080 808516位微处理器 8086 8088 80186 8028632位微处理器 IA 32CPU80386 80486 Pentium MMXPentium P6 Pentium464位微处理器 Xeon PentiumM CoreDuo 8 2020 2 29 IA 32CPU工作模式 实地址模式 Real addressMode 实现8086处理器的程序设计环境所有的Intel处理器都是从实地址模式引导的保护模式 ProtectedMode 处理器的主要状态虚拟8086模式 Virtual 8086Mode 系统管理模式 SystemManagementMode 电源管理 系统安全等自定义特定系统启动过程 环境 保护模式下的Windows操作系统 9 2020 2 29 IA 32基本执行环境 地址空间保护模式 4GB内存寻址 0 232 1 虚拟8086模式 每个程序独立1MB内存实地址模式 1MB内存寄存器组寄存器是CPU内部的高速存储单元基本寄存器 8个通用寄存器 6个段寄存器 一个标志寄存器 EFLAGS 1个指令指针 EIP 浮点单元 FPU 8个浮点寄存器系统寄存器 内存管理 控制 中断 测试其它寄存器 MMX 10 2020 2 29 常用寄存器组 汇编语言程序员 CPU是可编程的寄存器组 11 2020 2 29 基本寄存器 通用寄存器4个数据寄存器 EAX EBX ECX EDX 2个变址寄存器 ESI EDI 2个指针寄存器 ESP EBP 1个指令指针寄存器 EIP 1个标志寄存器 EFlags 6个段寄存器 ES CS SS DS FS GS 12 2020 2 29 通用寄存器 AHALBHBLCHCLDHDLSPBPDISI 累加器基址变址计数数据堆栈指针基址指针目的变址源变址 32位 16位 AXBXCXDXSPBPDISI 16位名称 EAXEBXECXEDXESPEBPEDIESI 32位名称 高16位扩展 AX BX CX DX SP BP DI SI分别是EAX EBX ECX EDX ESP EBP EDI ESI的低16位AL BL CL DL分别是AX BX CX DX的低八位AH BH CH DH分别是AX BX CX DX的高八位 13 2020 2 29 通用寄存器 关系每一个32位寄存器的低字是相应的16位寄存器 对其中某16位的操作 并不影响另外对应16位的数据 前4个16位寄存器又分成高8位和低8位两个独立的寄存器 对其中某8位的操作 不影响另外对应8位的数据用途可以用来传送和暂存数据 参与算术逻辑运算 保存运算结果32位和16位的通用寄存器也可以保存存储器地址每个寄存器又有它们各自的专用目的 14 2020 2 29 数据寄存器 EAX EBX ECX EDX 数据寄存器主要用来保存操作数和运算结果等信息 从而节省读取操作数所需占用总线和访问存储器的时间 EAX累加器 存放操作数和结果 乘除运算 I O指令中用于寄存器与外部设备传送信息EBX基址寄存器 查表和间接寻址时存放基址ECX计数寄存器 串操作和循环中做计数 隐含 EDX数据寄存器 乘除运算 I O指令中特指端口地址 15 2020 2 29 数据寄存器EAX和EDX的乘 除运算 乘法运算除法运算 16 2020 2 29 17 2020 2 29 变址寄存器 ESI EDI 变址寄存器常用于存储器寻址时提供地址ESI源变址寄存器EDI目的变址寄存器变址寄存器不可分割成8位寄存器 SI和DI是ESI和EDI的低16位 作为通用寄存器 也可存储算术逻辑运算的操作数和运算结果串操作类指令中 ESI和EDI具有特定功能 SI ESI与DS DI EDI与ES联用 18 2020 2 29 指针寄存器 ESP EBP 指针寄存器用于寻址内存堆栈内的数据ESP为堆栈指针寄存器 指示栈顶的偏移地址 ESP不能再用于其他目的 具有专用目的EBP为基址指针寄存器 表示数据在堆栈段中的基地址 栈顶 堆栈段寄存器SS和指针寄存器ESP或EBP共同指示堆栈的存储空间注意 指针寄存器不可再分割成8位寄存器 SP和BP分别是ESP和EBP的低16位 19 2020 2 29 堆栈示例 下面是按调用约定 stdcall调用函数test intp1 intp2 的汇编代码 假设执行函数前堆栈指针ESP为NNpushp2 参数2入栈 ESP 4h ESP NN 4hpushp1 参数1入栈 ESP 4h ESP NN 8hcalltest 压入返回地址ESP 4h ESP NN 0Ch 进入函数内 pushebp 保护先前EBP指针 EBP入栈 ESP 4h ESP NN 10hmovebp esp 设置EBP指针指向栈顶NN 10hmoveax dwordptr ebp 0ch ebp 0ch为NN 4h 即参数2的位置movebx dwordptr ebp 08h ebp 08h为NN 8h 即参数1的位置subesp 8 局部变量所占空间ESP 8 ESP NN 18h addesp 8 释放局部变量 ESP 8 ESP NN 10hpopebp 出栈 恢复EBP ESP 4 ESP NN 0Chret8 ret返回 弹出返回地址 ESP 4 ESP NN 08h 后面加操作数8为平衡堆栈 ESP 8 ESP NN 恢复进入函数前的堆栈 20 2020 2 29 指令指针 EIP 指令指针寄存器EIP 指示代码段中指令的偏移地址存放下次将要执行的指令在代码段的偏移量通过CS EIP寄存器来控制指令序列的执行流程 21 2020 2 29 堆栈 Stack 堆栈是主存中一个特殊的区域它采用先进后出FILO FirstInLastOut 或后进先出LIFO LastInFirstOut 的原则进行存取操作 而不是随机存取操作方式 堆栈通常由处理器自动维持 在IA 32中 由堆栈段寄存器SS和堆栈指针寄存器ESP共同指示 22 2020 2 29 通用寄存器的特殊用法 某些通用寄存器有些特殊的用法 EAX在乘法和除法指令中校自动使用 通常称之为扩展累加寄存器 CPU自动使用ECX作为循环计数器 ESP寻址堆栈 一种系统内存结构 上的数据 ESP寄存器一般不用于算术运算和数据传送 通常称之为扩展堆栈指针寄存器 ESI和EDI通常用于内存数据的高速传送 通常称之为扩展源指针和扩展目的指针寄存器 EBP由高级语言用来引用堆栈上的函数参数和局部变量 除非用于高级程序设计技巧中 EBP一般不在算术运算和数据传送中使用 通常称之为扩展帧指针寄存器 23 2020 2 29 段寄存器 IA 32CPU有6个16位段寄存器CS 代码段 指明代码段的起始地址SS 堆栈段 指明堆栈段的起始地址DS 数据段 指明数据段的起始地址ES 附加段 指明附加段的起始地址FS 数据段 指明数据段的起始地址GS 数据段 指明数据段的起始地址每个段寄存器用来确定一个逻辑段的起始地址 每种逻辑段均有各自的用途 24 2020 2 29 段寄存器 在16位CPU系统中 它只有4个段寄存器 程序在任何时刻至多有4个正在使用的段可直接访问在32位微机系统中 它有6个段寄存器 所以 在此环境下开发的程序最多可同时访问6个段 32位CPU有两个不同的工作方式 实方式和保护方式 在每种方式下 段寄存器的作用不同实方式 前4个段寄存器CS DS ES和SS与先前CPU中的所对应的段寄存器的含义完全一致 内存单元的逻辑地址仍为 段值 偏移量 的形式 为访问某内存段内的数据 必须使用该段寄存器和存储单元的偏移量 保护方式 在此方式下 情况要复杂得多 装入段寄存器的不再是段值 而是称为 选择子 Selector 的某个值 25 2020 2 29 标志寄存器 EFlags 控制CPU的操作或反映CPU某此运算的结果的独立二进制位构成 控制标志 控制CPU的操作状态标志 反映CPU运算的结果系统标志 反映CPU运行状态 26 2020 2 29 EFLAGS示意图 27 2020 2 29 浮点单元 FPU 高速浮点运算8个浮点数据寄存器ST0 7控制寄存器指针寄存器 28 2020 2 29 寄存器与存储器的比较 29 2020 2 29 小结 数据寄存器 EAX EBX ECX EDX的一般用途和特点变址寄存器 ESI EDI的一般用途指针寄存器 ESP EBP的一般用途指令指针 EIP的一般用途堆栈段寄存器 CS DS ES SS FS GS标志寄存器 EFlags 30 2020 2 29 例题 在80 x86微机的输入 输出指令中 I O端口号通常是由DX寄存器提供的 但有时也可以在指令中直接指定00 FFH的端口号 试问可直接由指令指定的I O端口数 下列操作可使用哪些寄存器1 加法和减法2 循环计数3 乘法和除法4 保存段地址5 表示运算结果为06 将要执行的指令地址7 将要从堆栈取出数据的地址
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!