C语言中如何调用汇编子程序?给个例子讲解下

C语言中如何调用汇编子程序?给个例子讲解下,第1张

你是指内联汇编吧?比如下面这个例子:

#include <stdio.h>

int func(int a, int b)

{

 return a - b

}

int main()

{

 //计算 12-5

 int a = 12, b = 5  //给定两个数

 int res    //用来记录结果

 __asm{     //内联汇编

  push b    //b压栈

  push a    //a压栈,注意C中函数接受参数的时候入栈是反着的

  call func   //调用函数func, 返回值保存在eax里

  mov res, eax  //将eax里的值赋给res

 }

 printf("%d\n", res) //输出结果,得到7

 return 0

}

高级数控编程:程序调用及编程举例

一次装夹加工多个形状相同或刀具运动轨迹相同的零件,即一个零件有重复加工部分的情况下,为了简化加工程序,把重复轨迹的程序段独立编成一程序进行反复调用, 这重复轨迹的程序称为子程序,而调用子程序的程序称主程序。

子程序的调用

子程序的`调用方法如图1-2所示。需要注意的是,子程序还可以调用另外的子程序。从主程序中被调用出的子程序称一重子程序,共可调用四重子程序,如图1-3所示。

 

在子程序中调用子程序与在主程序中调用子程序方法一致。

格式:M98 P L

说明:P:子程序名

L:重复调用次数,省略重复次数,则认为重复调用次数为1次

例:M98 P123 L3

表示程序号为123的子程序被连续调用3次,如图1-4所示。

子程序中必须用M99指令结束子程序并返回主程序。

应用举例:

加工如图1-5所示轮廓,以知刀具起始位置为(0,0,100),切深为10mm,试编制程序。

图1-6

相关知识点:

●在使用子程序编程时,应注意主、子程序使用不同的编程方式。一般主程序中使用G90指令,而子程序使用G91指令,避免刀具在同一位置加工。

●当子程序中使用M99指令指定顺序号时,子程序结束时并不返回到调用子程序程序段的下一程序段,而是返回到M99指令指定的顺序号的程序段,并执行该程序段。

编程举例:如图1-6所示。

子程序执行完以后,执行主程序顺序号为18的程序段。

C语言 把别的计算机语言中称“函数”或称“子程序”的程序块 统称为 “函数”,没有术语“子程序”。别的计算机语言中称为“子程序”的程序块,C语言叫 void 型 函数。

C语言 函数定义 出现在 main() 函数 以后的,则要在 main() 函数 以前 加写 函数原型声明。

例如:计算10个数的平均值,最大值,最小值子程序:

#include<stdio.h>

#include<stdlib.h>

void f(int n, int *a, int *a_max, int *a_min, float *a_mean);// 函数原型声明

void main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10}

int a_max,a_min

float av

f(10,a,&a_max,&a_min,&av) // 函数调用

printf("max=%d min=%d mean=%f\n",a_max,a_min,av)

}

//函数定义

void f(int n, int *a, int *a_max, int *a_min, float *a_mean){

int i,b,s

float m=0.0

b = a[0]s=a[0]

for (i=0i<ni++){

if (a[i] >b) b = a[i]

if (a[i] <s) s = a[i]

m = m + a[i]

}

*a_mean = m / n

*a_max = b

*a_min = s

}

如果把 函数定义 写到 main() 以前,就不要 函数原型声明 那行


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

原文地址: https://outofmemory.cn/yw/11240983.html

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

发表评论

登录后才能评论

评论列表(0条)

保存