C51和汇编的混合编程

本文探讨了C51与汇编语言混合编程的实践方法,重点讲解了如何在C51中调用汇编程序,解决寻址、参数传递及返回值问题。通过实例展示了具体的编程细节。

C51和汇编的混合编程

调用汇编程序(注意添加汇编程序的头文件)
需解决以下几个问题

程序的寻址问题

在这里插入图片描述

例:C51中

char max(char a, char b);	//声明max()函数, 由汇编语言实现
main(){
	char a = 30, b = 40, c;
 	c = max(a, b);
}

汇编语言:(开头固定格式)
PUBLIC: _MAX
DE SEGMENT CODE
RSEG DE
_MAX: …

参数传递问题

在这里插入图片描述
汇编语言:
_MAX: MOV A, R7 ;取第一个参数到A中
            MOV 30H, R5 ;取第二个参数到30H单元中
           CJNE 30H, A, TAG ;比较30H中的数与A中的数的大小
  TAG: JC EXIT
           MOV R7,R5
 EXIT: RET
            END

返回值传递问题

在这里插入图片描述

C51嵌入汇编代码

#pragma 语句实现

如:

void main(){
#pragma

//汇编代码

#pragma
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值