|
|
第13章习题
1.在编译阶段,如果指定的是bits 16,那么,
mov bx, 16
的机器码为BB 10 00。相反,
mov ebx, 16
的机器码为66 BB 10 00 00 00。
试问,如果指定了bits 32,这两条指令编译后的机器码又分别是什么?
答:
32位操作尺寸下,16位操作要加前缀66,32位操作不加。所以上述两条指令的机器码分别是
66 BB 10 00
BB 10 00 00 00
2.以下程序片断:
bits 16
mov bx, 16 ;BB 10 00
mul bx ;F7 E3
将生成机器指令序列BB 10 00 F7 E3。
当处理器在32位保护模式下执行这些代码时,会有什么问题?
答:32位模式下,这些机器码对应着另外两条32位操作尺寸的指令,而且与上述指令完全不同。所以处理器译码的结果完全不是上述两条指令,且执行结果也完全不是你想要的。
|
|