控制转移与程序结构.ppt

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

第5章 控制转移和程序结构 制作 钱晓捷 第5章 控制转移和程序结构 5.1 目标地址寻址方式 5.1.1转移范围 5.1.2寻址方式 5.1.3 无条件转移指令 5.2 分支程序结构 5.2.1 条件转移指令 5.2.2 单分支结构 5.2.3 双分支结构 5.2.4 多分支结构 5.3 循环程序结构 5.3.1 循环指令 5.3.2 计数控制循环 5.3.3 条件控制循环 5.4 子程序结构 5.4.1 子程序指令 5.4.2 子程序设计 5.4.3 参数传递 5.4.4 程序模块 目标地址 程序代码在代码段 CS:指明代码段在主存中的开始位置、即段基地址 EIP:给出将要执行指令的偏移地址 程序顺序执行,微处理器自动增量EIP 程序控制转移,EIP随之改变 程序转移到另外的代码段, EIP和CS都将改变 控制转移类指令:改变EIP(有些也改变CS),即改变程序执行顺序(实现程序控制转移)的指令 目标地址寻址方式:改变CS和EIP寄存器,或者说如何指明目的地、即目标地址的方法 转移范围 段内转移 在当前代码段范围内的程序转移 不需更改CS,只要改变EIP(偏移地址) 近转移(Near):16位段中是16位近转移NEAR16, 32位段中是32位近转移NEAR32 短转移(Short):转移范围在127~-128字节 段间转移 从当前代码段跳转到另一个代码段 需要更改CS(段地址)和EIP(偏移地址) 远转移(Far):16位段中是32位远转移FAR16, 32位段中是48位远转移FAR32 目标地址寻址方式 相对寻址方式 提供目标地址相对于当前指令指针EIP的位移量 目标地址(转移后的EIP)=当前EIP+位移量 相对寻址都是段内转移,最常用、最灵活 直接寻址方式 直接提供目标地址 目标地址(转移后的CS和EIP)=指令操作数 间接寻址方式 指示寄存器或存储单元 目标地址来自寄存器或存储单元、间接获得 寄存器间接寻址:用寄存器保存目标地址 存储器间接寻址:用存储单元保存目标地址 无条件转移指令JMP 无条件转移:程序无条件改变执行顺序 JMP指令相当于高级语言的goto语句 JMP label ;程序转向label标号指定的地址 ;段内相对寻址,段间直接寻址 JMP reg16/reg32 ;程序转向寄存器指定的地址 ;寄存器间接寻址 JMP mem16/mem32 ;程序转向存储单元指定的地址 ;存储器间接寻址 JMP指令的4种类型 1. 段内转移、相对寻址 标号指明目标地址,指令代码包含位移量 2. 段内转移、间接寻址 通用寄存器或主存单元包含目标指令的偏移地址 3. 段间转移、直接寻址 标号包含目标指令的段地址和偏移地址 4. 段间转移、间接寻址 16位段用双字存储单元包含目标地址 32位段用3字存储单元包含目标地址 [例题5-1]无条件转移程序-1 ;数据段 0000 0000 nvar dw ? ;代码段 0010 EB 01 jmp labl1 0012 90 nop 0013 B8 FF02 labl1: mov ax,type labl1 0016 E9 0001 jmp near ptr labl2 0019 90 nop 001A B8 0020 R labl2: mov ax,offset labl3 001D FF E0 jmp ax 001F 90 nop 0020 B8 002B R labl3: mov ax,offset labl4 0023 A3 0000 R mov nvar,ax 0026 FF 26 0000 R jmp nvar 002A 90 nop [例题5-1]无条件转移程序-2 ;数据段 0002fvar dd ? ;代码段 002B B8 FF05 labl4: mov ax,type far ptr labl5 002E EA ---- 0034 R jmp far ptr labl5 0033 90 nop 0034 B8 0047 R labl5: mov ax,offset labl6 0037 A3 0002 R mov word ptr fvar,ax 003A BA ---- R mov dx,seg labl6 003D 89 16 0004 R mov word ptr fvar+2,dx 0041 FF 2E 0002 R jmp fvar 0045 90 nop 0046 labl6: 条件转移指令Jcc 根据指定的条件确定程序是否发生转移 Jcc label ;条件满足,发生转移;否则,顺序执行下一条指令 LABEL表示目标地址,采用段内相对寻址

文档评论(0)

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

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

1亿VIP精品文档

相关文档