指令系统(控制转移类指令)_第1页
指令系统(控制转移类指令)_第2页
指令系统(控制转移类指令)_第3页
指令系统(控制转移类指令)_第4页
指令系统(控制转移类指令)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

控制转移指令●无条件转移指令根据其转移范围的大小可以分为五种方式:指令名称指令格式执行操作1.段内直接短转移JMPSHORTOPRIP←(IP)+8位位移量2.段内直接近转移JMPNEARPTROPRIP←(IP)+16位位移量3.段内间接转移JMPWORDPTROPRIP←(EA)4.段间直接转移JMPFARPTROPRIP←OPR的段内偏移地址CS←OPR所在段的段地址5.段间间接转移JMPDWORDPTROPRIP←(EA)CS←(EA+2)●1.无条件转移指令JMP●指令功能:无条件地转移到由地址表达式所确定的目标单元。●指令格式:JMP地址表达式无条件转移指令的一般使用格式为:JMP符号地址●2.条件转移指令(1)条件转移指令●指令功能:根据前面指令形成的条件来确定转移目的的地址。●指令操作:当条件满足时程序转移至标号处,转移范围只能在离当前IP的-128〜+127个字节之内。按照转移条件分为四类1.单个标志位的条件转移指令。如JZ(JE)、JP2.两个无符号数比较的条件转移指令。如JB(JNAE,JC)、JBE(JNA)3.两个有符号数比较的条件转移指令。如JLE(JNG)、JNL(JGE)4.测试(CX)=0的条件转移指令。如JCXZ指令分类指令格式执行条件1.单个标志位的条件转移指令JZ(JE)标号ZF=1JNZ(JNE)标号ZF=0JS标号SF=1JNS标号SF=0JO标号OF=1JNO标号OF=0JP标号PF=1JNP标号PF=0JC标号CF=1JNC标号CF=02.两个无符号数比较的条件转移指令JB(JNAE)标号CF=1(<)JNB(JAE)标号CF=0(≥)JBE(JNA)标号CF∨ZF=1(≤)JNBE(JA)标号CF∨ZF=0(>)3.两个有符号数比较的条件转移指令JL(JNGE)标号SF⊕OF=1(<)JNL(JGE)标号SF⊕OF=0(≥)JLE(JNG)标号(SF⊕OF)∨ZF=1(≤)JNLE(JG)标号(SF⊕OF)∨ZF=0(>)●3.(1)计数循环指令LOOP循环控制指令

●指令格式:LOOPOPR●指令功能:每执行一次LOOP指令,CX的内容减“1”,若(CX)≠0,则循环转移到目的地址TARGET重复执行其间的程序段,直到(CX)=0,退出循环,顺序执行下条指令。例[4-18]把数据区buffer内的50个有符号字节数将正(零归正数)、负数分开,并分别送到NUM1和NUM2两个缓冲区的程序如下:

LEA SI,BUFFER LEA DI,NUM1 LEA BX,NUM2 MOV CX,50BEG: MOVAL,[SI]INCSI TEST AL,80H JNZ MINUS MOV [DI],ALINCDI JMP AGAINMINUS:MOV [BX],ALINCBXAGAIN:LOOP BEG HLT(2)结果为零或相等时循环指令LOOPE/LOOPZ●指令格式:LOOPZ(LOOPE)

OPR●指令功能:使(CX)-1→CX,当(CX)≠0,且ZF=1时,则循环转移至目的地址TATGET去重复执行其间的程序段。当(CX)=0,或ZF=0,退出循环,顺序执行本指令的下条指令。例[4–19]找出以NUM为首地址的100个字节数组中第一个非零项,并将其置于AL中,数组中若无非零项,则(AL)=0。程序如下:

MOV CX,100 LEA BX,NUM MOV SI,0FFFFHZERO:INC SI CMP BYTEPTR[BX+SI],0 LOOPZZERO JZ OVER MOV AL,[BX+SI] JMP DONEOVER:MOV AL,0DONE:HLT(3)结果不为零或不相等时循环指令LOOPNE/LOOPNZ●指令格式:LOOPNZ(LOOPNE)

OPR●循环条件:ZF=0且

(CX)≠0●执行操作:①

(CX)←(CX)-1;②检查是否满足循环条件:

如满足则实行循环; 不满足则退出循环。过程调用指令CALL与返回指令RET●4.为便于模块化程序设计,可把某些经常重复出现的一段程序独立编制成一个模块,称为一个子过程或子程序。程序中可由调用指令CALL调用子程序,在子程序执行完成后又用返回指令RET返回调用程序继续执行。●过程调用指令CALL必须同返回指令RET成对使用。●过程定义的形式如下(详见第五章“伪指令”):过程名

PROC[near/far]

过程体

RET

过程名 ENDP(1)CALL指令①段内直接调用●指令格式:CALL DST●执行操作:SP←(SP)-2

(SP)+1,(SP)←(IP)

IP←(IP)+16位位移量②段内间接调用●指令格式:CALL DST●执行操作:SP←(SP)-2

(SP)+1,(SP)←(IP)

IP←(EA)过程调用指令CALL与返回指令RET●4.(1)CALL指令③段间直接调用●指令格式:CALL DST●执行操作:SP←(SP)-2

(SP)+1,(SP)←(CS)

SP←(SP)-2(SP)+1,(SP)←(IP)

IP←

偏移地址

CS←

段地址④段间间接调用●指令格式:CALL DST●执行操作:SP←(SP)-2

(SP)+1,(SP)←(CS)

SP←(SP)-2(SP)+1,(SP)←(IP)

IP←

(EA)

CS←(EA+2)CALL指令不影响标志位常用格式:CALL子程序名过程调用指令CALL与返回指令RET(2)①段内返回●指令格式:RET●执行操作:IP←((SP)+1,(SP))

SP←(SP)+2②段内带立即数返回●指令格式:RETn●执行操作:IP←((SP)+1,(SP))

SP←(SP)+2SP←(SP)+n

④段间带立即数返回●指令格式:RETn●执行操作:IP←((SP)+1,(SP))SP←(SP)+2CS←((SP)+1,(SP))SP←(SP)+2

SP←(SP)+n返回指令RET

③段间返回

●指令格式:RET

●执行操作:IP←((SP)+1,(SP))SP←(SP)+2CS←((SP)+1,(SP))SP←(SP)+2●4.RET指令不影响标志位中断调用与返回指令●5.将在第七章中介绍CLC ;CF←0STC ;CF←1CMC ;CF求反,即CF←┓CFCLD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论