C语言程序调用汇编语言子程序:在C语言中调用汇编子程序,由于可能会涉及参数和返回值传递的问题,可参见前面章节“编译器后端”中介绍的函数调用中的参数传递规律。关于c语言程序调用汇编子程序的瘴用范例如下。
1)在汇编语言源文件中
XREF CData ;外部声明的变量
XDEF AddVar ;可以在外部模块使用的变量或子程序
XDEF ASMData ;可以在外部使用的变量
DataSec:SECTION
ASMData:DS.B l ;定义一个变量
CodeSec:SECTION
AddVar:
ADD CData ;将位于寄存器A中的参数值与C中定义的常量CData相加
STA ASMData ;运算结果位于A和ASMData中
RTS
2)为上述汇编程序建立头文件mixasm.h,建议为每个汇编程序建立一个头文件
#ifndef_MIXASM_H_ //防止头文件多次包含
#define_MIXASM_H_
void AddVar(unsigned char value);
/*将参数value与全局常量CData相加,并将结果存储在ASMData中*/
extxm char ASMData; /*外部定义的变量*/
#endif
3)调用汇编子程序的C语言程序
static int Error---0;
const unsigned char CData=1 2;
#include"mixasm.h¨
void main(void){ .
AddVar(10);//调用汇编子程序
if(ASMData!=CData+lO){//这里ASMData有全局变量进行参数传递的作用
Error=1;
}else{
Error=0;
}
for(;;); //wait forever
}
阅读更多请您关注: