如题,在切换到保护模式后,执行例如mov ax, 0指令虚拟机报错。。。改成mov eax, 0或mov ah, 0能正常运行,求解释!
补充:用的是nasm编译器,编译通过!
------解决方案--------------------
你查看下编译后的十六进制,是不是nasm编译出错了呢。
mov ax,0
实模式是 B8 00 00
保护模式是 66:B8 00 00
是否缺少了66H prefix,这个前缀在16下指明操作数是32位,而在32位下指明操作数是16位的,
具体你可以参考 Intel文档 或者 http://www.mouseos.com/x64/prefix.html#t431