鱼C论坛

 找回密码
 立即注册
查看: 5711|回复: 5

汇编offset

[复制链接]
发表于 2012-8-13 23:21:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;这几行代码本来是想看编译的时候是怎么处理两个地方的offset s的,
;结果知道了编译的时候遇到第一个offset s,计算偏移值,以后就不变了
;但另一个地方让我很桑感,不明白为sé摸,请看下面注释的一行:

assume cs:code

code segment
start:  ;jmp s
        mov ax, offset s  ;注释掉jmp s,这里是3(理解),不注释jmp,这里是6(不理解)
s:      nop
        mov ax, offset s
        mov ax, 4c00H
        int 21H
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-14 07:21:35 From FishC Mobile | 显示全部楼层
jmp s指令占3字节的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-14 08:49:42 | 显示全部楼层
楼主的这个问题怎么看起来怪怪的,注释掉jmp s指令从s的偏移地址到start之间只move ax,offset s是三个字节,如果不注释jmp s占用两个字节那么此时的ip应该为s的偏移0005-0002(move)的偏移=3,难倒是jmp s两个字节+move ax,offset三个指令+nop一个指令=6这么算的,有点离谱呀,支持楼主的问题,同样等待
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-14 09:11:06 | 显示全部楼层
谢谢二楼兄弟支持,一楼suài锅回答的是正确的,我把offset s与jmp s弄混淆了,offset s计算的是偏移地址,jmp s计算的是位移。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-14 09:12:25 | 显示全部楼层
上面"楼"字前面的所有数字+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-14 09:13:09 | 显示全部楼层
所有"楼"字前面的数字+1 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表