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

供稿:hz-xin.com     日期:2025-01-13
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的子程序?
不太好办,先用C51编写出程序主体,在程序中加入#pragma src(*.a51)控制命令,或在工程项目窗口中设置“Generate Assembleer SRC File”和“Assemble SRC File”选项,编译模块文件,得到相应的a51文件,按要求改写汇编代码

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

你好:关于51点单片机中汇编语言如何调用C的子程序?
把c的 程序 写成汇编的用lcall调用

怎样在单片机C代码中加入汇编延时子程序?
1:在文件栏选中File Group和C51程序原文件,在配置文件选项中激活“产生汇编(SRC)文件,“编译(SRC)文件”和“创建工程(目标)时包含”三个选项。2:根据选择的编译模式,把相应的库文件(如SMALL模式,库文件为KEIL\\C51\\LIB\\C51S.LIB)加入工程中。3:在C51语言中必须声明需要调用的函数为外部...

在单片机汇编语言中c是什么意思
上面两种请况C的置1是系统自动的。另外还可以自己对C进行操作 指令如下:MOV C,bit 将bit位地址中的值送PSW中的进位标志位CY MOV bit,C 将PSW中的进位标志位CY的值送bit位地址中 CLR C 将进位标志位CY清0 SETB C 将进位标志位CY置1 ANL C,bit 将Cy和bit位地址中的值进行与操作后,结果...

C51单片机汇编语言
你用的是跳转指令进入程序段,而不是子程序调用,所以不能用RET返回,只能同样跳回去 用LCALL或者ACALL命令调用子程序时会把当前的程序地址压入堆栈当前点,在遇到RET指令时就会把保存的断点地址弹回PC寄存器,继续调用之前的执行,但是JMP系列指令不会保存断点地址,所以RET时就会把堆栈当前点数据装入PC,...

8051单片机c语言编程 如何嵌入汇编语言呢?
方法是这样的 pragma ASM ; Assembler Code Here pragma ENDASM 不过你还得在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;嵌入汇编好嵌入不过我现在一直都闹不懂的...

...与汇编语言结合起来?我想在C语言里调用汇编语言函数。
是这个asm的名字,CODE是存储区 然后向外申明函数 PUBLIC _plus 最后是函数体 RSEG ?PR?_plus?TOOL _plus:USING 0 。。。ret 参数传递,R7是第一个参数,R6是第二个。。。,如果不是char ,或参数是指针,那么占用多个Rn,例如:这个函数中,d_dat是R7,R6;s_dat是R5,R4;len是R3 ...

单片机中c语言中如何加入汇编
1、在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码:2、在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;3、根据选择的编译模式,把相应的库文件(如 Small 模式...

求51单片机汇编语言取随机数子程序
其实不必要写成子程序,看你需要多少位的随机数,要是8位的,就在主循环程序中放一条 INC NUMBER 指令,NUMBER是定义的某个内部RAM单元,如:NUMBER EQU 30H,需要随机数时,从NUMBER中读取就行了,随机读取的,这个数也是随机的了。要是需要16位的,就用两个内部RAM单元来随机计数,一个做...