发布时间:2015-08-18作者:智汇张瑜
随着计算机技术的发展,程序运行速度已不再是重要问题了,很多情况下数控系统软件可以使用高级语言编写。由于低级语言对于控制硬件的功能强,使用低级语言编制控制程序简单方便。所以在系统程序设计中在复杂计算和界面设计中使用高级语言(如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程序中调用多个汇编语言程序,可以方便地实现对硬件进行各种控制。同时程序运行的速度可以大大加快,程序长度也可相应的缩短。
Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有
电话:010-62314658 邮箱:service@ilinki.net
主办单位:智汇万联(北京)信息技术有限公司