社区
汇编语言
帖子详情
关于汇编转移命令jump的问题
lost_in_crowd
2012-09-23 12:35:57
书上说“jump short 标号”是在编译的时候由编译程序计算出相对地址位移保存到程序代码中,然后在程序执行时用当前IP加上相对地址位移计算出偏移移地址;那请问“jump far ptr 标号”是在什么时候由谁来确定段地址和偏移地址的?
...全文
645
5
打赏
收藏
关于汇编转移命令jump的问题
书上说“jump short 标号”是在编译的时候由编译程序计算出相对地址位移保存到程序代码中,然后在程序执行时用当前IP加上相对地址位移计算出偏移移地址;那请问“jump far ptr 标号”是在什么时候由谁来确定段地址和偏移地址的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
日立奔腾浪潮微软松下联想
2012-09-23
打赏
举报
回复
编译器通常生成一个可浮动的映像,对DOS .exe,是基于段0开始的,也就是程序的第一个段的段地址设定为0,后面的段顺序排,比如第一个段占用了256字节(16节),那么第二个段的段地址就是16,依此类推。程序执行之前,操作系统的加载器会对涉及绝对地址访问的指令进行重定位,比如mov ax,data这种指令,编译的时候生成的是浮动段值(如果data是第一个段,那就是mov ax,0),然后在文件头中标记这个位置是一个重定位项,加载器把这个位置加上.exe装入内存的起始段,比如1234h,就完成了重定位。
windows的PE格式类似,编译器一般生成的也是浮动地址,同时在文件头中标记一个加载起始地址(0x00401000之类),操作系统的加载器可以根据这些信息调整加载位置(对于PE,也可以剥离重定位信息,那程序只能加载到文件头标记的起始位置,不能调整了),只是PE的重定位与DOS .exe有所不同。
大熊猫侯佩
2012-09-23
打赏
举报
回复
你自己都说了 “偏移”地址,和绝对地址区别在哪?
jmp 有很多种格式,具体你可以看一下指令码。
建议实际写一个看一下,加深理解,一目了然。
lost_in_crowd
2012-09-23
打赏
举报
回复
如果是编译器的话,编译器怎么确定程序会加载到哪个内存区呢?程序加载到内存不是随机的吗?
大熊猫侯佩
2012-09-23
打赏
举报
回复
编译器
日立奔腾浪潮微软松下联想
2012-09-23
打赏
举报
回复
就是标号所在的段和段内偏移地址(如果没有段超越前缀的话)。
反
汇编
初级教程
这套课程是反
汇编
系列课程的基础阶段,后期将陆续推出反
汇编
进阶及反
汇编
课程。整套反
汇编
课程的教学目标是为了让大家能够窥息计算机程序世界的奥妙,为将来成为一名合格的大Hacker打下夯实的基础。 反
汇编
技术在计算机编程领域的应用非常广泛,从程序的性能优化到竞品软件的功能分析,从游戏外挂制作到大型厂商的反外挂体系,从木马病毒反人类到杀毒软件保平安等均需要从业者有深厚的反
汇编
功底。
汇编
语言
转移
指令及其原理
汇编
语言 jmp offset jcxz loop等
转移
指令的原理
【
汇编
语言】
转移
指令&循环指令
转移
指令 一、无条件
转移
指令 (1)JMP指令概述 (2)JMP指令类型 1.段内
转移
、相对寻址 2.段内
转移
、间接寻址 3.段间
转移
、直接寻址 4.段间
转移
、间接寻址 (3)条件
转移
指令的使用 1.标号的地址属性 2.控制
转移
二、条件
转移
指令 (1)JCC指令概述 (2)条件
转移
指令分类 ①单个标志状态作为条件 ②两数大小关系 (3)产生条件的指令 循环指令 一、LOOP指令 (1)LOOP指令格式 (2)LOOP指令的应 二、JECXZ指令
汇编
命令
笔记
汇编
命令
笔记 JL(jl)
汇编
语言中条件
转移
语句:JL/JNGE, 用于有符号数的条件
转移
指令,小于\不大于且不等于
转移
;ZF=0,且SF⊕OF=1。
汇编
程序设计中jl是一个条件跳转指令,全名
jump
less,意为小于跳转,有符号数比较类似的还有还有jg、ja、jb等jg
jump
great 大于跳转,有符号数比较ja above 大于,无符号数比较jb below 小于,无符号数比较条件...
二、8086
汇编
命令
大全
8086
汇编
命令
大全1、基础指令1.1、`MOV` 指令1.2、使用 `idata`1.3、操作符 `PTR`1.4、操作符 `OFFSET`2、计算指令2.1、`ADD` 加法2.2、 `SUB` 减法2.2、`INC` 自增& `DEC` 自减2.3、`AND` 与运算2.4、`OR` 或运算2.5、 `MUL` 乘法2.6、 `DIV` 除法3、
转移
指令3.1、循环 `LOOP`3.1.1、单循环3.1.2、多层循环3.2、 `
JUMP
` 无条件
转移
指令3.2.1、偏移距离
转移
3.2.2、段地
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章