| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:43:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |