资源描述:
《之控制转移ppt课件_1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、五控制控制转移指令控制转移指令分为:转移指令子程序调用和返回指令循环控制指令中断指令处理器控制指令1◢程序是指令的集合◢指令代码在内存中顺序存放,但指令的执行不一定是顺序的在Pentiun系列中,指令的地址由CS中的选择子和EIP两个寄存器决定。CS和EIP两寄存器的内容决定了程序的流程程序顺序执行和非顺序执行的概念1顺序执行CPU取来一条指令后,自动将IP的值加上该指令的字节数,使IP顺序指向下一条指令,CPU取来紧接着的指令执行。(此时IP的变化由CPU内部的硬件自动完成)2通过控制转移指令改变CS和IP的值,使程序产生分
2、支、调用结构。例:比较(AX)、(BX)的大小,将大数存于(max)单元。CMPAX,BXJGgreatXCHGAX,BXgreat:MOV[max],AX2非顺序执行3转移指令的实质:改变IP(或CS)的内容。所有转移指令不会影响标志位。分为无条件转移和条件转移两种。1.转移指令关于转移指令和调用指令的寻址4(1)无条件转移指令-JMP本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。①段内直接转移:指令中给出的8/16位的位移量加到IP。CS保持不变。②段内间接
3、转移:REG/MEM中的16位偏移地址送IP。CS保持不变。③段间直接转移指令中给出的16位的段和16位的偏移地址送到CS和IP。④段间间接转移MEM中给出的16位的段和16位的偏移地址送到CS和IP。5转移的目标地址由指令直接给出。段内转移,故转移后CS内容保持不变,只改变IP的值。汇编语言中格式位移量转移范围JMP(SHORT)OPRD8位-128~+127JMP(NEARPTR)OPRD16位-32768~+32767OPR-在汇编语言中使用符号地址。在机器语言中是一个相对于当前IP的位移量:例:JMPLPI;转向LPI
4、JMPBBB;转向BBB①段内直接转移6JMPNEXT指令本身占有两个字节操作码占一个字节;8位位移量占有一个字节=1050H-1000H源程序:条件转移指令:JMPnext......next:MOVAL,03HE950H......B003H......3000:1000H3000:1050H(IP)当前D8=50H(IP)=(IP)当前+D8内存例:代码段内有一条无条件转移指令执行操作:(IP)←(IP)当前+D8qqq:7JMPSHORTOPR8位位移量D8的范围在(-128~127)之间,否则出错JMPNEARPTR
5、OPR指令本身占有三个字节,位移量为D16,占有两个字节,范围:-32768~+32767H。可以转移到段内的任一位置。8②段内间接转移转移的目标地址由寄存器或存储单元的内容给出。例1:JMPSI若指令执行前(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处执行。9例2:JMP[BX+DI]设指令执行前:(DS)=3000H,(BX)=1300H,(DI)=1200H,(32500H)=2350H;则指令执行后:(IP)=2350H在汇编语言中,段内间接寻址通常写成:JMPWORDP
6、TR[BX+DI]表示所取得的目标地址是一个字。(只改变IP)10③段间直接转移在指令中直接给出要转移到的目的段地址和偏移地址。例:JMP2000:1000H执行时,(IP)←1000H,(CS)←2000H注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FARPTR。例:JMPFARPTRfar_label其中的far_label为远类型的标号。11例:C1SEGMENT…JMPFARPTRnext_prog…C1ENDSC2SEGMINT…next_prog:……C2ENDSFAR远属性标号,标号与控制转
7、移指令不在同一代码段中。12转移的目的地址(段和偏移)在两个相邻的字存储单元中。例如:JMPDWORDPTR[SI]设指令执行前:(DS)=4000H,(SI)=1212H,(41212H)=1000H,(41214H)=4A00H则指令执行后:(IP)=1000H,(CS)=4A00H于是转到4B000H处开始执行指令。例中的DWORDPTR表示转移地址是一个双字。④段间间接转移1340001212+)41212DSSI0010004A4121241213412144121510004A00IPCS段间间接转移操作示意图11
8、11111111101100JMPDWORDPTR[SI]的机器码DS:[SI]14条件转移指令根据标志位的状态或比较的结果来决定是否进行分支转移。格式:JXXlabel;xx为条件名称缩写8086指令的转移范围为-128~+127字节。Pentiun最大到-32768~+3