社区
汇编语言
帖子详情
关于汇编语言“jmp far ptr 标号”指令的问题
keesss
2016-01-13 03:13:38
汇编语言中“jmp far ptr 标号”可以实现长跳转,这时候编译过后机器码中已经贴上了跳转点的具体地址,而不是偏移量。我想知道为什么编译器知道程序的具体地址?程序加载进内存时地址不是固定的,标号如何知道每次程序加载进内存后的地址?
...全文
976
3
打赏
收藏
关于汇编语言“jmp far ptr 标号”指令的问题
汇编语言中“jmpfarptr标号”可以实现长跳转,这时候编译过后机器码中已经贴上了跳转点的具体地址,而不是偏移量。我想知道为什么编译器知道程序的具体地址?程序加载进内存时地址不是固定的,标号如何知道每次程序加载进内存后的地址?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zara
2016-01-14
打赏
举报
回复
jmp far ptr 这样的指令,是指 dos16 模式下的吧,对 win32 来说普通软件里不会有的。
dos16 下,加载地址的不同,是指起始段址的不同,程序完结后,偏移就是固定的了,所以,jmp far ptr 里,偏移部分是确定的,段址就需要重定位;在最后的代码里,段址部分是相对程序开头的段偏移,这样在进行修正时,只要对需要修正的项加上程序载入的起始段址就可以了。
keesss
2016-01-13
打赏
举报
回复
你的意思是涉及到这种转移指令的时候编译器并没有贴上实际地址,而是运行的时候让操作系统填入吗?
zara
2016-01-13
打赏
举报
回复
重定位项,就是解决这个问题的吧,这类需要根据加载地址进行修正的地方,在 exe 文件里有个专门空间存放的,载入程序后会根据载入的地址对涉及到的地方相应的修正。
汇编语言
jmp
指令
用法总结
`
jmp
far
ptr
标号
`:这种形式的`
jmp
`
指令
会同时改变`CS`和`IP`,使得程序可以跳转到不同的代码段。它使用
标号
的完整段地址和偏移地址。 3. **寄存器中的转移**: `
jmp
某一合法寄存器`:这里的“某一合法寄存器...
AT&T
汇编语言
与GCC内嵌汇编简介.pdf
### AT&T
汇编语言
与GCC内嵌汇编简介 #### AT&T与INTEL
汇编语言
语法的区别 AT&T
汇编语言
与INTEL
汇编语言
在语法上有显著的不同,这些差异对于初学者来说可能会造成一定的混淆。理解这两种语法之间的区别非常重要,...
《
汇编语言
》(王爽)第10章_call_和_ret_
指令
指令
“call
far
ptr
标号
”实现的是段间转移。 10.5 转移地址在寄存器中的 call
指令
转移地址在寄存器中的 call
指令
可以实现寄存器间的转移。 10.6 转移地址在内存中的 call
指令
转移地址在内存中的 call ...
关于
汇编语言
程序设计复习资料
- `
JMP
FAR
PTR
DONE`:远跳转
指令
,用于段间转移,选择答案C。 - `
JMP
SHORT DONI`:短跳转
指令
,用于段内转移,适用于较小的偏移范围。 4. **条件转移
指令
**: - `JNE`:如果不相等(ZF=0)则跳转,用于无符号...
汇编语言
程序设计之分支语言程序
3.
JMP
FAR
PTR
lab:远转移,lab可以是任何段的
标号
。 4.
JMP
lab:根据情况自动转换为以上三种形式之一。 直接寻址方式中,位移量可以是正或负,表示相对于
JMP
指令
的偏移地址。
JMP
指令
后面的
标号
lab对应着转移的...
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章