美文网首页
汇编学习记录 9转移指令的原理

汇编学习记录 9转移指令的原理

作者: 官总哦 | 来源:发表于2019-04-23 17:28 被阅读0次

1.定义:
可以修改IP,或者同时修改CS和IP的指令统称为转移指令。
2.操作符OFFSET
offset是取得标号距离代码段的偏移地址:(例如)

assume cs:codesg
codesg segment
    start: mov ax, offset start   %相当于将start到code段开始的偏移地址(0),移到ax中
    S:     mov ax, offset s  %相当于将s到code段开始的偏移地址(3),移到ax中
codesg ends
end start

3.指令JMP
jmp指令可以修改:IP或者同时修改IP和CS。但是怎样修改呢?,一般来说JMP指令要给出两种信息才能够修改:
(1)转移的目的地址;(2)转移的距离(分为:段间转移;段内短转移;段内近转移)
下面列出jmp指令不同的给地址方式:(注意观察每种方式的跳转范围,超出范围编译器将报错)

  • 直接给出偏移地址:
  1. jmp short 标号 -> 跳转到标号处继续程序,该指令将会修改IP的值
  • 修改范围:段间短转移 -128~127范围(8位补码)
  • 进一步理解:
    上述指令在被编译成为机器语言的时候,会被编译为EB XX形式。
    机器指令中:EB是JMP指令,而XX代表的是一个偏移地址,是一个编译器帮忙算出来的、相对于此跳转指令的下一个指令位置的偏移位移。(为什么?思考CPU指令执行过程:是先修改IP的值,再执行指令)
  1. jmp near ptr 标号 与上面指令功能相近, 实现段内近转移 -32768~32767(16位补码)
  2. jmp far ptr 标号 ->段间转移,该指令同时修改CS和IP,跳到另外一个段的标记位置;在机器码中会被翻译成:JMP XXXX:XXXX 形式
  • 通过寄存器给出偏移地址:
  1. jmp 寄存器号 ->修改IP为寄存器内容
  • 通过内存单元给出地址:
  1. jmp word ptr 内存地址 ->段内转移;内存单元处放着一个字,是转移目的的偏移地址;修改IP的值为内存单元中的内容。
  2. jmp dword ptr 内存地址 -> 段间转移;内存单元处存放着两个字,高地址处存放的是段地址,低地址存放偏移地址;修改CS为(内存单元+2),修改IP为(内存单元)
  3. 条件转移指令:JCXZ 标号 -> 如果CX寄存器值为零则跳转;跳转距离同短转移的相同
  4. 特殊跳转指令:loop 标号 -> 如果CX寄存器不等于0,则跳转到标号处

4.为什么根据位移来寻找地址? 因为偏移量不依附于大环境,只跟程序内相对地址有关,方便重定位等操作。

相关文章

  • 汇编学习记录 9转移指令的原理

    1.定义:可以修改IP,或者同时修改CS和IP的指令统称为转移指令。2.操作符OFFSEToffset是取得标号距...

  • 【汇编语言】第 9 章 转移指令的原理

    版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...

  • 汇编笔记4(跳转)

    第9章(转移指令): 8086转移指令: 无条件转移指令,条件转移指令,循环指令,过程,中断 offset(伪指令...

  • 基础的汇编指令学习-2019-05-09

    基础的汇编指令学习 转载请标注出处:CSDN ARM 指令记录 指令的条件域 寄存器学习 寄存器 显示opcode...

  • 编译原理知识汇总

    编译原理 第一章 引言 1.从面向机器的语言到面向人类的语言 汇编指令:用符号表示的指令被称为汇编指令汇编语言:汇...

  • 8086汇编(22)转移指令

    转移指令 1、可以修改IP,或同时修改CS和IP的指令统称为转移指令。 8086CPU的转移行为有以下几类。 只修...

  • 汇编指令记录

    1.有效初始化寄存器 xor ecx,ecx mul ecx => edx=0,eax=0 2. 带条件跳转 jz...

  • 逆向笔记(三)-汇编指令

    汇编指令 针对汇编来说,汇编指令是必须了解的,而且汇编中汇编指令比较多,但是每一个汇编指令对应的机器码是固定不变的...

  • 51汇编学习

    51汇编学习 参考 汇编教程http://www.51hei.com/mcuteach/252.html 汇编指令...

  • 汇编学习记录13 INT指令

    1.INT指令 int指令格式为:int n,n为中断码的类型,功能是引发对应中断码的中断 int指令执行的时候分...

网友评论

      本文标题:汇编学习记录 9转移指令的原理

      本文链接:https://www.haomeiwen.com/subject/pmxvgqtx.html