




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 3 2 5控制转移指令 P130 专用于控制程序执行流程 通过对 CS 和 IP 的修改来改变程序执行的流程 包括四种 转移指令 过程调用指令 循环控制指令 中断指令 2 注意 段内转移和段间转移 段内转移 目标地址在当前段内属性为NEAR 段间转移 目标地址不在当前段内属性为FAR 段间转移 转移指令修改 IP 转移指令修改 CS 和 IP 3 除中断指令 其它指令均不影响标志位 直接转移和间接转移 直接转移 目标地址直接出现在指令中 间接转移 目标地址间接存储于寄存器或存储单元中 间接转移 4 1 转移指令 两种 JMP无条件转移指令 Jcc条件转移指令 5 1 JMP无条件转移指令 五种格式 段内直接短转移段内直接近转移段内间接转移段间直接远转移段间间接转移 6 1 段内直接短转移 格式 JMPSHORT目的地址标号 IP 当前 IP disp8 7 注意 双字节指令 机器码 E8KKKK为disp8 带符号数的补码 范围 128 127 目的地址的偏移地址 当前 IP disp8 跳转指令地址 2 disp8 转移范围 从当前IP位置开始 向前128 减80H 个字节 向后127 加7FH 个字节 例 JMPSHORTNEXT 向前到 1000H 80H 0F80H向后到 1000H 7FH 107FH NEXT所指地址范围 E8H50H 指令机器码 10 8位位移量D8的范围在 128 127 之间 否则出错 11 实际使用时 在汇编指令中出现的直接是目的地址的标号 对于编程者 关心的是这个标号所指位置是否超出了本指令的跳转范围 12 2 段内直接近转移 格式 JMPNEARPTR目的地址标号 IP 当前 IP disp16 13 注意 三字节指令 机器码 E8KKJJJJKK为disp16 带符号数补码 范围 32768 32767 目的地址的偏移地址 当前 IP disp16 跳转指令地址 3 disp16 14 转移范围 从当前IP位置开始 向前32768 减8000H 个字节 向后32767 加7FFFH 个字节 但不超出本段 15 3 段内间接转移 格式 JMPWORDPTROPR IP EA 或 IP reg16 OPR 为16位寄存器 存储器 16 例 JMPAXJMPWORDPTR BP DI 转移范围 当前段 17 4 段间直接转移 格式 JMPFARPTR目的地址标号 IP 目的地址标号的偏移地址 CS 目的地址标号的段地址 18 JMPFARPTRNEXT NEXT MOVAL SI 例 19 转移范围 整个存储器1M空间 20 5 段间间接转移 格式 JMPDWORDPTROPR IP OPR低16位 CS OPR高16位 21 例 JMPDWORDPTR BP DI 转移范围 整个存储器1M空间 22 2 条件转移指令 两种 比较转移指令 判位转移指令 均采用相对短转移 即 IP 当前 IP disp8 转移范围 从当前 IP 所指单元开始 128 127 23 1 比较转移指令 根据前一条比较指令结果 对标志位的影响 作测试条件 决定是否转移 分为 无符号数比较转移指令带符号数比较转移指令 无符号数比较的结果作为转移条件 P134 两个带符号数比较的结果作为转移条件 25 例 数据段RESULT开始的30个单元中存放着某班30个同学的某门课程的考试成绩 要求统计成绩在80分以上的学生人数 将其存放在BL中 26 MOVAL 80LEADI RESULTMOVCX 30MOVBL 0AGN JMPAL DI JANEXTINCBL NEXT INCDIDECCXJNZAGNHLT 停机 27 2 判位转移指令 根据当前某标志位的状态来决定是否进行转移 28 3 判CX转移指令 既是一条转移指令 也可用来控制循环 但循环控制条件与LOOP相反 29 2 循环控制指令 三种 LOOP LOOPE LOOPZ LOOPNE LOOPNZ 30 格式 LOOPxx符号地址 执行操作 CX CX 1此操作不影响标志 检查转移条件xx 满足转向目标地址去执行 不满足执行LOOPxx后一条指令 31 只允许段内直接短转移方式 跳转范围 128 127 都用CX作为循环计数器 循环指令说明 LOOP退出循环条件是 CX 0LOOPZ和LOOPNZ提供了提前结束循环的可能 在串中查找字符 查到了 退出 用LOOPNZ 不相等时继续查找 比较两串时 当有字符不等 退出 两字符串不等 可用LOOPZ 当相等时继续比较 执行完LOOPNZ或LOOPZ后 判断ZF的值对查找字符 ZF 1 说明找到 否则没有找到 对串比较 ZF 1 说明两串相等 否则不等 LOOP 相当于 DECCXJNZ目的地址标号 例 在数据段DATA开始的30个单元中存放着某班30位同学的某门考试成绩 求总分和平均成绩 结果分别保存在DX AL中 35 MOVDX 0LEASI DATAMOVCX 30NEXT ADDDL BYTEPTR SI ADCDH 0INCSILOOPNEXTMOVCL 30MOVAX DXDIVCL 例 在string字符串中查找空格字符 串长度为N MOVCX NMOVAX SEGstringMOVDS AXLEABX stringMOVAL 20Hnext CMPAL BX JZfindINCBXDECCXJNZnext未找到处理JMPexitfind 找到处理exit 结束出口 用条件转移 JZ MOVCX NMOVAX SEGstringMOVDS AXLEABX stringMOVAL 20Hnext CMPAL BX PUSHFINCBXPOPFLOOPNZnextJZfind未找到处理JMPexitfind 找到处理exit 结束出口 用循环指令 LOOPNZ 39 思考 去掉指令JMPexit 程序执行结果会怎样 PUSHF POPF可否去掉 若要去掉 程序如何修改 执行完LOOPNZ后 可否根据CX 0来判断查找结果 CX 0 即说明没找到 对吗 40 3 过程 子程序 调用指令 子程序 具有独立功能的独立程序模块 子程序 过程 定义格式 子程序名PROC类型 子程序名ENDP 子程序调用和返回调用 CALL返回 RET 41 过程与调用语句间的位置 有两类 NEAR类 调用指令与过程在同一个段中FAR类 调用指令与过程不在同一个段中 子程序调用和返回调用 CALL返回 RET 42 1 CALL调用 CALL调用指令有4种 段内直接调用段间直接调用段内间接调用段间间接调用 CALL指令出现在主程序中 43 1 段内直接调用 格式 SP SP 2 SP 1 SP IP IP IP D16 CALL子程序名 第一步 断点入栈保护 第二步 装入子程序入口地址 D16 机器指令中的位移量 目的地址和当前 IP 地址之差 例 NEAR类型过程codeSEGMENT code段 CALLsubp D16 subp XXXXXX YYY subpPROCNEAR 过程定义 RET 返回subpENDPcodeENDS 45 2 段内间接调用 格式 SP SP 2 SP 1 SP IP IP OPR的值 CALLWORDPTROPR 第一步 断点入栈保护 第二步 装入子程序入口地址 操作数的值 OPR 为16位寄存器 或存储器 例 CALLWORDPTR SI CALLBX 47 3 段间直接调用 格式 SP SP 2 SP 1 SP CS SP SP 2 SP 1 SP IP IP 入口偏移地址 指令第2 3字节 CS DST段地址 指令中第4 5字节 CALLFARPTR子程序名 例 CSEG1SEGMENTCALLFARPTRsubp 处的CS IP入栈 转subp CSEG1ENDSCSEG2SEGMENT subpPROC RETsubpENDPCSEG2ENDS 49 4 段间间接调用 格式 SP SP 2 SP 1 SP CS SP SP 2 SP 1 SP IP IP EA CS EA 2 CALLDWORDPTROPR 例 CALLDWORDPTR SI 51 2 RET返回 RET返回指令有4种 段内返回段间返回段内带立即数返回段间带立即数返回 放在子程序的末尾子程序执行完后返回调用程序继续执行 52 1 段内返回 格式 RET 机器码 C3H或者C2H执行操作 IP SP 1 SP SP SP 2 53 2 段间返回 格式 RET 机器码 CBH或CAH执行操作 IP SP 1 SP SP SP 2 CS SP 1 SP SP SP 2 54 段内带立即数返回格式 RETEXP 执行操作 IP SP 1 SP SP SP 2 SP SP D16EXP 是一个表达式计算出来的常数成为机器指令中位移量D16 修改堆栈指针 55 4 中断和中断返回指令 以后学习 56 2 过程 子程序 调用指令子程序 程序中具有独立功能的部分编写成独立程序模块 子程序 过程 定义格式 符号名PROC类型 符号名ENDP子程序调用和返回指令 CALLRET RETURN 过程有两种类型 按过程与调用语句间的位置 过程有两种类型 NEAR类型 调用指令与过程在同一个段中FAR类型 调用指令与过程不在同一个段中CALL指令和RET指令都不影响条件码 分界 57 段内直接调用格式 CALLDST SP SP 2 SP 1 SP IP IP IP D16DST 给出转向地址 子程序的入口地址 D16 机器指令中的位移量 转向地址和返回地址之差 位移量为D16范围 32768 32767H 占有两个字节 58 1 CALL Callaprocedure 调用CALL调用指令调用地址由指令给出CALL调用指令有4种 段内直接调用段间直接调用段内间接调用段间间接调用 59 段内直接调用格式 CALLDST SP SP 2 SP 1 SP IP IP IP D16DST 给出转向地址 子程序的入口地址 D16 机器指令中的位移量 转向地址和返回地址之差 位移量为D16范围 32768 32767H 占有两个字节 60 工作过程如下 例 NEAR类型过程codeSEGMENT code段 CALLsubp 调用指令YYY入栈 D16 subp yyyXXX YYY subpPROCNEAR 过程定义 RET 返回subpENDPcodeENDS 61 例 两个数据变量X与Y相乘子程序和调用程序在同一个程序模块中 子程序可以直接访问模块中的变量 DATASGSEGMENTXDW100YDW10DATASGENDSCODESGSEGMENTMAINPROCFARASSUMECS CODESG DS DATASGSTART CALLsubp RETMAINENDP subpPROCNEARMOVAX XMOVBX YMULBXRETsubpENDCODESGENDSENDSTART 62 段内间接调用 格式 CALLDST WORDPTROPROPR 为16位寄存器 或存储器 除立即数以外的任何一种寻址方式 执行操作 SP SP 2 SP 1 SP IP IP EA EA 由DST寻址方式所确定的有效地址 63 段间直接调用 格式 CALLFARPTRDST 执行操作 SP SP 2 SP 1 SP CS SP SP 2 SP 1 SP IP IP DST偏移地址 指令中第2 3字节 CS DST段地址 指令中第4 5字节 64 例 CSEG1SEGMENTCALLFARPTRsubp 处的CS IP入栈转subp CSEG1ENDSCSEG2SEGMENT subpPROC RETsubpENDP CSEG2ENDS 65 段间间接调用 格式 CALLDWORDPTRDST执行操作 SP SP 2 SP 1 SP CS SP SP 2 SP 1 SP IP IP EA CS EA 2转子程序入口EA 由DST的寻址方式确定的有效地址 66 2 RET Returefromprocedure 返回RET返回指令放在子程序的末尾使子程序在功能完成后返回调用程序继续执行 为能准确返回 返回指令类型与调用指令类型相对应 RET返回指令有4种 段内返回段间返回段内带立即数返回段间带立即数返回在子程序调用时 返回地址入栈返回时 将返回地址出栈 IP 段内或段间 CS 段间 67 段内返回 格式 RET 机器码 C3H或者C2H执行操作 IP SP 1 SP SP SP 2 段间返回 格式 RET 机器码 CBH或CAH执行操作 IP SP 1 SP SP SP 2 CS SP 1 SP SP SP 2 68 段内带立即数返回格式 RETEXP 执行操作 IP SP 1 SP SP SP 2 SP SP D16EXP 是一个表达式计算出来的常数成为机器指令中位移量D16 修改堆栈指针 69 例如 RETEXP堆栈使用情况 CODESEGMENTASSUMECS CODE DS DATAMAINPROCFARSTART MOVAX DATAMOVDS AX PUSHBXPUSHCXCALLDELCHARCS XXXXMOVAH 4CHINT21HMAINENDP DELCHARPROC RET4DELCHARENDPCODEENDSENDSTARTRETEXP堆栈使用情况 70 段间带立即数返回 格式 RETEXP 执行操作 IP SP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效沟通技能培训
- 运动控制功能课件
- 动物小游戏课件
- 课件显示画图过程
- 广东会计自考试题及答案
- 广东法律自考试题及参考答案
- 控制数考试题及答案
- 装岩机司机岗前考核试卷及答案
- 离心铸管工三级安全教育(公司级)考核试卷及答案
- 矿山设备运行协调员基础考核试卷及答案
- 2025年中国物流集团国际物流事业部招聘面试经验及模拟题集
- 乡镇安全培训课件
- 2025年航空业面试者必看航空公司招聘笔试预测试题及答案
- 2025年全国企业员工全面质量管理知识竞赛题及参考答案
- 2025年秋季开学典礼诗歌朗诵稿:纪念抗战胜利八十周年
- 2025秋仁爱科普版(2024)七年级上册英语教学计划
- 《非物质文化遗产概论(第三版)》全套教学课件
- 2025年广东省中考英语试卷深度评析及2026年备考策略
- 2025年信息安全应急演练记录
- 社区医院创建汇报课件
- 轴对称及其性质第1课时课件2025-2026学年人教版数学+八年级上册
评论
0/150
提交评论