C 中的内联汇编:INT 命令和 C 变量
我正在尝试使用 C 变量在 C 代码中使用汇编。 我的代码如下所示:
__asm { INT interruptValue };
其中“interruptValue”是我从用户那里获得的变量(例如 15 或 15h)。 当我尝试编译时,我得到:
汇编器错误:'无效指令 操作数'
我不知道中断值的正确类型是什么。我尝试了 long\int\short\char\char* 但没有一个起作用。
I'm trying to use assembly in C code using C variables.
My code looks like this:
__asm { INT interruptValue };
Where 'interruptValue' is a variable I get from the user (e.g 15 or 15h).
When I try to compile I get:
Assembler error: 'Invalid instruction
operands'
I don't know what is the correct type for interruptValue . I tried long\int\short\char\char* but none of them worked.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
INT 操作码不允许指定变量(寄存器或内存)作为参数。你必须使用像
INT 13h
这样的常量表达式如果你真的想调用变量中断(我无法想象这样做的任何情况),请使用类似switch语句的东西来决定使用哪个中断。
像这样的东西:
编辑:
这是一种简单的动态方法:
The INT opcode does not allow to specify a variable (register or memory) as an argument. You have to use a constant expression like
INT 13h
If your really want to call variable interrupts (and I cannot imagine any case for doing so), use something like a switch statement to decide which interrupt to use.
Something like this:
EDIT:
This is a simple dynamic aproach: