yaoxinsong 发表于 2014-10-21 13:32:57

关于标号的问题

1000:0      b80000    mov ax,0
1000:3      e80100    call s
1000:6      40         inc ax
1000:7      58         s:pop ax
为什么答案是6不是7 ,执行第一条指令的时候ax=0,执行第二条指令时push s入栈且指针指向7,执行4条指令的时候等价于MOV ax,s
。我想问的是此时标号s是等于7还是6.。。。。为什么?

小靚同学Leon 发表于 2014-10-21 14:18:53

0x1. 这几条指令的意思不是酱紫理解的。
0x2. 执行call s,首先push ip(也就是push 6)再 jmp s。接着执行 pop ax,即将ip的值传给ax,此时ax=6

yaoxinsong 发表于 2014-10-21 17:58:09

小靚同学Leon 发表于 2014-10-21 14:18
0x1. 这几条指令的意思不是酱紫理解的。
0x2. 执行call s,首先push ip(也就是push 6)再 jmp s。接着执 ...

谢谢,刚才尝试了一下。。。之前我一直以为标号的值是标号前的第一条指令的第一个地址。原来是第一条指令减1的一个地址。。。。。s:pop ax   一直以为s的地址是pop ax的首地址原来不是。。。。为什么不是第一条指令的首地址反而是减1后的地址。。。求解

小靚同学Leon 发表于 2014-10-22 10:32:44

不懂你的意思

yaoxinsong 发表于 2014-10-22 11:42:11

小靚同学Leon 发表于 2014-10-21 14:18
0x1. 这几条指令的意思不是酱紫理解的。
0x2. 执行call s,首先push ip(也就是push 6)再 jmp s。接着执 ...

call s能不能这样理解。。。。执行call s后ip跳到下一条指令也就是等于6,接着push ip再jmp s。

大个的糖果 发表于 2014-10-30 19:32:45

页: [1]
查看完整版本: 关于标号的问题