第三章 Win32汇编语言-汇编语言程序设计基础-指令系统.pptVIP

第三章 Win32汇编语言-汇编语言程序设计基础-指令系统.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows 32位汇编语言 程序设计体系结构—第三节IA-32指令系统 宋军 计算机学院信息安全系 songjun@cug.edu.cn 主要内容 IA-32通用指令集 数据传送类指令 算术运算类指令 位操作类指令 串操作类指令 控制转移类指令 处理机控制类指令 其他类 IA-32指令系统 计算机的指令系统是指计算机能够执行的全部指令的集合 。 IA-32CPU指令系统包括: ① 通用指令 ② 浮点运算指令 ③ SIMD指令 ④ MMX指令(多媒体扩展指令集 ) ⑤ SSE/SSE2/SSE3指令(单指令多数据流扩展 ) ⑥ 系统指令 ⑦ 64位模式的指令 通用指令集合 ① 数据传送类指令 ② 算术运算类指令 ③ 位操作类指令 ④ 串操作类指令 ⑤ 控制转移类指令 ⑥ 处理机控制类指令 ⑦ 其他类 数据传送指令 数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握 MOV XCHG PUSH POP LEA 要小心段寄存器的操作 不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES ;非法指令:不允许段寄存器间传送 地址传送指令 地址传送指令将存储器单元的逻辑地址送至指定的寄存器 有效地址传送指令 LEA 指针传送指令 LDS 和 LES(LFS/LGS/LSS) 注意:不是获取存储器单元的内容 有效地址传送指令LEA 将存储器操作数的有效地址传送至指定的寄存器中。 在实模式下,使用16位寄存器 在保护模式下,使用32位寄存器 该指令通常用来对指针或变址寄存器EBX、EDI或ESI等置初值之用。 LEA 与 OFFSET lea CPU指令 标号/变量、表达式 综合实例 .386 .model flat, stdcall .data val1 WORD 1000h val2 WORD 2000h arrayB BYTE 10h,20h,30h,40h,50h arrayW WORD 100h,200h,300h arrayD DWORD 10000h,20000h .code start: ; 内存与内存之间的数据交换 mov ax,val1 ; AX = 1000h xchg ax,val2 ; AX = 2000h, val2 = 1000h mov val1,ax ; val1 = 2000h ; 字节数组访问 mov al,arrayB ; AL = 10h mov al,[arrayB+1] ; AL = 20h mov al,[arrayB+2] ; AL = 30h ; 字数组访问 mov ax,arrayW ; AX = 100h mov ax,[arrayW+2] ; AX = 200h ; 双字数组访问 mov eax,arrayD ; EAX = 10000h mov eax,[arrayD+4] ; EAX = 20000h mov eax,[arrayD+TYPE arrayD] ; EAX = 20000h lea ebx, [arrayD+4] mov eax, [ebx] END start 算术运算指令 算术运算是IA-32指令系统中另外一种基本的操作,可以用来执行字节,字或双字的二进制加减乘除算术运算。 这类指令根据计算结果设置相应标志位。 ADD、ADC、INC SUB、SBB、DEC MUL、IMUL DIV、IDIV 加法指令 执行双字,字或字节的加法运算。 指令将目的操作数加上源操作数,结果送到目的操作数 ADD:无符号算术运算 ADC:带进位算术运算 INC:加1 加法指令 .data var1 dword 10000h var2 dword 2000h .code start: mov al,0fbh ;al=0fbh add al,07h ;al=02h mov eax, var1 ;eax=10000h add eax, var2 ;eax=12000h ret 增量指令INC(increment) INC指令对操作数加1(增量) INC指令不影响进位CF标志,按定义设置其他状态标志 减法指令 SUB指令将目的操作数减去源操作数,结果送到目的操作数 SUB指令按照定义相应设置状态标志 减量指令DEC(decrement) DEC指令对操作数减1(减量) DEC指令不影响进位CF标志,按定义设置其他状态标

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档