




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/5/30,1,Windows 32位汇编语言 程序设计体系结构第二节,宋军 计算机学院信息安全系 ,2,2019/5/30,主要内容,IA-32 处理器体系结构 IA-32 CPU的工作模式 IA-32 CPU寄存器组 IA-32 存储器管理 实模式 保护模式,3,2019/5/30,微机系统,硬件、软件,汇编程序主要使用寄存器,汇编程序员关心存储器地址,汇编程序对端口进行操作,4,2019/5/30,存储器地址,存储器地址是存储单元的编号 每个存储单元存放一个字节量的数据 一个字节B(Byte)包含8个二进制位b(bit) 存储容量指存储器所具有的存储单元个数 基本单位是字节B。 更大的容量单位有 KB(千字节)、MB(兆字节)、GB(千兆字节)TB(兆兆字节),5,2019/5/30,微处理器(CPU),微处理器是微机的硬件核心 主要包含指令执行的运算和控制部件,还有多种寄存器 对汇编程序员来说,微处理器抽象为以名称存取的寄存器 课程以Intel 32位微处理器为主体学习32位汇编语言程序设计,6,2019/5/30,Intel微处理器发展,80386,80486,奔腾,奔腾II,奔腾4,80286,奔腾III,4004,摩尔定律(Moores Law) 摩尔定律是指IC上可容纳的晶体管数目,约每隔18个月将会增加一倍,性能也将提升一倍!,IA-32,8086,IA-64(安腾),7,2019/5/30,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,8,2019/5/30,IA-32CPU工作模式,实地址模式(Real-address Mode) 实现8086处理器的程序设计环境 所有的Intel处理器都是从实地址模式引导的 保护模式(Protected Mode) 处理器的主要状态 虚拟8086模式 (Virtual-8086 Mode) 系统管理模式(System Management Mode) 电源管理、系统安全等 自定义特定系统启动过程,环境:保护模式下的Windows操作系统,9,2019/5/30,IA-32 基本执行环境,地址空间 保护模式:4GB内存寻址(0232-1) 虚拟8086模式:每个程序独立1MB内存 实地址模式:1MB内存 寄存器组 寄存器是CPU内部的高速存储单元 基本寄存器:8个通用寄存器,6个段寄存器,一个标志寄存器(EFLAGS),1个指令指针(EIP) 浮点单元(FPU):8个浮点寄存器 系统寄存器:内存管理、控制、中断、测试 其它寄存器:MMX,10,2019/5/30,常用寄存器组,汇编语言程序员:CPU是可编程的寄存器组,11,2019/5/30,基本寄存器,通用寄存器 4个数据寄存器(EAX、EBX、ECX、EDX) 2个变址寄存器(ESI、EDI) 2个指针寄存器(ESP、EBP) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 6个段寄存器(ES、CS、SS、DS、FS、GS),12,2019/5/30,通用寄存器,AH AL BH BL CH CL DH DL SP BP DI SI,累加器 基址变址 计数 数据 堆栈指针 基址指针 目的变址 源变址,32位,16位,AX BX CX DX SP BP DI SI,16位名称,EAX EBX ECX EDX ESP EBP EDI ESI,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,2019/5/30,通用寄存器,关系 每一个32位寄存器的低字是相应的16位寄存器,对其中某16位的操作,并不影响另外对应16位的数据; 前4个16位寄存器又分成高8位和低8位两个独立的寄存器,对其中某8位的操作,不影响另外对应8位的数据 用途 可以用来传送和暂存数据,参与算术逻辑运算,保存运算结果 32位和16位的通用寄存器也可以保存存储器地址 每个寄存器又有它们各自的专用目的,14,2019/5/30,数据寄存器(EAX/EBX/ECX/EDX),数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 EAX累加器:存放操作数和结果,乘除运算、I/O指令中用于寄存器与外部设备传送信息 EBX基址寄存器:查表和间接寻址时存放基址 ECX计数寄存器:串操作和循环中做计数(隐含) EDX数据寄存器:乘除运算、I/O指令中特指端口地址,15,2019/5/30,数据寄存器EAX和EDX的乘、除运算,乘法运算 除法运算,16,2019/5/30,17,2019/5/30,变址寄存器(ESI/EDI),变址寄存器常用于存储器寻址时提供地址 ESI源变址寄存器 EDI目的变址寄存器 变址寄存器不可分割成8位寄存器,SI和DI是ESI和EDI的低16位。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果 串操作类指令中,ESI和EDI具有特定功能,SI/ESI与DS、DI/EDI与ES联用,18,2019/5/30,指针寄存器(ESP/EBP),指针寄存器用于寻址内存堆栈内的数据 ESP为堆栈指针寄存器,指示栈顶的偏移地址,ESP不能再用于其他目的,具有专用目的 EBP为基址指针寄存器,表示数据在堆栈段中的基地址(栈顶 ) 堆栈段寄存器SS和指针寄存器ESP或EBP共同指示堆栈的存储空间 注意:指针寄存器不可再分割成8位寄存器,SP和BP分别是ESP和EBP的低16位,19,2019/5/30,堆栈示例,下面是按调用约定_stdcall 调用函数test(int p1,int p2)的汇编代码 ;假设执行函数前堆栈指针ESP为NN push p2 ;参数2入栈, ESP -= 4h , ESP = NN - 4h push p1 ;参数1入栈, ESP -= 4h , ESP = NN - 8h call test ;压入返回地址 ESP -= 4h, ESP = NN - 0Ch ;/进入函数内 push ebp ;保护先前EBP指针, EBP入栈, ESP-=4h, ESP = NN - 10h mov ebp, esp ;设置EBP指针指向栈顶 NN-10h mov eax, dword ptr ebp+0ch ;ebp+0ch为NN-4h,即参数2的位置 mov ebx, dword ptr ebp+08h ;ebp+08h为NN-8h,即参数1的位置 sub esp, 8 ;局部变量所占空间ESP-=8, ESP = NN-18h . add esp, 8 ;释放局部变量, ESP+=8, ESP = NN-10h pop ebp ;出栈,恢复EBP, ESP+=4, ESP = NN-0Ch ret 8 ;ret返回,弹出返回地址,ESP+=4, ESP=NN-08h, 后面加操作 数8为平衡堆栈,ESP+=8,ESP=NN, 恢复进入函数前的堆栈. ,20,2019/5/30,指令指针(EIP),指令指针寄存器EIP,指示代码段中指令的偏移地址 存放下次将要执行的指令在代码段的偏移量 通过CS : EIP寄存器来控制指令序列的执行流程,21,2019/5/30,堆栈(Stack),堆栈是主存中一个特殊的区域 它采用先进后出FILO(First In Last Out)或后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存取操作方式。 堆栈通常由处理器自动维持。在IA-32中,由堆栈段寄存器SS和堆栈指针寄存器ESP共同指示,22,2019/5/30,通用寄存器的特殊用法,某些通用寄存器有些特殊的用法: EAX在乘法和除法指令中校自动使用:通常称之为扩展累加寄存器。 CPU自动使用ECX作为循环计数器。 ESP寻址堆栈(一种系统内存结构)上的数据,ESP寄存器一般不用于算术运算和数据传送,通常称之为扩展堆栈指针寄存器。 ESI和EDI通常用于内存数据的高速传送,通常称之为扩展源指针和扩展目的指针寄存器。 EBP由高级语言用来引用堆栈上的函数参数和局部变量。除非用于高级程序设计技巧中,EBP一般不在算术运算和数据传送中使用。通常称之为扩展帧指针寄存器。,23,2019/5/30,段寄存器,IA-32CPU有6个16位段寄存器 CS(代码段)指明代码段的起始地址 SS(堆栈段)指明堆栈段的起始地址 DS(数据段)指明数据段的起始地址 ES(附加段)指明附加段的起始地址 FS(数据段)指明数据段的起始地址 GS(数据段)指明数据段的起始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途,24,2019/5/30,段寄存器,在16位CPU系统中,它只有4个段寄存器,程序在任何时刻至多有4个正在使用的段可直接访问 在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。 32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用不同 实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。 保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。,25,2019/5/30,标志寄存器(EFlags),控制CPU的操作或反映CPU某此运算的结果的独立二进制位构成。 控制标志:控制CPU的操作 状态标志:反映CPU运算的结果 系统标志:反映CPU运行状态,26,2019/5/30,EFLAGS示意图,27,2019/5/30,浮点单元(FPU),高速浮点运算 8个浮点数据寄存器 ST0-7 控制寄存器 指针寄存器,28,2019/5/30,寄存器与存储器的比较,29,2019/5/30,小结,数据寄存器:EAX/EBX/ECX/EDX的一般用途和特点 变址寄存器:ESI/EDI的一般用途 指针寄存器:ESP/EBP的一般用途 指令指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 7300.308-2025饲料添加剂第3部分:矿物元素及其络(螯)合物苏氨酸锌螯合物
- 项目四运营抖音短视频李丽泸州97课件
- 硅酮胶采购2025年
- 2020-2025年中级注册安全工程师之安全生产法及相关法律知识全真模拟考试试卷A卷含答案
- 二零二五年度智能家居系统集成房屋修缮合同
- 二零二五年度高级会计师职业责任担保合同
- 2025年度民事违约起诉书:涉及智慧城市建设的合同纠纷解决
- 2025版车库购置与产权登记服务合同范本
- 二零二五年度#筑梦的舞者#舞蹈培训机构品牌合作合同
- 二零二五年新型餐厅部分股权转让与餐饮品牌建设协议
- 机械制图试题库及参考答案
- 《育婴师培训》-课件:三浴锻炼与抚触
- 脑动脉供血不足的护理查房
- 双辊式铝带连续铸轧机-(送审稿)
- 氯化钾口服溶液-药品临床应用解读
- 《新概念英语》第三册课文详解及课后答案
- 拉力试验机破坏性测量系统分析报告
- 王者荣耀卖号合同模板
- VDA6.3-2023版审核检查表
- 北京协和医院遗体解剖检验同意书
- 金字塔原理-课件
评论
0/150
提交评论