Wie verwenden Sie printf von der Montage?
Habe ich ein MSVC++ - Projekt eingerichtet, um kompilieren und ausführen des Assembler-code.
In main.c:
#include <stdio.h>
void go() ;
int main()
{
go() ; //call the asm routine
}
In gehen.asm:
.586
.model flat, c
.code
go PROC
invoke puts,"hi"
RET
go ENDP
end
Aber wenn ich kompilieren und ausführen, bekomme ich eine Fehlermeldung in gehen.asm:
Fehler A2006: undefined symbol : stellt
Wie definiere ich die Symbole in <stdio.h>
für die .asm-Dateien in das Projekt?
- Man muss irgendwie den link zu deinem C-standard-Bibliothek.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was ich habe.
Es funktioniert!!
Ich denke, das Artikel erklärt es besser als ich können.
Grob gesagt, der assembler kann nicht finden das symbol (Funktion) in
go.asm
. Sie haben zu sagen, es sein ein externes symbol.Verlinkten Artikel Ansätze, Aufbau einer gemischt-code-app aus der Sicht der Verwendung der Montage als primäre Sprache, einschließlich der Ausführung des
main
routine. Wenn Sie eineC
basierte main-routine, vieles von dem, was getan wird, unnötig ist, sollten Sie gerade brauchen:und:
sowie
EXTERN
Richtlinien für jede Funktion, die Sie anrufen möchten, in der format:EXTERN printf:proc
.