📄 1_5_3.c
字号:
//汇编语言调用C程序
func1.c模块文件,C函数名func()
#define uchar unsigned char
uchar funcl(uchar a)
{ //用寄存器传递无符号字符变量a
uchar b=100;
uchar c;
return(c=b/a); //函数返回值
}
//afunc.asm模块文件,有两字节的整形变量参数返回。
PUBLIC_AFUNC //定义共公符号,"_"表示有参数传递
EXTRN CODE(_func1) //外部函数funcl声明,"_"表示有参数传递
? PR? _afunc? AFUNC SEGMENT CODE //定义程序代码段
PUBLIC //定义公共符号,为局部变量的公共符号
LLT SEGMENT DATA 0VERLAYABLE //定义可覆盖局部数据段
RSEG LLT
PPP:
MMP:DS 2 //定义局部变量字节,MMP为局部变量,2两字节
RSEG ? PR? afunc? AFUNC //程序代码段
afunc: //以下为汇编程序
MOV MMP+1,R7 //C程序传递的整形变量参数
MOV MMP,R6
CLR C
MOV A,MMP+1
RLC A
MOV MMP+1,A
MOV A,MMP
RLC A
MOV MMP,A
MOV A,MMP+1
ADDC A,#OOH
MOV MMP+1,A
MOV R7,MMP+1 //无符号字符参数传递
LCALL funcl //C程序的调用
MOV R7,MMP+1 //函数返回值
MOV R6,MMP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -