内联汇编,外出指令

Mus*_*rer 1 c++ assembly

我试图导出.dll文件并尝试在我的c#应用程序中使用它来将数据写入端口.在我的.cpp文件中(创建.dll)如果我使用"out"命令,则会出现"错误C2415:不正确的操作数类型"错误消息.你知道为什么我不能使用这个"out"命令吗?("mov"命令运行良好顺便说一句)

请参阅下面的代码:

#include <stdio.h>

extern "C" __declspec(dllexport) void enableWatchDog()
    _asm {
          out 66,41
          out 62,4
    }
}
Run Code Online (Sandbox Code Playgroud)

har*_*old 5

out 有六种形式:

  • out imm8, AL
  • out imm8, AX
  • out imm8, EAX
  • out DX, AL
  • out DX, AX
  • out DX, EAX

您的用法与其中任何一个都不匹配.也许这会起作用(未经测试):

mov al, 41
out 66, al
mov al, 4
out 62, al
Run Code Online (Sandbox Code Playgroud)

我对x86上的IO端口没有太多的经验,但从我能够找到的,66和62对我来说似乎有点怀疑.它们不应该是66h和62h吗?41h(可能是两个标志设置,或ASCII'A')对我来说比41(一个相当任意的数字)更有意义.