我记得以前使用旧的Borland DOS编译器可以做这样的事情:

asm {
 mov ax,ex
 etc etc...
}

现在有没有一种半平台独立的方式来做这件事呢?我需要进行BIOS调用,所以如果有一种方法可以在不使用ASM代码的情况下实现这一点,那对我也同样有用.

推荐答案

使用GCC

__asm__("movl %edx, %eax\n\t"
        "addl $2, %eax\n\t");

使用VC++

__asm {
  mov eax, edx
  add eax, 2
}

C++相关问答推荐

如何在Scilab API中求解方程

CC crate 示例不会与C函数链接

与unions 的未定义行为

返回一个包含数组的 struct

如何将长字符串转换为较小的缩写,该缩写由第一个字符、最后一个字符和中间的字符数组成?

在C语言中,是否可以使枚举数向后计数?

如何使用C for Linux和Windows的标准输入与gdb/mi进行通信?

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

关于scanf()和空格的问题

C堆栈(使用动态数组)realloc内存泄漏问题

通过k&;r语法的c声明无效

如何将两个uint32_t值交织成一个uint64_t?

无法识别C编程语言的语法,如书中所示

C中的char**v*char[]

从Raku nativecall调用时精度不同

Tcl_GetDoubleFromObj在列表的迭代中是一个缺点

struct 中的qsort,但排序后的 struct 很乱

";错误:寄存器的使用无效;当使用-masm=intel;在gcc中,但在AT&;T模式

为什么程序在打印每个数字之前要等待所有输入?

保存有符号整数结果的变量是否会溢出(后增量的副作用),并且此后从未在任何表达式中使用过它,是否会导致 UB?