汇编教程03.ppt

汇编教程03.ppt

ID:48822147

大小:726.50 KB

页数:83页

时间:2020-01-29

汇编教程03.ppt_第1页
汇编教程03.ppt_第2页
汇编教程03.ppt_第3页
汇编教程03.ppt_第4页
汇编教程03.ppt_第5页
资源描述:

《汇编教程03.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第3章通用数据处理指令3.1数据传送类指令3.2算术运算类指令3.3位操作类指令第3章通用数据处理指令熟悉IA-32处理器通用的基本指令:数据传送指令、算术运算指令逻辑运算和移位操作指令掌握指令功能和编程应用学习指令的注意事项指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等33.1数据传送类指令数据传送把数据从一个位

2、置传送到另一个位置计算机中最基本的操作程序设计中最常使用的指令除标志寄存器传送指令外,均不影响标志位全面而准确地理解每条指令的功能和应用是编写汇编语言程序的关键也是理解处理器如何进行数据处理的核心43.1.1通用数据传送指令提供方便灵活的通用数据传送操作主要有传送MOV和交换XCHG指令源操作数src目的操作数dest30H30H被传送的数据MOV指令的功能51.传送指令MOV把一个字节、字或双字的操作数从源位置传送至目的位置MOVreg/mem,immMOVreg/mem/seg,regMOVreg/seg,memMOVreg/mem,seg并非任意传送!无法翻译就出错!段

3、寄存器6注意1:双操作数必须类型一致MOVESI,DL;错误:类型不一致;ESI为32位寄存器,DL为8位寄存器movesi,edx;正确:两个32位寄存器传送MOVAL,050AH;错误:类型不一致;050AH超过了寄存器AL范围moveax,050ah;正确:双字量数据传送7注意2:操作数必须有明确的类型MOV[EBX],255;错误:无明确类型movbyteptr[ebx],255;正确:BYTEPTR说明是字节操作movwordptr[ebx],255;正确:WORDPTR说明是字操作movdwordptr[ebx],255;正确:DWORDPTR说明是双字操作8注意

4、3:双操作数不允许都是主存单元;假设dbuf1和dbuf2是两个双字变量MOVDBUF2,DBUF1;错误:两个操作数都是存储单元moveax,dbuf1;正确:EAX=DBUF1(将DBUF1内容送EAX)movdbuf2,eax;正确:DBUF2=EAX(将EAX内容送DBUF2)9注意4:不可随意操作专用寄存器MOVDS,@DATA;错误:立即数不能直接传送段寄存器(@DATA是数据段地址)movax,@data;正确:通过AX间接传送给DSmovds,ax102.交换指令XCHG将源操作数和目的操作数内容交换XCHGreg,reg/memXCHGreg/mem,reg

5、通用寄存器与通用寄存器之间通用寄存器或存储器之间空操作指令NOP(=XCHGEAX,EAX)处理器执行空操作该指令,需要化费时间,在主存中也要占用一个字节空间实现短时间延时临时占用代码空间xchgesi,edixchgesi,[edi]xchgal,var113.1.2堆栈操作指令“先进后出FILO”存取的存储区域,只有一个数据出入口,即当前栈顶(不断变化)两种基本操作数据压进堆栈PUSH数据弹出堆栈操作POPSS指向堆栈段的起始位置ESP指定栈顶数据进入堆栈,ESP逐渐减小数据依次弹出、ESP逐渐增大Word1Word2Word3Word4Word5StackPUSHPOP

6、示意图12IA-32处理器堆栈操作返回131.进栈指令PUSHPUSHr16/m16/i16/seg①ESP=ESP-2②SS:[ESP]=r16/m16/i16/segPUSHr32/m32/i32①ESP=ESP-4②SS:[ESP]=r32/m32/i32先将ESP减小作为当前栈顶后将源操作数(立即数、通用寄存器和段寄存器内容或存储器操作数)传送到当前栈顶以字或双字为单位操作进栈双字量数据时,ESP减4进栈字量数据时,ESP减2pusheax示意图14进栈操作返回152.出栈指令POPPOPr16/m16/seg①r16/m16/seg=SS:[ESP]②ESP=ESP

7、+2POPr32/m32①r32/m32=SS:[ESP]②ESP=ESP+4先将栈顶数据传送到目的操作数(通用寄存器、存储单元或段寄存器)后ESP增加作为当前栈顶以字或双字为单位操作出栈双字量数据时,ESP加4出栈字量数据时,ESP加2popeax示意图16出栈操作返回17〔例3-1〕堆栈操作程序;数据段ten=10dvardd67762000h,12345678h;代码段moveax,dvar+4;EAX=12345678Hpusheax;将EAX内容压入堆栈pushdwordptrten;将立即数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。