tianmo 发表于 2019-8-15 16:17:31

检测点9.1(3)用debug测试出跟答案不一样

本帖最后由 tianmo 于 2019-8-15 16:22 编辑

检测点9.1

(3)用Debug查看内存,结果如下:
   2000:1000 BE 00 06 00 00 00 ......

            则此时,CPU执行指令:

         mov ax,2000h

         mov es,ax

         jmp dword ptr es:

后,(cs)= 0006H ,(ip)= 00BEH

我用debug测试出跟答案不一样


jackz007 发表于 2019-8-15 16:17:32

      我又写代码验证了一把,证明 MASM 6.11 编译器是可以正确识别这条指令的:

         jmp dword ptr es:

      人家王爽老师说的没错。

      楼主之所以困惑,是因为 Debug.exe 不能正确识别 dword 修饰符,进而被忽略造成。

jackz007 发表于 2019-8-15 18:21:04

本帖最后由 jackz007 于 2019-8-15 18:38 编辑

       这种写法得到的效果是段内跳转
    es:
    jmp dword ptr
      如果希望跨段跳转,应该这么写:
    es:
    jmp far ptr

tianmo 发表于 2019-8-15 18:42:34

jackz007 发表于 2019-8-15 18:21
这种写法得到的效果是段内跳转,跳转目的地是新的代码偏移:00BE

      如果希望跨段跳转,应该 ...

王爽的书上是这么写的,我用汇编程序也可以得到cs=0006h

jackz007 发表于 2019-8-15 18:57:05

tianmo 发表于 2019-8-15 18:42
王爽的书上是这么写的,我用汇编程序也可以得到cs=0006h

      既然这样,那你的问题还继续存在吗?
页: [1]
查看完整版本: 检测点9.1(3)用debug测试出跟答案不一样