C51编程:C中嵌入汇编的高手请看看请求帮助:如何在汇编子函数中使用全局指针变量
说明:以下两个函数使用 C 程序编译连接,顺利通过。但是,把子函数转化成汇编,出现
错误。
我使用“Keil C51 V6.23”编译器.
E-mail:inspra@xjgroup.com 开发部:黄生
/*******************************************/
/*模块名:主调函数*/
/*功能描述:调用子函数,赋值全局指针变量*/
/*其它说明:C 程序中调用汇编子函数*/
unsigned char xdata temp;
unsigned char xdata *p;
void func(void);
void main(void)
{
unsigned char xdata i;
while(1)
{
p = &temp;
*p = 98;
func();
i = *p;
}
}
/*************************************************/
/*模块名:应用全局指针变量的子函数*/
/*功能描述:对全局指针变量 p 赋值*/
/*其它说明:此函数先编译成 MYPTR.A51 汇编语言,然后用生成的汇编与 main 函数联合
编译*/
#pragma src(MYPTR.A51) small
extern unsigned char xdata *p;
void func(void)
{
*p = 0xdd;
}
/*************************************************/
/*由编译器自动生成的汇编程序*/
NAME TESTARRAY
?PR?func?TESTARRAY SEGMENT CODE
EXTRN DATA (p)
PUBLIC func
RSEG ?PR?func?TESTARRAY
func:
MOV DPL,p+01H
MOV DPH,p
MOV A,#0DDH
MOVX @DPTR,A
RET
END