ck329054222 发表于 2013-8-5 20:11:30

监测点9.1的第一题有点问题

下面是我的代码:
assume cs:code
data segment
db 0,0,0,4h
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr
code ends
end start
在data段中,我定义了db 0,0,0,4h
确实可以实现ip置0,但是我定义dw 0,0,0,4h居然也可以正常运行,还是可以使ip置0,这是为什么呢?

ck329054222 发表于 2013-8-5 20:18:11

好吧。。。我犯傻了。。。指向第三个字节所在处。。是0就行。。

吃屎哥 发表于 2013-8-15 22:30:18

问下 是指向第2个字节处把? BX=0 BX+1=1 就是你定义的0 0 第2个0把?

吃屎哥 发表于 2013-8-15 22:39:02

我错了,前面jmp word 这个word 是个字型数据 也就是说 从1开始到2 2个字节读法就是 2 1的读取里面的值,也就是说 把IP变成0000的话 就要把1和2这个2个字节变成0,0

ck329054222 发表于 2013-8-16 09:46:16

吃屎哥 发表于 2013-8-15 22:39 static/image/common/back.gif
我错了,前面jmp word 这个word 是个字型数据 也就是说 从1开始到2 2个字节读法就是 2 1的读取里面的值, ...

一开始可能不习惯。12h这样高的数字,在内存中从低到高是2,1排列的。

dddos 发表于 2014-8-11 00:23:47

CS:IP指向第一条指令,第一条指令时data中的数,还是mov ax,data这一条,如果是这条,DS:就不是data中的0002 0003这个地址吧!!

dddos 发表于 2014-8-11 00:59:00

dddos 发表于 2014-8-11 00:23
CS:IP指向第一条指令,第一条指令时data中的数,还是mov ax,data这一条,如果是这条,DS:就不是data中的000 ...

草,word ptr,段内转移,浪费我半小时!散了吧
页: [1]
查看完整版本: 监测点9.1的第一题有点问题