数控技术中的高级语言调用低级语言处理

来源:互联网

点击:1756

A+ A-

所属频道:新闻中心

关键词:数控 高级语言 插补

      随着计算机技术的发展,程序运行速度已不再是重要问题了,很多情况下数控系统软件可以使用高级语言编写。由于低级语言对于控制硬件的功能强,使用低级语言编制控制程序简单方便。所以在系统程序设计中在复杂计算和界面设计中使用高级语言(如C语言),在控制程序中使用低级语言(如汇编语言)就更方便。

      为了使程序运行直观,本例中动态显示运动轨迹,同时用软件分频的方法发出步进电机控制信号。步进电机控制信号用PC机的并行口发出。本例控制两个三相步进电机,其中x方向电机使用并行口中低4位中的D2、D1、D0位,Y方向电机使用并行口中高4位中的D6、D5、D4位,运行本程序时如果接上步进电机则可实现第一象限直线插补。

    1 编制调用汇编语言的C语言程序

      这里的c语言程序调用汇编语言第一象限的直线插补程序。本例的C语言程序文件名为zx-dasm.c,被调用的汇编语言程序为zxasm.asm。

      用C语言主菜单中的comp丑e命令将zxdasm.cpp文件编译成目标文件。本例用Borlandc 3.1(或Turboc等)版生成。生成目标程序的文件名为zx.dasm.obj。

    2 生成被调用的汇编语言目标文件

      2.1 制作一个被调用的汇编语言框架

      (1)制作一个C语言空函数

      在C语言环境中建立一个空函数,空函数内容为:

      zxcb(){}

      本例的文件名为zxasm.cpp。

      (2)将空函数文件转换成汇编语言文件在windows命令提示符状态下,用命令bcc—SZXaSm 回车,该命令生成一个zxz路m.嬲m汇编语言框架文件。该命令在Borhndc(或Turboc中的tcc命令等)的bin文件夹下。

      2.2 在框架文件中加入汇编语言内容

      打开zxasm.asm汇编语言程序框架文件,在框架中加入汇编语言程序内容。本例的汇编语言为第一象限直线插补程序。

      2.3 参数传送说明

      c语言程序在调用汇编语言程序时以函数的形式调用。本例中在主函数的前面定义了一个名字为zxcb的函数,该函数中有8个参数,8个参数的用途见程序中的注解。

      在汇编语言程序中,框架中保护了bp,并且用pb指向堆栈,在汇编程序中如果使用了8i和di还要保护8i和di。如果汇编语言返回给C语言程序数据时,一般数据用ax。

      当C语言用有参函数调用汇编语言程序时,参数将会自动地压入堆栈,由于在汇编语言中有pushbp、push 8i、push di语句,同时堆栈中还有返回c程序的地址。所以在本例中的8个参数的地址在bp+8以后。第1个参数的地址是bp+8,每个参数占两个字节。

      2.4 将汇编语言程序汇编成目标文件

      在windows命令提示符状态下用命令t鲫:n/mlzxasm.asm回车将zxasm.asm文件汇编成目标文件zxasm.obi。命令中的/ml选项使外部名字小写。该命令在Borlandc(或Turboc等)的bin文件夹下。该步骤也可用宏汇编MASM完成。

    3 连接成可执行文件

      将目标文件zxdasm.obj和zxasm.obi文件连接成可执行文件,就可以在windows命令提示符下运行了。

      用命令tlink C08 zxdasm zxasm,zxsy,,Csgraphic8回车将目标文件连接成可执行文件,该文件可在命令提示符状态下运行。该命令在Borhndc(或Turboc等)中的bin文件夹中。命令中的zxdasm和zxasm是要连接的目标文件C0s使用C0s.obi,它包含启动程序和DOs所规定的头部信息。cs是使用c8.nC的标准小模式库。graphics是使用graphics.1ib图形库。zxsy为连接后的可执行文件名。

    4 结语

      用这种方法可以在C程序中调用多个汇编语言程序,可以方便地实现对硬件进行各种控制。同时程序运行的速度可以大大加快,程序长度也可相应的缩短。

    (审核编辑: 智汇张瑜)