注册 登录
编程论坛 汇编论坛

求教:关于jmp dword ptr 内存单元地址 的问题

BosXL 发布于 2018-02-26 13:49, 2393 次点击
在王爽老师的《汇编语言》书中第9章9.6节里面,照着代码输入以下指令:

(在CMD的debug环境下)
mov ax,0123
mov [0],ax
mov word ptr [2],0
jmp dword ptr [0]

只有本站会员才能查看附件,请 登录


按理,在执行后,(CS)=0, (IP)=0123H, CS:IP指向 0000:0123

可是,在我的机子执行后,CS的值并没有改变,依然是原来的值为 0BDB, IP的值倒是改变为0123.

看了看  jmp dword ptr [0]  对应的机器码为: FF260000  ,这是段内转移的啊(按理应为  FF2E0000), 而且实验了很多次, 怎么在我机子上就不一样了,debug的原因?还是其他的?

只有本站会员才能查看附件,请 登录


求教!检查了很多遍了,没发现输错的问题,就是想不通为什么会这样?


1 回复
#2
Valenciax2018-03-03 22:12
这里有两个问题.

1. 键入jmp dword ptr [0]... debug不能正确编译,它只编译为jmp [0000],这是短程跳跃,并不能跨段.
这是debug的问题.改用debug32是可以的.

2. 即使编译成功 jmp dword ptr [0], 经实验证明,也不能跨段,可改为
jmp far [0]
1