_nosay丶 发表于 2012-8-13 23:21:03

汇编offset

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

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

敉沧 发表于 2012-8-14 07:21:35

jmp s指令占3字节的。。

醉玉堡主 发表于 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这么算的,有点离谱呀,支持楼主的问题,同样等待

_nosay丶 发表于 2012-8-14 09:11:06

谢谢二楼兄弟支持,一楼suài锅回答的是正确的,我把offset s与jmp s弄混淆了,offset s计算的是偏移地址,jmp s计算的是位移。

_nosay丶 发表于 2012-8-14 09:12:25

上面"楼"字前面的所有数字+1 {:5_97:} 。

_nosay丶 发表于 2012-8-14 09:13:09

所有"楼"字前面的数字+1 。
页: [1]
查看完整版本: 汇编offset