版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 3.2.5 控制转移指令控制转移指令P130) 留意:留意:E AB C9 A7 85 61 1 2 2 H : 1 2 3 4 H目 的 地 址 的偏 移 地 址目 的 地 址 的段 地 址J M P 指 令N E X T5 6 7 8 H : 9 A B C H图 4 . 6 E AB C9 A7 85 61 1 2 2 H : 1 2 3 4 H目 的 地 址 的偏 移 地 址目 的 地 址 的段 地 址J M P 指 令N E X T5 6 7 8 H : 9 A B C H图 4 . 6 1 1、转移指令、转移指令1)1)、JMPJMP无条件转移指令无条件转移指令段内直接短转移段内
2、直接短转移段内直接近转移段内直接近转移段内间接转移段内间接转移段间直接远转移段间直接远转移段间间接转移段间间接转移(1)(1)、段内直接短转移、段内直接短转移 留意:留意:例:例:源程序 :源程序 :条件转移指令:JMP SHORT 条件转移指令:JMP SHORT nextnext. next:next:MOV AL,03HMOV AL,03HOPOP50H50H.OPOP03H03H.3000:1000H3000:1000H3000:1050H3000:1050H(IP)(IP)当前当前D D8 8=50H=50H=1050H-1000H=1050H-1000H(IP)=(IP)当前+D8
3、(IP)=(IP)当前+D8内存内存 源程序 : 源程序 :next :next :. -128-128.条件转移指令:条件转移指令:JMP SHORT JMP SHORT nextnext.+127+127. next:next: MOV AL,03HMOV AL,03H(2)(2)、段内直接近转移、段内直接近转移 留意:留意:(3)(3)、段内间接转移、段内间接转移 例例: : (4)(4)、段间直接转移、段间直接转移 EABC9A78561122H:1234H目 的 地 址 的偏 移 地 址目 的 地 址 的段 地 址JMP指 令NEXT5678H:9ABCH图 4.6 (5)(5)、段
4、间间接转移、段间间接转移 例例: : 2 2、条件转移指令、条件转移指令 1)1)、比较转移指令、比较转移指令 助记符助记符转移条件转移条件JA/JNBECFZF=0高于高于/不低于等于不低于等于JAE/JNB/JNCCF=0 高于或等于高于或等于/不低于不低于/无进位无进位JB/JNAE/JCCF=1 低于低于/不高于等于不高于等于/有进位有进位JBE/JNACFZF=1 低于或等于低于或等于/不高于不高于无符号数比较的结果作为转移条件无符号数比较的结果作为转移条件P134)两个带符号数比较的结果作为转移条件两个带符号数比较的结果作为转移条件助记符助记符转移条件转移条件JG/JNLE(SF
5、OF)ZF=0大于大于/不小于等于不小于等于JGE/JNL SF OF=0 大于或等于大于或等于/不小于不小于JL/JNGE SF OF=1 小于小于/不大于等于不大于等于JLE/JNG(SF OF)ZF=1小于或等于小于或等于/不大于不大于2)2)、判位转移指令、判位转移指令 助记符助记符转移条转移条件件助记符助记符转移条件转移条件JZ/JEZF=1JNZ/JNEZF=0JSSF=1JNSSF=0JOOF=1JNOOF=0JP/JPEPF=1JNP/JPOPF=0JCCF=1JNCCF=03)3)、判、判CXCX转移指令转移指令 助记符助记符转移条件转移条件 JCXZCX=02 2、循环控制
6、指令、循环控制指令计 数 器 = 0 ?图 4 . 7 循 环 结 构 示 意 图YN循 环 体计 数 器循 环 次 数计 数 器 - 1计 数 器 (CX) (CX)- 1 此操作不影响标志此操作不影响标志 检查转移条件检查转移条件xx,满足转向目标地址去执行,满足转向目标地址去执行; 不满足执行不满足执行LOOPxx后一条指令后一条指令助记符助记符循环条件循环条件退出循环条件退出循环条件LOOPCX0CX=0LOOPZCX0且且ZF=1CX=0或或ZF=0LOOPNZCX0且且ZF=0CX=0或或ZF=1 在串中查找字符,查到了,退出,在串中查找字符,查到了,退出,用用LOOPNZ,不相等
7、时继续查找。,不相等时继续查找。比较两串时,当有字符不等,退出,两字符串不等。比较两串时,当有字符不等,退出,两字符串不等。可用可用LOOPZ,当相等时继续比较。,当相等时继续比较。执行完执行完 LOOPNZ或或LOOPZ后,判断后,判断ZF的值的值 对查找字符,对查找字符,ZF=1,说明找到;否则没有找到。说明找到;否则没有找到。 对串比较,对串比较,ZF=1, 说明两串相等;否则不等。说明两串相等;否则不等。相当于:相当于: DEC CX JNZ 目的地址标号目的地址标号 例:在数据段DATA开始的30个单元中存放着某班30位同学的某门考试成绩,求总分和平均成绩,结果分别保存在DX,AL中
8、。 修改偏址修改偏址BXCX 成绩数成绩数NDS:BX 首地址首地址 (CX) (CX)-1求平均值求平均值 (CX) = 0 ?终了终了清零清零DX成绩累加成绩累加 例: 在string字符串中查找空格字符,串长度为N。修改偏址修改偏址BXYNAL 关键字关键字CX 串长度串长度NDS:BX 串首址串首址判判BX是关键字?是关键字? (CX) (CX)-1找到处理找到处理未找到处理未找到处理 (CX) = 0 ?YN结束出口结束出口 MOV CX, N MOV AX, SEG string MOV DS, AX LEA BX, string MOV AL,20H next: CMP AL,B
9、X JZ findINC BX DEC CX JNZ next 未找到处理JMP exit find: 找到处理exit: 结束出口MOV CX, NMOV AX, SEG stringMOV DS, AXLEA BX, string MOV AL,20H next: CMP AL, BX PUSH FINC BXPOPFLOOPNZ nextJZ find未找到处理未找到处理 JMP exit find: 找到处理找到处理exit: 结束出口结束出口3 3、过程、过程( ( 子程序子程序 ) )调用指令调用指令1 1)、)、 CALL CALL调用调用(1 1)、)、 段内直接调用段内直接调
10、用例:例: NEAR 类型过程类型过程 code SEGMENT ;code段段 CALL subp ; D16 =subp- XXX XXX:YYY subp PROC NEAR ;过程定义过程定义 RET ;前往前往 subp ENDP code ENDS(2 2)、)、 段内间接调用:段内间接调用:(3 3)、)、 段间直接调用段间直接调用 (SP)(SP)-2 (SP)+1,(,(SP)(CS) (SP)(SP)-2 (SP)+1,(,(SP)(IP) (IP)入口偏移地址指令第入口偏移地址指令第2,3字节字节 ) (CS)DST段地址指令中第段地址指令中第4,5字节字节 )例例 :
11、CSEG1 SEGMENT CALL FAR PTR subp ;处的处的CS:IP入栈;转入栈;转subp : CSEG1 ENDSCSEG2 SEGMENT subp PROC RET subp ENDPCSEG2 ENDS(4 4)、段间间接调用:)、段间间接调用:2 2)、)、 RET RET返回返回 段内带立即数返回段内带立即数返回格式:格式:RET EXP;执行操作:执行操作: (IP)(SP)+1,(,(SP) (SP)(SP)+2 (SP)(SP)+D16 EXP是一个表达式是一个表达式计算出来的常数成为机器指令中位移量计算出来的常数成为机器指令中位移量D16,修改堆栈修改堆栈
12、 指针。指针。4 4、中断和中断返回指令、中断和中断返回指令 2、 过程过程( 子程序子程序 )调用指令调用指令子程序子程序程序中具有独立功能的部分编写成独立程序程序中具有独立功能的部分编写成独立程序模块。模块。子程序过程定义格式:子程序过程定义格式: 符号名符号名 PROC 类型类型 符号名符号名 ENDP 子程序调用和返回指令:子程序调用和返回指令: CALL RETRETURN) 过程有两种类型:过程有两种类型:按过程与调用语句间的位置,过程有两种类型。按过程与调用语句间的位置,过程有两种类型。NEAR类型:调用指令与过程在同一个段中类型:调用指令与过程在同一个段中FAR类型:调用指令与
13、过程不在同一个段中类型:调用指令与过程不在同一个段中CALL指令和指令和RET指令都不影响条件码。指令都不影响条件码。分界段内直接调用段内直接调用格式:格式:CALL DST;(SP)(SP)-2, (SP)+1,(SP)(IP); (IP) (IP)+D16 DST给出转向地址子程序的入口地址)。给出转向地址子程序的入口地址)。 D16机器指令中的位移量转向地址和返回地址机器指令中的位移量转向地址和返回地址之差)。之差)。 位移量为位移量为D16范围范围-32768+32767H,占有两个字,占有两个字节。节。(1)、)、 CALL( Call a procedure)调用调用 CALL调用
14、指令调用指令 调用地址由指令给出调用地址由指令给出CALL调用指令有调用指令有4种:种: 段内直接调用段内直接调用段间直接调用段间直接调用 段内间接调用段内间接调用段间间接调用段间间接调用段内直接调用段内直接调用格式:格式:CALL DST;(SP)(SP)-2, (SP)+1,(SP)(IP); (IP) (IP)+D16 DST给出转向地址子程序的入口地址)。给出转向地址子程序的入口地址)。 D16机器指令中的位移量转向地址和返回地址机器指令中的位移量转向地址和返回地址之差)。之差)。 位移量为位移量为D16范围范围-32768+32767H,占有两个字,占有两个字节。节。工作过程如下:工
15、作过程如下:例:例: NEAR 类型过程类型过程 code SEGMENT ;code段段 CALL subp ;调用调用 指令指令 YYY入栈入栈 ,D16 =subp-yyy XXX:YYY subp PROC NEAR ;过程定义过程定义 RET ;前往前往 subp ENDP code ENDS例:两个数据变量例:两个数据变量X与与Y相乘相乘子程序和调用程序在同一个程序模块中子程序和调用程序在同一个程序模块中,子程序可以直接访问模子程序可以直接访问模块中的变量。块中的变量。DATASG SEGMENT X DW 100 Y DW 10DATASG ENDSCODESG SEGMENT
16、MAIN PROC FAR ASSUME CS:CODESG, DS:DATA SG START: CALL subp RET MAIN ENDPsubp PROC NEAR MOV AX,XMOV BX,Y MUL BXRETsubp ENDCODESG ENDS END START 段内间接调用:段内间接调用:格式:格式: CALL DST; WORD PTR OPR OPR 为为16位寄存器,位寄存器, 或存储器除立即数以外的任何一种寻址方式)或存储器除立即数以外的任何一种寻址方式)执行操作:执行操作: (SP)(SP)-2 (SP)+1,(,(SP)(IP) (IP)(EA) EA由由
17、DST寻址方式所确定的有效地址。寻址方式所确定的有效地址。 段间直接调用:段间直接调用:格式:格式:CALL FAR PTR DST;执行操作执行操作 :(SP)(SP)-2(SP)+1,(,(SP)(CS)(SP)(SP)-2 (SP)+1,(,(SP)(IP) (IP)DST偏移地址指令中第偏移地址指令中第2,3字节字节 ) (CS)DST段地址指令中第段地址指令中第4,5字字节节 )例例 : CSEG1 SEGMENT CALL FAR PTR subp;处的处的CS:IP入栈转入栈转subp : CSEG1 ENDSCSEG2 SEGMENT subp PROC RET subp EN
18、DP CSEG2 ENDS 段间间接调用:段间间接调用:格式:格式: CALL DWORD PTR DST执行操作:执行操作: (SP)(SP)-2(SP)+1,(SP)(CS) (SP)(SP)-2 (SP)+1,(SP)(IP)(IP)(EA)(CS)(EA)+2 转子程序入口转子程序入口 EA由由DST的寻址方式确定的有效地址。的寻址方式确定的有效地址。(2)、 RET( Reture from procedure)前往前往 RET返回指令返回指令放在子程序的末尾放在子程序的末尾使子程序在功能完成后返回调用程序继续执行。使子程序在功能完成后返回调用程序继续执行。*为能准确返回为能准确返回
19、 ,返回指令类型与调用指令类型相对,返回指令类型与调用指令类型相对应。应。RET返回指令有返回指令有4种:种:段内返回段内返回段间返回段间返回 段内带立即数返回段内带立即数返回段间带立即数返段间带立即数返回回在子程序调用时,返回地址入栈在子程序调用时,返回地址入栈 返回时:将返回地址出栈返回时:将返回地址出栈 (IP)(段内或段间)。)(段内或段间)。 (CS)(段间)。)(段间)。段内返回:段内返回:格式:格式: RET; 机器码:机器码: C3H或者或者C2H 执行操作:(执行操作:(IP)(SP)+1,(,(SP) (SP)(SP)+2段间返回:段间返回:格式:格式: RET; 机器码:
20、机器码: CBH或或CAH 执行操作:执行操作: (IP)(SP)+1,(,(SP) (SP)(SP)+2 (CS)(SP)+1,(,(SP) (SP)(SP)+2段内带立即数返回段内带立即数返回格式:格式:RET EXP;执行操作:执行操作: (IP)(SP)+1,(,(SP) (SP)(SP)+2 (SP)(SP)+D16 EXP是一个表达式是一个表达式计算出来的常数成为机器指令中位移量计算出来的常数成为机器指令中位移量D16,修改堆栈修改堆栈 指针。指针。例如:例如:RET EXP 堆栈使用情况:堆栈使用情况: CODE SEG MENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX PUSH BX PUSH CX CALL DELC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税务师事务所审计岗位面试题集
- 电气自动化专业高级工程师招聘面试题集
- 金融行业面试题信贷评估经理选拔指南
- 酒店管理岗面试常见问题及答案参考
- 美容行业店长面试题库及答案参考
- 2025年海洋旅游项目开发与管理可行性研究报告
- 2025年农业科技金融服务平台可行性研究报告
- 2025年海洋资源开发与利用研究可行性报告
- 2025年供应链金融创新服务项目可行性研究报告
- 2025年区块链技术在金融领域应用可行性研究报告
- 导尿管相关尿路感染(CAUTI)防控最佳护理实践专家共识解读
- 2025年广东深圳高中中考自主招生数学试卷试题(含答案详解)
- 【语文】丹东市小学三年级上册期末试题(含答案)
- SMETA员工公平职业发展管理程序-SEDEX验厂专用文件(可编辑)
- 2024年湖南高速铁路职业技术学院公开招聘辅导员笔试题含答案
- 水泵购买合同(标准版)
- ICU获得性衰弱课件
- 数字智慧方案5912丨智慧军营建设方案
- 下巴整形课件
- (2025年)安徽省蚌埠市辅警协警笔试笔试测试卷(含答案)
- 2025年山西省教师职称考试(信息技术)历年参考题库含答案详解(5套)
评论
0/150
提交评论