C语言调用汇编

本文介绍了一个使用C语言和汇编语言混合编程的例子。通过一个具体案例,展示了如何在C语言中调用汇编代码来实现寻找整型数组中最大值及其位置的功能。首先编写了C语言主程序TCMAIN.C,然后编写了汇编语言模块TCFOUND.ASM,最后通过链接生成可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(示例代码为网上下载,并经修改和注释)

先编写TCMAIN.C如下:

/*程序功能:建立一个整型数组并输入数组的各元素值,调用汇编代码以取得元
素最大值和该最大值在数组中的位置*/
#include<stdio.h>
void main()
{
extern found(int i,int*j,int *k,int *s);
int i,j,k,s[10];
printf("Enter Values of Array:/n");
for(i=0;i<10;i++)
scanf("%d",&s[i]);
i=10;
found(i,&j,&k,s);
printf("/nThe Max_Value is:%d/n",j);
printf("The Place is:%d/n",k);
}

再编写TCFOUND.ASM如下:

PUBLIC _FOUND
_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS: _TEXT
_FOUND PROC NEAR
PUSH BP
MOV BP,SP
MOV CX,[BP+4]  ;取得i的值:10
DEC CX
MOV SI,[BP+10]  ;取得s数组起始地址
LODSW   ;从SI地址载入字到AX
MOV DX,1
MOV BX,0
COMP: CMP AX,[SI]
JA BIGGER
MOV AX,[SI]  ;找到更大
MOV BX,DX
BIGGER: INC SI
INC SI
INC DX
LOOP COMP
MOV DI,[BP+6]  ;取得j地址
MOV [DI],AX
MOV DI,[BP+8]  ;取得k地址
MOV [DI],BX
POP BP
RET
_FOUND ENDP
_TEXT ENDS
END


用masm编译TCFOUND.ASM得TCFOUND.OBJ,把TCMAIN.C和TCFOUND.OBJ都放到TC所在目录下,并在此目录下建立MYTC.PRJ文件内容如下:

TCMAIN.C
TCFOUND.OBJ

用TC打开MYTC.PRJ,按Alt+O-->Linker-->Case-sensitive link回车使On-->Off,回到Options菜单选Save options,按Alt+P输入Project name为:MYTC.PRJ,按Alt+C-->Build all。

在命令符界面运行MYTC.EXE,如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值