乱闯 发表于 2012-5-5 15:46:02

不知道操作符offset的便宜怎么看

不知道操作符的偏移怎么看标号的便宜地址怎么来
assume cs:code
code segment
   mov ax,4c00h
int 21h

start: mov ax,0
    s: nop
    nop
   
    mov di,offset s
    mov si,offset s2
    mov ax,cs:
    mov cs:,ax
   s0: jmp short s
   
   s1: mov ax,0
       int 21h
    mov ax,0
   
   s2: jmp short s1
       nop
   
code ends
end start

mov di,offset s为什么等同   mov di,8?便宜怎么是8怎么看?



Mr.han 发表于 2012-5-5 15:46:03

程序被加载以后,代码段第一句偏移地址为0

IP:0            mov ax,4c00h(占3个字节)
IP:3            int 21h(占2个字节)
IP:5            start: mov ax,0(占3个字节)
IP:8            s: nop(占1个字节)

那么 下一个指令的IP为多少呢?   
NOP占一个字节,自然为9

卟,要放弃调皮 发表于 2012-5-5 18:54:01

offset s 就相当于取S处的偏移地址,偏移地址为8所以mov di,offset s相当于mov di,8

云在风中 发表于 2012-5-6 13:25:51

因为mov di,offset s表示取s的所在的偏移地址赋给di。而在 s: nop,可以知道s所代表的地址是8.嘿嘿,不知道对不对但是你看着用哈

乱闯 发表于 2012-5-6 13:27:29

云在风中 发表于 2012-5-6 13:25 static/image/common/back.gif
因为mov di,offset s表示取s的所在的偏移地址赋给di。而在 s: nop,可以知道s所代表的地址是8.嘿嘿,不知道 ...

怎么看是8?怎么算?

花落、季 发表于 2012-5-11 22:32:06

楼主的头像好可爱啊{:5_109:}我觉得你可以debug下啊 不很明显吗
页: [1]
查看完整版本: 不知道操作符offset的便宜怎么看