c语言中如何调用汇编程序

c语言中如何调用汇编程序,第1张

1、如果汇编程序是可执行文件,比如exe文件,则可以使用system函数直接调用。比如下面的代码,用system()打开windows上的记事本程序。

#include <stdio.h>

#include <stdlib.h>

int main()

{

system("notepad.exe")

return 0

}

2、在C语言源码中,可以通过内联汇编来直接编写汇编程序代码。不同的编译器使用内联汇编的方法不同,vc/vs编译器中一般使用__asm关键字来使用内联汇编,gcc编译器一般使用asm关键字来使用内联汇编,以vc6.0为例,下面的代码通过使用内联汇编来计算1+1,并将结果保存到int型变量result中。

#include <stdio.h>

int main()

{

int result

_asm {

mov eax,1

mov ebx,1

add eax,ebx

mov result, eax

}

printf("1+1=%d\n", result)

return 0

}

你要知道system的返回值,并非H1.EXE的返回值。

在DOS下,

system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。

它不能得到被调用的程序的执行结果。

要得到其他程序的执行的结果,要用spawn***()这个家族的函数。

如果在linux下面

如果你想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。

如果你非常想获取他的返回值,就使用popen函数。它返回一个FILE*,就好像读写文件一样 *** 作它就是了,不需要另外写文件读文件。

1 编译阶段,执行的是对单个文件的转换,从源代码转换成二进制文件。

2 链接阶段,将每个源文件转成的二进制文件,及相关的系统库文件共同打包生成可执行文件。

3 从定义上可以看出,链接阶段,出现错误有两种可能:

1) 函数中引用了不存在的函数。

2) 编译环境有问题,导致ld出错。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8155370.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存