我记得在天与老borland DOS编译器,你可以做像这样的东西:

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

是否有一个半独立的平台的方式来做到这个吗?我有一个需要作一个BIOS电话,所以,如果有办法做到这一点没有个体和小型代码,这将同样有用的给我。

有帮助吗?

解决方案

使用 海湾合作委员会

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

使用 VC++

__asm {
  mov eax, edx
  add eax, 2
}

其他提示

在海湾合作委员会,还有更重要的还不止这一点。在该指令中,你必须告诉编译器什么改变,以便优化其不搞砸了。我不是专家,但有时它看起来像这样的东西:

    asm ("lock; xaddl %0,%2" : "=r" (result) : "0" (1), "m" (*atom) : "memory");

这是一个很好的想法写入了一些样品中的代码C,然后要求海湾合作委员会产生一个组件清单,然后修改,代码。

一个好的开始将在阅读这篇文章,其中谈谈联会在C/C++:

http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx

例从文章:

#include <stdio.h>


int main() {
    /* Add 10 and 20 and store result into register %eax */
    __asm__ ( "movl $10, %eax;"
                "movl $20, %ebx;"
                "addl %ebx, %eax;"
    );

    /* Subtract 20 from 10 and store result into register %eax */
    __asm__ ( "movl $10, %eax;"
                    "movl $20, %ebx;"
                    "subl %ebx, %eax;"
    );

    /* Multiply 10 and 20 and store result into register %eax */
    __asm__ ( "movl $10, %eax;"
                    "movl $20, %ebx;"
                    "imull %ebx, %eax;"
    );

    return 0 ;
}

非x86Microsoft汇编者不支持在线件。你要定义的整体功能在一个单独的组件来源文件,并通过这一汇编器。

你是高度不可能呼叫到BIOS下的保护模式的操作系统和应用的任何设施都可以在这一系统。甚至如果你在的核心模式是可能不安全-BIOS可能不是正确同步与尊重的操作系统状态如果你这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top