SYSENTER语法错误

时间:2015-08-28 06:49:11

标签: windows assembly x86 masm

为什么以下代码会在 sysenter insturction中产生语法错误?如何进行最简单的内核模式转换?

.586p
.model flat,stdcall
.stack 4096

.code
main proc

  mov eax,18ch    
  mov edx,esp
  sysenter

main endp
end main

1 个答案:

答案 0 :(得分:2)

旧版本的 MASM 可能不支持所有指令,即使它们可能对特定体系结构有效。 MASM32 以及sysentersysexit的使用就属于这种情况。您的选择是:

  1. 使用Visual Studio中更现代的 MASM 版本。您可以下载包含现代 MASM 汇编程序的VS的免费Express版本。
  2. 使用支持所需说明的 NASM 等其他汇编程序
  3. 按原样使用 MASM32 ,但直接将指令编码为字节或字。您可以将{2} sysenter指令替换为dw 340fh,并将sysexit替换为dw 350fh。可以找到这些说明的OP代码信息herehere