c语言中如何调用汇编程序
2个回答
展开全部
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;
}
展开全部
汇编语言的基本格式为:
PUBLIC _FOUND
_TEXT SEGMENT BYTE PUBLIC 'CODE'ASSUME CS: _TEXT
_FOUND PROC NEARPUSH BPMOV BP,SPMOV CX,[BP+4]DEC CXMOV SI,[BP+10]LODSWMOV DX,1
MOV BX,0
COMP: CMP AX,[SI]JA BIGGERMOV AX,[SI]MOV BX,DXBIGGER: INC SIINC SIINC DXLOOP COMPMOV DI,[BP+6]
MOV [DI],AX
MOV DI,[BP+8]
MOV [DI],BXPOP BPRET_FOUND ENDP_TEXT ENDSEND为了看得更清楚,我们把代码去掉,留下基本框架:
PUBLIC _FOUND
_TEXT SEGMENT BYTE PUBLIC 'CODE'ASSUME CS: _TEXT
_FOUND PROC NEARPUSH BPMOV BP,SP ......... ;从这里开始加入汇编代码
POP BPRET_FOUND ENDP_TEXT ENDSEND这是在samll(小模式)下的汇编语言接口框架,在加入代码处,写上你所要完成一定功能的汇编代码,就成为一个可供TC调用的汇编模块。
可以看出,代码段是以带下划线的标识符开头的。
代码段的标识为_TEXT,由C程序中调用的函数found在这里也是以下划线标出:_FOUND。
下面是代码段的组成:
_TEXT SEGMENT BYTE PUBLIC 'CODE'
_TEXT ENDS下面是函数的组成:
_FOUND PROC NEAR
_FOUND ENDP
在small(小模式下,只要按照以上的格式书写汇编代码,就一定能成功地被C程序调用。
这个格式是TC编译程序所定好了的,如果不按照这个格式书写汇编代码,调用就不会成功。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询