- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串存储指令例 内存某个区域清零 设计思想: 区域首地址送ES:DI 串长度送CX 置方向标志DF 0送累加器AL 执行串送存指令 * 程序控制指令 转移指令 循环控制 过程调用 中断控制 * 一、转移指令 无条件转移指令 无条件转移到目标地址,执行新的指令 有条件转移指令 在具备一定条件的情况下转移到目标地址 通过修改指令的偏移地址或段地址及偏移地址 实现程序的转移 * 1. 无条件转移指令 格式: JMP OPRD 目标地址 与JMP在同一代码段 与JMP不在同一代码段 原则上可实现在整个内存空间的转移 * 无条件段内转移 转移的目标地址在当前代码段内,段地址不改变。 即:目标地址是16位偏移地址。 指令中直接给出目标地址 由指令中的寄存器或存储器操作数指出目标地址 段内直接转移 段内间接转移 * 段内直接转移 段内直接转移 转移的目标地址由指令直接给出 格式: JMP Label 近地址标号 * 段内直接转移示图 JMP Label ┇ ┇ ┇ 代码段 位移量 下一条要执行指令的偏移地址=当前IP+位移量 * 段内间接转移 段内间接转移 转移的目标地址存放在某个16位寄存器或存储器 的某两个单元中 例: JMP BX 若:BX=1200H 则:转移的目标地址=1200H JMP ┇ ┇ 代码段 1200H MOV * 段内间接转移例 JMP WORD PTR[BX] 设:BX=1200H JMP ┇ ┇ ┇ 代码段 数据段 BX=1200 ┇ XXH XXH IP 指令码 * 无条件段间转移 转移的目标地址不在当前代码段内。 目标地址为32位,包括段地址和偏移地址。 指令中直接给出目标地址 由指令中的32位存储器操作数指出目标地址 段间直接转移 段间间接转移 * 段间直接转移 段内直接转移 转移的目标地址由指令直接给出 格式: JMP FAR Label 远地址标号 * 段间直接转移示图 JMP Label ┇ ┇ ┇ 代码段1 Label与JMP之间的位移量 代码段2 XXH XXH XXH XXH IP CS * 段间间接转移 段内间接寻址 转移的目标地址由指令中的32位操作数给出 例: JMP DWORD PTR[BX] XXH XXH XXH XXH BX IP CS JMP ┇ ┇ ┇ ┇ 指令码 代码段1 代码段2 数据段 * 2. 条件转移指令 在满足一定条件下,程序转移到目标地址继续执行 条件转移指令均为段内短转移,即转移 范围为: -128------+127 p132 * 条件转移指令的应用 几种条件转移指令的应用 * 转移指令例 统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。 * 转移指令例(流程图) 将存放各元素个数的单元清零 取首地址 设串长度 取一个字节数 正数个数加1 零元素加1 为负? 为零? 负数个数加1 N Y N Y p144 * 二、循环控制指令 循环范围: 以当前IP为中心的-128~+127范围内循环。 循环次数由CX寄存器指定。 循环指令: LOOP *LOOPZ *LOOPNZ 无条件循环指令 条件循环指令 * 无条件循环指令 格式: LOOP LABEL 循环条件: CX ≠ 0 操作: DEC CX JNZ 符号地址 * 条件循环指令 格式: LOOPZ LABEL LOOPE LABEL 循环条件: CX ≠ 0 ZF=1 格式: LOOPNZ LABEL LOOPNE LABEL 循环条件: CX ≠ 0 ZF=0 * 三、过程调用和返回 用于调用一个子过程; 子过程由程序员预先设计 并装入内存 子过程执行结束后要返回 原调用处 调用程序 断点 入口地址 入口地址 断点地址 子程序 * 调用指令的执行过程 保护断点; 将调用指令的下一条指令的地址(断点)压入堆栈 获取子过程的入口地址; 子过程第1条指令的偏移地址 执行子过程,含相应参数的保存及恢复; 恢复断点,返回原程序。 将断点偏移地址由堆栈弹出 * 过程调用 段内调用 段间调用 段内直接调用 段内间接调用 段间直接调用 段间间接调用 * 1. 段内调用 被调用程序与调用程序在同一代码段 调用前只需保护断点的偏移地址 格式: CALL NEAR PROC 执行过程
您可能关注的文档
最近下载
- 外研版(孙有中2024版)小学英语三年级上册U6 My sweet home Period1 Welcome to my home优质课比赛课件.ppt VIP
- 城市遥感知识学习.ppt VIP
- 2025年教科版(2024)小学科学二年级上册(全册)教学设计(附目录).docx
- 工程机械租赁投标方案、技术方案.docx VIP
- 中药临方炮制的现状及进展.pdf
- 港口工程初步设计文件编制规定,JTS110-4-2008.pdf VIP
- 水处理生物过程.ppt VIP
- 克莱门特w3000用户手册(中文版).pdf VIP
- 仪表及自动控制设备管理规定.pdf VIP
- 毕业设计-电动叉车设计.docx VIP
文档评论(0)