马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 兰陵月 于 2017-12-2 14:27 编辑
本求助源自于《X86汇编语言-从实模式到保护模式》(李忠等著,第1版)第11章 进入保护模式 第11.7节 清空流水线并串行化处理器(P199)
代码清单位于:http://bbs.fishc.com/thread-100569-1-1.html
这里主要讨论代码第55行:jmp 0x0010:flush ;16位的描述符选择子:32位偏移
先看上下文内容—《X86汇编语言-从实模式到保护模式》P199
——————————————分——割——线———————————————
进行有dword和没dword的编译、执行测试 一、不加关键字“dword”,jmp 0x0010:flush的编译结果,如下图:
可以看到标号flush编译后的地址为:0x0000009C。 jmp指令编译后的机器码为:EA [9C 00] 10 00,总共5个字节。 二、加关键字“dword”,jmp dword 0x0010:flush的编译结果,如下图:
可以看到标号flush编译后的地址为:0x0000009F。 jmp指令编译后的机器码为:66 EA [9F 00 00 00] 10 00,总共8个字节。
上述两条指令加与不加关键字dword,在虚拟机中最后运行结果都一样,都能正常显示结果。 至于一模一样的程序在我的机器上编译之后的地址结果为何与书上不一致?! 我也弄不清楚,但程序编译后都能正常执行,并显示与书本上一致的结果。
这是否说明,这个关键字dword可加可不加,效果是否都是一样的呢?
|