分享

汇编:jmp指令

 e3399 2010-10-20
jmp位无条件转移指令,即可以修改IP或者同时修改CS和IP。
(1)、依据位移进行转移的jmp指令
          这种格式的jmp指令实现的是段内转移,它对IP的修改范围是-128-127,也就说,它向前转移时最多越过128个字节,向后转移可以最多越过127个字节。jmp指令中的short符号,说明指令进行的是短转移。jmp指令中的标号是代码段中的标号,它指明了指令转移的目的地,转移结束后,CS:IP应指向标号处的命令,例如:
assume  cs:codesg
codesg segment
     start:mov ax,0
             jmp short s
             add ax,1
     s:     inc ax
codesg ends
end start
CPU在指向jmp指令的时候,并不需要转移的目的地址,而是告诉了cpu要转移的位移。
(2)、转移的目的地址在指令中的jmp指令。
       jmp far ptr,实现的是段间转移,又称为远转移,功能如下:
      CS=标号所在段的段地址,IP=标号所在段中的偏移地址。
      far ptr指明了指令用标号的段地址和偏移地址修改CS和IP;
  如下:
  view plaincopy to clipboardprint?
assume cs:codesg  
codesg segment  
   start: mov ax,0  
          mov bx,0  
          jmp far ptr s;     
          db 256 dup (0);  
         s:add ax,1  
           inc ax  
codesg ends  
end start 
assume cs:codesg
codesg segment
   start: mov ax,0
          mov bx,0
          jmp far ptr s;  
          db 256 dup (0);
         s:add ax,1
           inc ax
codesg ends
end start
(3)、转移地址在寄存器中的jmp指令
指令格式:jmp  16位reg
功能:   IP=(16位reg)
(4)、转移地址在内存中的jmp指令
有两种格式:
      1、jmp word ptr 内存单元地址(段内转移)
       功能:从内存单元地址处开始存放一个字,是转移的目的偏移地址
       比如如下指令:
          mov ax,0123h
          mov ds:[0],ax
          jmp word ptr ds:[0]
        执行后:IP=0123h
     2、jmp dword ptr 内存单元地址(段间转移)
         功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址
          CS=内存单元地址+2
          IP=内存单元地址
         例如:
         mov ax,0123h
         mov ds:[0],ax
         mov word ptr ds:[2],0
         jmp dword ptr ds:[0]
         执行后,CS=0,IP=0123H,CP:IP指向0000:0123
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/w_shun/archive/2010/05/09/5572662.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多