324 转移指令-精品文档资料系列.ppt
《324 转移指令-精品文档资料系列.ppt》由会员分享,可在线阅读,更多相关《324 转移指令-精品文档资料系列.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.2.4 3.2.4 控制转移类指令控制转移类指令l控制转移类指令控制转移类指令用于实现分支、循环、过用于实现分支、循环、过程等程序结构,是仅次于传送程等程序结构,是仅次于传送指令的最常指令的最常用指令用指令重点掌握:JMP/Jcc/LOOP CALL/RET INT n/IRET一般了解:LOOPZ/LOOPNZ INTO 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变1.目标地址的寻址方式目标地址的寻址方式l直接寻址方式直接寻址方式l转移地址象立即数一样,直接在指令的机器代码中,就是直接寻址方式l间接寻址方式间接寻址方式l转
2、移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式用标号表达用标号表达用寄存器或存储器用寄存器或存储器操作数表达操作数表达目标地址的范围:段内目标地址的范围:段内l段内转移段内转移近转移(近转移(near)l在当前代码段64KB范围内转移(32KB范围)l不需要更改CS段地址,只要改变IP偏移地址l段内转移段内转移短转移(短转移(short)l转移范围可以用一个字节表达,在段内128127范围的转移代代码码段段代代码码段段目标地址的范围:段间目标地址的范围:段间l段间转移段间转移远转移(远转移(far)l从当前代码段跳转到另一个代码段,可以在1MB范围l需要更改CS段地址和IP偏
3、移地址l目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址代代码码段段代代码码段段 实实际际编编程程时时,汇汇编编程程序序会会根根据据目目标标地地址址的的距离,距离,自动处理自动处理成短转移、近转移或远转移成短转移、近转移或远转移 程程序序员员可可用用操操作作符符short、near ptr 或或far ptr 强制强制jmp again;转向;转向again处继续执行处继续执行again:dec cx;标号;标号again的指令的指令jmp output;转向;转向outputoutput:mov result,al;标号;标号output的指令的指令JMP 0120H;直接转
4、向;直接转向CS:0120H:0120H单元单元2.无条件转移指令无条件转移指令JMP段内转移、直接寻址段内转移、直接寻址JMP label;IPIP+IPIP+位移量位移量l位移量是紧接着位移量是紧接着JMP指令后的那条指令的偏移地址指令后的那条指令的偏移地址到目标指令的偏移地址的地址位移到目标指令的偏移地址的地址位移l当向地址增大方向转移时,位移量为正;向地址减当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负小方向转移时,位移量为负 jmp again;转向转向again处继续执行处继续执行again:dec cx;标号;标号again的指令的指令jmp output;
5、转向;转向outputoutput:mov bl,al;标号;标号output的指令的指令jmp 0120H;直接转向直接转向CS:0120H单元单元实际为相对寻址实际为相对寻址JMP指令:段内相对转移指令:段内相对转移段内转移、间接寻址段内转移、间接寻址 JMP r16/mem16;IPr16/m16l将一个将一个16位寄存器或主存字单元内容送入位寄存器或主存字单元内容送入IP寄存器,作为新的指令指针,但不修改寄存器,作为新的指令指针,但不修改CS寄寄存器的内容存器的内容jmp ax;IPAXjmp word ptr 2000H ;IP2000HJMP指令:段内寄存器间接转移指令:段内寄存器
6、间接转移段间转移、直接寻址段间转移、直接寻址JMP far ptr label;IP label 的偏移地址的偏移地址;CSlabel 的段地址的段地址l将标号所在段的段地址作为新的将标号所在段的段地址作为新的CS值,标值,标号在该段内的偏移地址作为新的号在该段内的偏移地址作为新的IP值;这样,值;这样,程序跳转到新的代码段执行程序跳转到新的代码段执行jmp far ptr otherseg;远转移到代码段;远转移到代码段2的的othersegJMP指令:段间直接转移指令:段间直接转移段间转移、间接寻址段间转移、间接寻址JMP far ptr mem ;IPmem,CSmem+2l用一个双字存
7、储单元表示要跳转的目标地址。这个用一个双字存储单元表示要跳转的目标地址。这个目标地址存放在主存中连续的两个字单元中的,低位目标地址存放在主存中连续的两个字单元中的,低位字送字送IP寄存器,高位字送寄存器,高位字送CS寄存器。寄存器。mov word ptr bx,0mov word ptr bx+2,1500HJMP far ptr bx ;转移到;转移到1500H:0JMP指令:段间间接转移指令:段间间接转移3.条件转移指令条件转移指令格式:格式:Jcc label label:;条件满足,跳转;条件满足,跳转标号标号label指定的目标地指定的目标地址去执行指令址去执行指令 ;条件不满足,
8、顺序执行;条件不满足,顺序执行下一条指令下一条指令 ;操作数操作数label是采用短转移,称为相对寻址方式是采用短转移,称为相对寻址方式相对寻址方式相对寻址方式lJcc指令的操作数指令的操作数label是一个标号是一个标号l一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移l8位位移量是相对于当前IP的,且距当前IP地址128127个单元的范围之内,属于段内短距离转移lJcc指令为指令为2个字节,条件不满足时的顺序执个字节,条件不满足时的顺序执行就是当前指令偏移指针行就是当前指令偏移指针IP加加2Jcc指令的分类指令的分类lJcc指令不影响标志,但要利用标志位
9、。指令不影响标志,但要利用标志位。根据利用的标志位不同,根据利用的标志位不同,16条指令分条指令分成成3种情况:种情况:(1)判断单个标志位状态(2)比较无符号数高低(3)比较有符号数大小(1)判断单个标志位状态)判断单个标志位状态l这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZ和和JNZ:判断结果是否为零(或相等)判断结果是否为零(或相等)JS和和JNS:判断结果是正是负判断结果是正是负JO和和JNO:判断结果是否产生溢出判断结果是否产生溢出JP和和JNP:判断结果中判断结果中“1”的个数是偶是奇的个数是偶是奇JC和和JNC:判断结果是否进位或借位判断结果是否进位或借位例
10、:JZ/JNZ指令test al,80h;测试;测试AL的最高位的最高位jz next1;D70(ZF1),转移),转移mov ah,0ffh;D71,顺序执行,顺序执行jmp done;无条件转向;无条件转向next1:mov ah,0done:.test al,80h ;测试最高位;测试最高位jnz next2 ;D71(ZF0),转移),转移mov ah,0 ;D70,顺序执行,顺序执行jmp done ;无条件转向;无条件转向next2:mov ah,0ffhdone:.例:例:JC/JNC CMP AX,BX JC NEXT MOV AX,BXNEXT:MOV MIN,AX例:JS/
11、JNS指令;计算;计算|XY|(绝对值)(绝对值);X和和Y为存放于为存放于X单元和单元和Y单元的单元的16位操作数位操作数;结果存入;结果存入result单元单元mov ax,Xsub ax,Yjns nextneg ax ;neg是求补指令:是求补指令:0axnext:mov result,ax例:例:JO/JNO指令指令;计算;计算XY;X和和Y为存放于为存放于X单元和单元和Y单元的字操作数单元的字操作数;若溢出,则转移到;若溢出,则转移到overflow处理处理 mov ax,X sub ax,Y jo overflow .;无溢出,结果正确;无溢出,结果正确overflow:.;有溢
12、出,出错处理有溢出,出错处理例:JP/JNP指令;设字符的设字符的ASCII码在码在AL寄存器中寄存器中;将字符加上奇校验位;将字符加上奇校验位and al,7fh;最高位先置最高位先置“0”,并判断,并判断“1”的的个数个数jnp next;个数已为奇数,则转向个数已为奇数,则转向nextor al,80h;否则,最高位置否则,最高位置“1”next:.(2)比较两数)比较两数Jcc M,NM N无符号数无符号数(A,B)有符号数有符号数(G,L)l=)JB(JNAE)JL(JNGE)l)JBE(JNA)JLE(JNG)l(=(50,转到,转到TOO_HIGH,否则,否则 计算计算X-Y:溢
13、出转到溢出转到OVERFLOW,否则否则|X-Y|RESULT MOV AX,XCMP AX,50JG TOO_HIGHSUB AX,YJO OVERFLOWJNS NONNEGNEG AX NONNEG:MOV RESULT,AX TOO_HIGH:OVERFLOW:【例】复制数据块【例】复制数据块AREA1AREA2目目的的数数据据块块数数据据段段.AREA1+1AREA2+1.AREA1+99AREA2+99.SI=2000HINCSISI=2001H(AREA1)=34HINCAREA1INC2000H(AREA1)=35H1000H:2000H34H【例】等价程序【例】等价程序LEA
14、 SI,AREA1LEA DI,AREA2MOV CX,100AGAIN:MOV AL,SI MOV DI ,ALINC SIINC DIDEC CXJNE AGAIN赋初值循环体【例】另一种做法【例】另一种做法MOV SI,0MOV DI,0MOV CX,100AGAIN:MOV AL,AREA1SIMOV AREA2DI,ALINCSIINCDIDEC CXJNZ AGAIN赋初值循环AREA1AREA2.AREA1+1AREA2+1.AREA1+99AREA2+99.SIDISI=2000HSI AREA10INCSISI=2001HSI AREA114.循环指令循环指令 LOOP格式:
15、格式:LOOP LOOP label操作:操作:(CX)-1CX(CX)-1CX;若若(CX)0,(CX)0,则转至则转至label处执行;处执行;否则退出循环否则退出循环,执行执行LOOPLOOP后面的指令。后面的指令。LOOP指令与下面的指令段等价:指令与下面的指令段等价:DEC CX JNZ label例:记录字符串中空格的个数;String是附加段中的一个字符串是附加段中的一个字符串mov cx,count;设置循环次数;设置循环次数lea si,stringxor bx,bx;bx0,记录空格数,记录空格数mov al,20h;空格的;空格的ASCII码为码为20Hagain:cmp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 324 转移指令-精品文档资料系列 转移 指令 精品 文档 资料 系列
限制150内