數(shù)控技術(shù)中的高級(jí)語(yǔ)言調(diào)用低級(jí)語(yǔ)言處理
點(diǎn)擊:1979
A+ A-
所屬頻道:新聞中心
隨著計(jì)算機(jī)技術(shù)的發(fā)展,程序運(yùn)行速度已不再是重要問(wèn)題了,很多情況下數(shù)控系統(tǒng)軟件可以使用高級(jí)語(yǔ)言編寫(xiě)。由于低級(jí)語(yǔ)言對(duì)于控制硬件的功能強(qiáng),使用低級(jí)語(yǔ)言編制控制程序簡(jiǎn)單方便。所以在系統(tǒng)程序設(shè)計(jì)中在復(fù)雜計(jì)算和界面設(shè)計(jì)中使用高級(jí)語(yǔ)言(如C語(yǔ)言),在控制程序中使用低級(jí)語(yǔ)言(如匯編語(yǔ)言)就更方便。
為了使程序運(yùn)行直觀,本例中動(dòng)態(tài)顯示運(yùn)動(dòng)軌跡,同時(shí)用軟件分頻的方法發(fā)出步進(jìn)電機(jī)控制信號(hào)。步進(jìn)電機(jī)控制信號(hào)用PC機(jī)的并行口發(fā)出。本例控制兩個(gè)三相步進(jìn)電機(jī),其中x方向電機(jī)使用并行口中低4位中的D2、D1、D0位,Y方向電機(jī)使用并行口中高4位中的D6、D5、D4位,運(yùn)行本程序時(shí)如果接上步進(jìn)電機(jī)則可實(shí)現(xiàn)第一象限直線插補(bǔ)。
1 編制調(diào)用匯編語(yǔ)言的C語(yǔ)言程序
這里的c語(yǔ)言程序調(diào)用匯編語(yǔ)言第一象限的直線插補(bǔ)程序。本例的C語(yǔ)言程序文件名為zx-dasm.c,被調(diào)用的匯編語(yǔ)言程序?yàn)閦xasm.asm。
用C語(yǔ)言主菜單中的comp丑e命令將zxdasm.cpp文件編譯成目標(biāo)文件。本例用Borlandc 3.1(或Turboc等)版生成。生成目標(biāo)程序的文件名為zx.dasm.obj。
2 生成被調(diào)用的匯編語(yǔ)言目標(biāo)文件
2.1 制作一個(gè)被調(diào)用的匯編語(yǔ)言框架
(1)制作一個(gè)C語(yǔ)言空函數(shù)
在C語(yǔ)言環(huán)境中建立一個(gè)空函數(shù),空函數(shù)內(nèi)容為:
zxcb(){}
本例的文件名為zxasm.cpp。
(2)將空函數(shù)文件轉(zhuǎn)換成匯編語(yǔ)言文件在windows命令提示符狀態(tài)下,用命令bcc—SZXaSm 回車(chē),該命令生成一個(gè)zxz路m.嬲m匯編語(yǔ)言框架文件。該命令在Borhndc(或Turboc中的tcc命令等)的bin文件夾下。
2.2 在框架文件中加入?yún)R編語(yǔ)言內(nèi)容
打開(kāi)zxasm.asm匯編語(yǔ)言程序框架文件,在框架中加入?yún)R編語(yǔ)言程序內(nèi)容。本例的匯編語(yǔ)言為第一象限直線插補(bǔ)程序。
2.3 參數(shù)傳送說(shuō)明
c語(yǔ)言程序在調(diào)用匯編語(yǔ)言程序時(shí)以函數(shù)的形式調(diào)用。本例中在主函數(shù)的前面定義了一個(gè)名字為zxcb的函數(shù),該函數(shù)中有8個(gè)參數(shù),8個(gè)參數(shù)的用途見(jiàn)程序中的注解。
在匯編語(yǔ)言程序中,框架中保護(hù)了bp,并且用pb指向堆棧,在匯編程序中如果使用了8i和di還要保護(hù)8i和di。如果匯編語(yǔ)言返回給C語(yǔ)言程序數(shù)據(jù)時(shí),一般數(shù)據(jù)用ax。
當(dāng)C語(yǔ)言用有參函數(shù)調(diào)用匯編語(yǔ)言程序時(shí),參數(shù)將會(huì)自動(dòng)地壓入堆棧,由于在匯編語(yǔ)言中有pushbp、push 8i、push di語(yǔ)句,同時(shí)堆棧中還有返回c程序的地址。所以在本例中的8個(gè)參數(shù)的地址在bp+8以后。第1個(gè)參數(shù)的地址是bp+8,每個(gè)參數(shù)占兩個(gè)字節(jié)。
2.4 將匯編語(yǔ)言程序匯編成目標(biāo)文件
在windows命令提示符狀態(tài)下用命令t鯽:n/mlzxasm.asm回車(chē)將zxasm.asm文件匯編成目標(biāo)文件zxasm.obi。命令中的/ml選項(xiàng)使外部名字小寫(xiě)。該命令在Borlandc(或Turboc等)的bin文件夾下。該步驟也可用宏匯編MASM完成。
3 連接成可執(zhí)行文件
將目標(biāo)文件zxdasm.obj和zxasm.obi文件連接成可執(zhí)行文件,就可以在windows命令提示符下運(yùn)行了。
用命令tlink C08 zxdasm zxasm,zxsy,,Csgraphic8回車(chē)將目標(biāo)文件連接成可執(zhí)行文件,該文件可在命令提示符狀態(tài)下運(yùn)行。該命令在Borhndc(或Turboc等)中的bin文件夾中。命令中的zxdasm和zxasm是要連接的目標(biāo)文件C0s使用C0s.obi,它包含啟動(dòng)程序和DOs所規(guī)定的頭部信息。cs是使用c8.nC的標(biāo)準(zhǔn)小模式庫(kù)。graphics是使用graphics.1ib圖形庫(kù)。zxsy為連接后的可執(zhí)行文件名。
4 結(jié)語(yǔ)
用這種方法可以在C程序中調(diào)用多個(gè)匯編語(yǔ)言程序,可以方便地實(shí)現(xiàn)對(duì)硬件進(jìn)行各種控制。同時(shí)程序運(yùn)行的速度可以大大加快,程序長(zhǎng)度也可相應(yīng)的縮短。
(審核編輯: 智匯張瑜)
分享