2 keesss keesss 于 2016.01.13 16:05 提问

汇编语言“jmp far ptr 标号”的问题。

汇编语言中“jmp far ptr 标号”可以实现长跳转,这时候编译过后机器码中已经贴上了跳转点的具体地址,而不是偏移量。我想知道为什么编译器知道程序的具体地址?程序加载进内存时地址不是固定的,标号如何知道每次程序加载进内存后的地址?

1个回答

caozhy
caozhy   Ds   Rxr 2016.01.13 20:13

程序加载进内存时地址不是固定的
错,当然是固定的。对于你的程序不是固定的,但是链接器链接后就固定了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
汇编JMP寻址时short,near,far区别
jmp为无条件转移指令,可以只修改IP,也可以同时修改CS和IP。 jmp指令要给出两种信息: (1)转移的目的地址 (2)转移的距离(段间转移、段内转移、段内近转移) 不同的给出目的地址的方法,和不同的转移地址位置,对应有不同格式的jmp指令。 依据位移进行转移的jmp指令: 【1】jmp short 标号(转移标号处执行指令)          IP修改范围:-128~127,"
jmp far ptr 标号
jmp far ptr 标号 实现段间转移,又称远转移。 功能 如下 (cs)=标号所在段的段地址  (ip)=标号所在段中的偏移地址 far ptr 指明了指令用标号的段地址和偏移地址修改CS和IP jmpfar.asm assume cs:codesg codesg segment start:mov ax,0 mov bx,0 jmp far ptr s db 256 dup
8086汇编基础 call far ptr指令实例
慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 assume cs:code code segment start: mov ax,0700h mov ss,ax mov sp,10h call far ptr ok m
一步步学习汇编(10)之jmp指令原理分析
源地址:http://www.cnblogs.com/mfm11111/archive/2009/03/27/1422828.html
汇编转移指令jmp原理
在计算机中存储的都是二进制数,计算机将内存中的某些数当做代码,某些数当做数据。在根本上,将cs,ip寄存器所指向的内存当做代码,指令转移就是修改cs,ip寄存器的指向,汇编中提供了一种修改它们的指令——jmp。 jmp指令可以修改IP或cs和IP的值来实现指令转移,指令格式为:”jmp 标号“将指令转移到标号处,例如: CODES SEGMENT ASSUME CS:C
jmp near ptr 标号
指令“jmp near ptr 标号“的功能为 (IP)=(IP)+16位位移(段内近转移) -32769  32767 上一篇的 jmp short 标号 (段内短转移) (IP)=(IP)+8位位移 两个用法基本一致。位移也是编译程序在编译时算出的。
JMP段的跳转short、near、far
无条件转移指令jmp: 这种跳转指令有三种方式:短(short),近(near)和远(far)。短是指要跳至的目标地址与当前地址前后相差不超过128字节。近是指跳转的目标地址与当前地址在用一个段内,即CS的值不变,只改变EIP的值。远指跳到另一个代码段去执行,CS/EIP都要改变。短和近在编码上有所不同,在汇编指令中一般很少显式指定,只要写 jmp 目标地址,几乎任何汇编器都会根据目标地址的
转移指令jmp和跳转指令call
【-1】写在前面以下内容文字描述来自于 王爽老师的《汇编语言》教材,建议大家都买一本,哈哈。不是我打广告,确实人家写的好,应该支持。我只是附上了自己的图片和理解而已。【0】先上干货只修改ip,称为段内转移,如jmp ax 修改cs和ip,称为段间转移,如 jmp 1000:0【1】分类转移指令分为: 无条件转移,如jmp 条件转移 循环指令, loop 过程 中断【2】我们的jmp2.1
汇编语言学习第十章-CALL和RET指令
本博文系列参考自>第三版,作者:王爽 call与ret都是转移指令,它们可以改变IP值,或者同时改变CS与IP的值,往往在程序中使用它们进行子程序模块的设计。 10.1  ret和retf ret用栈的数据修改IP的内容,实现近转移 retf用栈中的数据修改CS与IP的内容,实现远转移 ret执行步骤: (1):(IP)=((SS)*16+SP) (2
jmp指令的机器码编写
1.首先直接的jmp分3种 :      Short Jump(短跳转)机器码 EB rel8             只能跳转到256字节的范围内       Near Jump(近跳转)机器码 E9 rel16/32             可跳至同一个段的范围内的地址       Far Jump(远跳转)机器码EA ptr 16:16/32