[国嵌笔记][024][ARM汇编编程概述]

发布者:HeavenlyWhisper最新更新时间:2025-02-25 来源: cnblogs关键字:ARM  汇编编程 手机看文章 扫描二维码
随时随地手机看文章

汇编程序用途

1.在bootloader与内核初始化时,还没有建立C语言运行环境,需要用到汇编程序

2.在对访问效率要求很高的情况下,需要用到汇编程序

 

ARM汇编分类

1.ARM标准汇编:适合于Windows在平台下使用

2.GUN汇编:适合于Linux在平台下使用

 

汇编程序框架

完整版:

1
2
3
4
5
6
7
8
.section .data   数据段
    <初始化数据>
.section bss   bss段
    <未初始化数据>
.section .text   代码段
.global _start   通过global申明给全局标号,方便被外部引用
_start:   程序入口
    <汇编代码>

简化版:

1
2
3
4
.text
.global _start
_start:
    <汇编代码>

 

建立汇编环境

1.创建汇编文件

   vim start.S

2.编写代码

1
2
3
4
5
6
.text
.global _start
_start:
        mov r1,#1
        mov r2,#2
        mov r3,#3

3.编写Makefile

  vim Makefile

1
2
3
4
5
6
all:start.o
        arm-linux-ld -Ttext 0x30000000 $^ -o start.elf   “-Ttext”表示不指定链接器脚本时,直接指定链接地址。”0x30000000”表示2440内存的起始地址。引用要生成elf文件直接下载到内存中调试
%.o:%.S
        arm-linux-gcc -g -c $^ -o $@
clean:
        rm *.o *.elf

4.连接开发板

  JLinkGDBServer   启动后的窗口不要关掉

5.启动eclipse

  1.创建工程

    file->new->Makefile Project...

  2.编译工程 

    project->build all

  3.配置调试

    1.debug->debug configurations...

    2.添加调试文件   添加elf文件

    3.添加调试工具   arm-linux-gdb,同时去掉stop on main选项

    4.添加初始化脚本   调试器处理器进行初始化


关键字:ARM  汇编编程 引用地址:[国嵌笔记][024][ARM汇编编程概述]

上一篇:[国嵌笔记][025][ARM指令分类学习]
下一篇:[国嵌笔记][023][ARM寻址方式]

推荐阅读最新更新时间:2026-03-19 12:06

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裸机程序][6]ARM GNU汇编程序示例
ARM GNU汇编程序框架 .section .data 初始化的数据 .section .bss 未初始化的数据 .section .text .global _start _start: 汇编代码 入口地址 汇编程序的示例 //start.s .bass .text .global _start _start: mov r1,#1 mov r2,#2 add r3,r1,r2 _loop: b _loop //Makefile all:start.o arm-linux-ld -Ttext 0x30000000 -o start.elf start.o start.o:star
[单片机]
ARM汇编与C混合编程
内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编程序中使用饱和算术运算(Saturating ArithmeTIc) 程序需要对协处理器进行操作 在C程序中完成对程序状态寄存器的操作 __asm__ __volaTIle__( asm code :output:input:changed registers); Note: 使用__asm__和__volaTIle__表示编译器将不检查后面的内容,而是直接交给汇编器。 如果希望变压器你优化,__volaTIle__可以不加 没有asm code也不能省略 没有前面的和中间的部分,不可
[单片机]
ARM汇编编程基础之一 —— 寄存器
ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通用寄存器和程序计数器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(S
[单片机]
ARM汇编程序结构
一个ARM程序可以被划分为多个代码段和数据段,在汇编的时候这些段会被形成一个可执行文件 .text ;正文段,包含程序的指令代码 .data ;数据段,包含固定的数据,如常量,字符串 .bss ;未初始化数据段,包含未初始化的变量,数组等 .sdata .sbss .section .data ;initialized data .section .bss ;uninitialized data .section .text .global _start _start: ;instruction code 子程序调用 ARM汇编中,子程序的调用一般通过BL指令实现,在程序中,执行BL 子程序名即可完成子程序的
[单片机]
arm程序的反汇编程
这是汇编源文件: MCU:S3C2440(arm920T) 代码实现点亮个led小灯 .text .global _start _start: ldr r0,=0x56000010 @GPBCON mov r1,#0x00000400 @ str r1, @GPB5_out=01 ldr r0,=0x56000014 @GPBDAT mov r1,#0x0 str r1, @GPBDAT =0,len_off main_loop: b main_loop 反汇编文件: led_on.bin: file
[单片机]
arm汇编程序S3C2440
单片机源程序如下: pWTCON EQU 0x53000000 ;看门狗定时器口地址 pLOCKTIME EQU 0x4c000000 ;锁定时间计数值寄存器地址 pCLKDIVN EQU 0x4c000014 ;时钟控制寄存器地址 pUPLLCON EQU 0x4c000008 ; pMPLLCON EQU 0x4c000004 pBWSCON EQU 0x48000000 ;设置数据总线宽度与等
[单片机]
Keil下ARM汇编程序建立与调试简介
1. 新建工程 选择目标处理器 比如:SAMSUNG /S3C2410 2. 新建文件 保存SAVE 3. 把文件添加入工程 或者双击组文件夹,选择你保存的文件 4. 设置工程属性 5. 编辑代码 6. build 7. debug 8. 调试方法简介 窗口1汇编代码编辑窗口 窗口2单步调试工作栏,也可以按快捷键F11或F10 窗口3 是程序执行时的寄存器窗口,Supervisor 高黑,说明当前CPU处于Supervisor工作模式,(CPU的工作模式介绍参考博文:arm处理器工作模式)Current代表当前模式下各个寄
[单片机]
Keil下<font color='red'>ARM</font><font color='red'>汇编程</font>序建立与调试简介
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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