36.从汇编到C(bl1到bl2)

发布者:BlossomWhisper最新更新时间:2024-10-29 来源: cnblogs关键字:汇编 手机看文章 扫描二维码
随时随地手机看文章

汇编跳转到C必须使用绝对跳转:

工程代码

在Makefile中加入main.o:

Start.S:

 

Make编译:

Main.c代码:

#define GPKCON (volatile unsigned long*)0x7F008820 //volatile指定不对后面的数进行优化

#define GPKDAT (volatile unsigned long*)0x7F008824

 

int myboot_main()

{

*(GPKCON) = 0x1111; //把值赋给GPKCON寄存器指向的地址

*(GPKDAT) = 0xe;

 

return 0;

}


关键字:汇编 引用地址:36.从汇编到C(bl1到bl2)

上一篇:37.C与汇编混合编程
下一篇:35.BSS段的知识

推荐阅读最新更新时间:2026-03-24 10:49

STM8 FOR IAR 中实现绝对地址跳转
//使用函数指针来实现 typedef void(*PFUN)(void); pFun =(PFUN)0x8000; (*pFun)(); #define GotoHere(a) ((void (*)(void))a)() GotoHere(0X8000); asm( JP $8000 );
[单片机]
S3C2440的中断的那些事儿(一) 汇编的讲解
1. ARM的中断模式有7种: 1. 用户模式: 用于平时的程序运行 2. 快速中断模式: 用于高速数据传输或者通道处理, 此模式的优先级最高 最容易被触发 32个中断只能有一个快速中断触发 3. 中断模式:用于普通的中断模式 4. 管理模式:操作系统使用的保护模式 5. 数据访问终止模式: 当数据或指令与读取终止时候进入此模式 6. 系统模式: 运行具有特权的操作系统任务
[单片机]
S3<font color='red'>C</font>2440的中断的那些事儿(一) <font color='red'>汇编</font>的讲解
单片机编程用C语言还是汇编
单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂。目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求。单片机的编程可以通过汇编语言和C语言来实现。1汇编编程的特点汇编是一种更接近于硬件底层的低级语言。硬件在编程时总线和地址非常重要,在汇编语言中,一般用助记符来替代机器指令的操作码,用标号代表操作数的地址,所以汇编语言和机器指令之间存在着唯一对应的关系,这就导致了不通系列的单片机其汇编指令集是完全不通的。这样做是比较麻烦的,因为更改了单片机或者升级老产品之后,原有的汇编代码难以跨平台移植,只能再重新编写。所以,汇编的移植性非常差,由于是直接
[单片机]
STC51从入门到精通(汇编)----第四讲:80C51单片机的指令系统(二)寻址方式
4.2.1 指令系统中使用的常用符号: Rn: 当前寄存器工作区中的寄存器, 其中, n=0 -- 7; direct: 内部数据存储器地址, 可指定一个内部RAM单元(0-- 127)或一个专用寄存器(128-- 255); @Ri: 通过R1或R0间接寻址, 指定数据存储器RAM中的一个单元(0-- 255); #data: 在指令中指明8位常数; #data16: 在指令中指明16位常数; addr11: 11位目的地址, 用在ACALL或AJMP指令中,表示调用或转移地址, 寻址范围为2KB; addr16: 16位目的地址, 用在LCALL或LJ MP指令中, 表示调用或转换地址,
[单片机]
STC51从入门到精通(<font color='red'>汇编</font>)----第四讲:80<font color='red'>C</font>51单片机的指令系统(二)寻址方式
ARM汇编语言与C/C++的混合编程
ARM公司不生产芯片,而是出售核(如ARM9)给硬件厂商,硬件厂商添加一些外围器件,就成了芯片(如s3c2440)。 ARM汇编语言与C/C++的混合编程 - 在C/C++代码中嵌入汇编指令 在C/C++中使用内嵌的汇编指令语法格式: 使用关键字_ _asm来标识一段汇编指令程序 _ _asm {undefined 汇编语言程序 ~~~~~~~~~~ 汇编语言程序 } 例C1.C #include stdio.h void my_strcpy(const char *src, char *dest) {undefined char ch; _ _asm
[单片机]
ARM汇编语言学习笔记(五)给c语言传递参数和获取返回值
一、目的 如何给c函数传参 如何获取c函数的返回值 二、如何传参 我们通过给寄存器值来传递参数 在代码中体现为: 先给寄存器r0一个值,然后bl调用函数led_on mov r0, #4 bl led_on 这是led_on int led_on(int which) { return 0; } 三、如何获取返回值 同样我们直接看r0的值就可以啦。
[单片机]
ARM<font color='red'>汇编</font>语言学习笔记(五)给<font color='red'>c</font>语言传递参数和获取返回值
LED的使用纯汇编C语言的点亮
概述 我们通过观察原理图可以发现LED灯有四个分别连接在GPM4_1, GPM4_2, GPM4_3 GPM4_4上面,这时候我们去查询我们板子4412的说明书,去寻址寄存器的配置 初始化的时候我们需要将他配置为输出模式,同时我们观察下面的电路可以发现,他需要输出低电平,来使led亮 #define GPM4BASE 0x11000000 #define GPM4CON 0x02E0 #define GPM4DAT 0x02E4 #define UDELAY 0x43e2647c #define N 5000000 .text .align 2 .global _start _start: mo
[单片机]
LED的使用纯<font color='red'>汇编</font>和<font color='red'>C</font>语言的点亮
s3c2440学习之路-001 汇编点亮led
1. 原理分析 2. 主要流程 3. 源码 4. dis文件分析 硬件平台:jz2440 软件平台:Ubuntu16.04 arm-linux-gcc-3.4.5 1.原理分析 点亮LED最简单的方法就是给二极管正负极接上电,中间串一个电阻 图1 点亮LED 由于2440芯片Pin脚的驱动能力不够,所以无法直接用Pin脚来点亮LED,只能把Pin脚连接到LED的负极,充当开关的作用。 当Pin脚为高电平时,LED两端无电压差,LED灭 当Pin脚为低电平时,LED两端有电压差,LED亮 图2 2440连接LED 2.主要流程 2.1原理图介绍 这里只介绍LED1, LED1负极与2440的GPF4相连,中
[单片机]
s3<font color='red'>c</font>2440学习之路-001 <font color='red'>汇编</font>点亮led
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved