我试图导出.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)
out 有六种形式:
out imm8, ALout imm8, AXout imm8, EAXout DX, ALout DX, AXout 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(一个相当任意的数字)更有意义.