| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 嵌入式 -> ARM下C语言和汇编语言混合编程 -> 正文阅读 |
|
|
[嵌入式]ARM下C语言和汇编语言混合编程 |
|
关于函数的传递参数以及接受返回值的原理,在另一篇博客: X86与ARM平台下的参数传递机制_diyu-CSDN博客 实验环境:keil5 以及 创建工程时选择的设备为ARMCM3 一. 在C语言中调用汇编语言1. 编写代码要求:用汇编语言编写函数 ,功能为 传入一个整型数x,函数运行后返回整型数 x+100。并用C语言调用此函数。 keil下编写两个文件 func.s 以及 main.c //func.s
//main.c
2. 调试验证
查看变量x的值,x=20,换成十六进制为 14,正确。
查看寄存器r0的值,20+100=120,换成十六进制为 78,正确。 关于为什么会使用寄存器r0传递参数以及接受返回值,在另一篇博客: X86与ARM平台下的参数传递机制_diyu-CSDN博客
二. 在汇编语言中调用C语言1. 编写代码编写两个文件 init.c 以及 asm_main.s //init.c
//asm_main.s
2. 调试验证调试设置与方法与前面一样,进行单步调试。
使用r0进行传参,查看r0的值。20换成十六进制为14,正确。
继续单步调试,查看调用外部函数init后,r0接受的返回值。120的十六进制为78,正确。
总结:
参考资料: |
|
|
| 嵌入式 最新文章 |
| 基于高精度单片机开发红外测温仪方案 |
| 89C51单片机与DAC0832 |
| 基于51单片机宠物自动投料喂食器控制系统仿 |
| 《痞子衡嵌入式半月刊》 第 68 期 |
| 多思计组实验实验七 简单模型机实验 |
| CSC7720 |
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
| STM32初探 |
| STM32 总结 |
| 【STM32】CubeMX例程四---定时器中断(附工 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 22:10:35- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |