网站大量收购独家精品文档,联系QQ:2885784924

32位汇编-第4章程序结构.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
32位汇编-第4章程序结构

32位汇编语言程序设计 第4章 程序结构 第4章 程序结构 4.1 顺序程序结构 4.2 分支程序结构 4.3 循环程序结构 第4章 程序结构 以顺序、分支和循环程序结构为主线 结合数值运算、数组处理等示例程序 掌握控制转移指令以及编写基本程序的方法 4.1 顺序程序结构 按照指令书写的前后顺序执行每条指令 最基本的程序片段 构成复杂程序的基础 3个示例程序 知道“1+2+3+……+N”等于多少吗? 知道处理器内置的识别字符串是什么吗? 知道代表什么吗? 〔例4-1〕自然数求和程序 ;数据段 num dword 3456 ;假设一个N值(小于232-1) sum qword ? ;代码段 mov eax,num ;EAX=N add eax,1 ;EAX=N+1 imul num ;EDX.EAX=(1+N)×N shr edx,1 ;64位逻辑右移一位(除以2) rcr eax,1 ;EDX.EAX= EDX.EAX÷2 mov dword ptr sum,eax ;小端方式保存 mov dword ptr sum+4,edx 〔例4-2〕处理器识别程序 ;数据段 buffer byte The processor is,12 dup(0),0 bufsize = sizeof buffer ;代码段 mov eax,0 cpuid ;执行处理器识别指令 mov dword ptr buffer+bufsize-13,ebx mov dword ptr buffer+bufsize-9,edx mov dword ptr buffer+bufsize-5,ecx mov eax,offset buffer ;显示信息 call dispmsg 〔例4-3〕不同格式显示程序 mov al,var call dispbb call dispcrlf mov al,var call disphb call dispcrlf mov al,var call dispuib call dispcrlf mov al,var call dispc 4.2 分支程序结构 改变程序执行顺序、形成分支、循环、调用等程序结构是很常见的程序设计问题 高级语言采用IF等语句表达条件,并根据条件是否成立转向不同的程序分支 汇编语言需要 首先利用比较CMP、测试TEST、加减 运算、逻辑运算等影响状态标志的 指令形成条件 然后利用条件转移指令判断由标志 表达的条件,并根据标志状态控制程序 转移到不同的程序段 4.2.1 无条件转移指令 程序代码在代码段 CS:指明代码段在主存中的段基地址 EIP:给出将要执行指令的偏移地址 程序顺序执行,处理器自动增量EIP 程序控制转移,EIP随之改变 程序转移到另外的代码段,EIP和CS都改变 控制转移类指令:改变EIP(有些也改变CS),即改变程序执行顺序(实现程序控制转移)的指令 1. 转移范围 段内转移 在当前代码段范围内的程序转移 不需更改CS,只要改变EIP(偏移地址) 近转移(Near): 32位近转移NEAR32、16位近转移NEAR16 短转移(Short):转移范围在127~-128字节 段间转移 从当前代码段跳转到另一个代码段 需要更改CS(段地址)和EIP(偏移地址) 远转移(Far): 48位远转移FAR32、32位远转移FAR16 2. 指令寻址方式 相对寻址方式 提供目标地址相对于当前指令指针EIP的位移量 目标地址(转移后的EIP)=当前EIP+位移量 相对寻址都是段内转移,最常用、最灵活 直接寻址方式 直接提供目标地址 目标地址(转移后的CS和EIP)=指令操作数 间接寻址方式 指示寄存器或存储单元 目标地址来自寄存器或存储单元、间接获得 寄存器间接寻址:用寄存器保存目标地址 存储器间接寻址:用存储单元保存目标地址 3. JMP指令 无条件转移:程序无条件改变执行顺序 JMP指令相当于高级语言的goto语句 JMP label ;程序转向label标号指定的地址 ;段内相对寻址,段间直接寻址 JMP reg32/reg16 ;程序转向寄存器指定的地址 ;寄存器间接寻址 JMP mem48/mem32/mem16 ;程序转向存储单元指定的地址 ;存储器间接寻址 JMP指令的4种类型 1. 段内转移、相对寻址 标号指明目标地址,指令代码包含位移量 2. 段内转移、间接寻址 通用寄存器或主存单元包含目标指令偏移地址 3. 段间转移、直接寻址 标号包含目标指令的段地址和偏移地址 4. 段间转移、间接寻址 32位段用3字存储单元包含目标地址 16位段用双字存储单元包含目标地址 〔例4-4〕无条件转移程序-1 ;数

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档