51单片机中汇编语言如何调用C的子程序?

作者&投稿:老底 (若有异议请与网页底部的电邮联系)
51单片机中汇编语言如何调用C的子程序?~

我的程序是KEIL编译的,如下
先申明
EXTRN
CODE
(_Send_CRC)
;Send_CRC是C中的函数,汇编中加了_
调用的时候
LCALL
_Send_CRC
如果要使用C中的变量,那么CODE变成相应的DATA,XDATA等

不太好办,先用C51编写出程序主体,在程序中加入#pragma src(*.a51)控制命令,或在工程项目窗口中设置“Generate Assembleer SRC File”和“Assemble SRC File”选项,编译模块文件,得到相应的a51文件,按要求改写汇编代码

我的程序是KEIL编译的,如下
先申明
EXTRN CODE (_Send_CRC) ;Send_CRC是C中的函数,汇编中加了_
调用的时候
LCALL _Send_CRC

如果要使用C中的变量,那么CODE变成相应的DATA,XDATA等

我的程序KEIL编译器,

EXTRN CODE(_Send_CRC)的第一个国家Send_CRC C函数编译加上调用_

LCALL _Send_CRC

如果您要成相应的数据,然后使用变量在C,XDATA代码

我的程序KEIL编译器,

EXTRN CODE(_Send_CRC)的第一个国家Send_CRC C函数编译加上调用_

LCALL _Send_CRC

如果您要成相应的数据,然后使用变量在C,XDATA代码

查查C的编译器和汇编编译器的资料,上面有详细的说明。
一般在汇编中用EXTERN声明外部函数,将C语言中的函数名前面加上下划线就是汇编的函数名,有些编译器是这样的,并不是所有的编译器都是这样的。还是要查编译器的使用说明才能知道你用的编译器是怎么操作的。
如果是keil,应该是上面的操作。

用逆向思维考虑就是在c语言下插入汇编

51单片机中汇编语言如何调用C的子程序?
答:先申明 EXTRN CODE (_Send_CRC) ;Send_CRC是C中的函数,汇编中加了_调用的时候 LCALL _Send_CRC 如果要使用C中的变量,那么CODE变成相应的DATA,XDATA等

51单片机,怎么样使得C语言与汇编语言结合起来?我想在C语言里调用汇编语 ...
答:首先写个H文件,把汇编的函数申明在里面 例如:extern bit plus(iu8 *d_dat,iu8 *s_dat,u8 len);然后,建立ASM文件,例如tool.asm 先指定存储区 ?PR?_plus?TOOL SEGMENT CODE ?PR?固定的,然后是函数名前+下划线,?TOOL 是这个asm的名字,CODE是存储区 然后向外申明函数 PUBLIC _plus ...

关于51点单片机中汇编语言如何调用C的子程序?
答:不太好办,先用C51编写出程序主体,在程序中加入#pragma src(*.a51)控制命令,或在工程项目窗口中设置“Generate Assembleer SRC File”和“Assemble SRC File”选项,编译模块文件,得到相应的a51文件,按要求改写汇编代码

51单片机汇编语言?
答:;按下1号按键,显示数码1;;按下2号按键,显示数码2;;按下3号按键,显示数码3。电路与程序,如下所示:

在C51语言中如何嵌入汇编语言
答:keil C 语言中嵌入汇编语言进行混合编程,方法如下:1、在C 文件中要嵌入汇编代码片以如下方式加入汇编代码 pragma ASM ; Assembler Code Here pragma ENDASM 2、在Project 窗口中包含汇编代码的C 文件上右键,选择“Options for ...”在弹出的对话框中,点击右边的 “Generate Assembler SRC File”和...

51单片机LED操作汇编语言程序解释
答:ACALL SEG7 ;调用SEG7 MOV P1,A ;将A中值送入P1 MOV A,B ;将B中值送入A ACALL SEG7 ;调用SEG7 MOV P2,A ;将A中值送入P2 SJMP $ ;死循环,等待中断 SJMP STAR T1S: MOV TH1,#3CH ;中断程序,重新赋初值T1 50ms MOV TL1,#0B0H DJNZ R4,T1S0 ;...

C51单片机汇编语言
答:我写一个定时器中断的吧 定时器T0中断 ORG 0000H;复位后主程序入口地址 LJMP MAIN;长跳转到主程序 ORG 000BH;T0定时器中断入口地址 LJMP CTC0;长跳转到中断服务程序 ORG 100H;主程序地址 MAIN:MOV TL0,#156;赋T0定时器初值 MOV TL1,#156;重装初值 MOV TMOD,#00000100B;设置T0运作在8位制动...

51单片机中LCALL是什么意思
答:回答:LCALL(长调用指令) 长调用指令可以调用64kb范围内程序存储器中的任何一个子程序。 先把程序计数器pc加3获得下条指令的地址(也就是断点地址),并把它压入堆栈(先低八位后高八位),同时把堆栈指针加2.接着把指令的第二个和第三个字节(A15-A8,A7-A0)分别装入pc的高位和低位中,然后从pc中指出...

51单片机 我想让p3口做输入口, 然后用程序读取p3口的数据,应用汇编语言...
答:先对要读的P3端口置高,再用传送指令。mov p3,#0ff (如P3固定只用作输入这句可不用)mov a,P3

51单片机中DPTR怎么用?
答:在51单片机汇编语言中DPTR只有加1指令即:INC DPTR,减1指令是没有的,所以需要用户自己来编制,以下是具体代码:DPTRDEC:CLR C MOV A,DPL SUBB A,#1 MOV DPL,A MOV A,DPH SUBB A,#0 MOV DPH,A RET 编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算...