如何从Assembly调用C函数?

Mor*_*lde 0 c assembly

这是整个装配程序:

.model small
.stack 256

.code
start:
    call printer
    mov ax, 3       ; store 3 into ax

    mov ah, 76      ; back to DOS
    mov al, 0       ; no errors
    int 21h         ; interupt -> DOS
end start
Run Code Online (Sandbox Code Playgroud)

这就是我定义C函数的地方printer

#include <stdio.h>

void printer()
{
    printf("Hello!\n");
}
Run Code Online (Sandbox Code Playgroud)

编译汇编代码时,出现错误:undefined symbol: printer.在C我做的时候#include "file.h",我如何在这里获得相同的结果?

Joh*_*nck 5

问题不在于编译,而在于链接.您必须链接(ld在Unix/Linux上使用if)您的可执行文件,包括带有汇编代码的目标文件和带有C代码的目标文件.

或者使用"asm"块将汇编代码放入C文件中.