/*
*LED闪烁
*led.s
*/
#define GPJ0CON 0xE0200240
#define GPJ0DAT 0xE0200244
.global _start //把 _start 链接属性改为外部
_start:
//第一步 :把0x1111 1111写入 0xe0200240(gpj0con)
ldr r0, =0x11111111 //这里ldr 为伪指令
ldr r1, =GPJ0CON
str r0, [r1] //寄存器间接寻址 将r0的值给ri所指地址的内存中 flash:
//第二部:把 0x0写入0xe0200244(GPJ0DAT) 点亮
//ldr r0, =0x28// 第一种 缺陷是需要人为计算设定值 可阅读型差 ldr r0, =(<<) |(<<)| (<<)// 等效于 0b0010_1000 即 0x28
ldr r1, =GPJ0DAT
str r0, [r1] //点亮
//第三步: 延迟
bl delay //使用bl进行调用可以将当前执行地址存入lr //第四部:灭
//ldr r0, =0x28// 第一种 缺陷是需要人为计算设定值 可阅读型差 ldr r0, =(<<) |(<<)| (<<)
ldr r1, =GPJ0DAT
str r0, [r1] //熄灭
bl delay
b flash b . //写一个死循环 防止CPU跑飞 delay:
ldr r2, =
ldr r3, =
delay_loop:
sub r2, r2, # //r2=r2-
cmp r2, r3 //cmp 比较r2 r3 如果相等 Z 为1
bne delay_loop //bne 为当Z为1时执行跳转 bne 为 b+后缀
mov pc, lr //函数调用返回 mov 为 寄存器间寻址

反汇编

led.elf:     file format elf32-littlearm

Disassembly of section .text:

 <_start>:
: e59f0044 ldr r0, [pc, #] ; 4c <delay_loop+0x10>
: e59f1044 ldr r1, [pc, #] ; 50 <delay_loop+0x14>
: e5810000 str r0, [r1] 0000000c <flash>:
c: e3a00000 mov r0, #
: e59f103c ldr r1, [pc, #] ; 54 <delay_loop+0x18>
: e5810000 str r0, [r1]
: eb000005 bl <delay>
1c: e3a00038 mov r0, # ; 0x38
: e59f102c ldr r1, [pc, #] ; 54 <delay_loop+0x18>
: e5810000 str r0, [r1]
: eb000001 bl <delay>
2c: eafffff6 b c <flash>
: eafffffe b <flash+0x24> <delay>:
: e59f201c ldr r2, [pc, #] ; 58 <delay_loop+0x1c>
: e3a03000 mov r3, # 0000003c <delay_loop>:
3c: e2422001 sub r2, r2, #
: e1520003 cmp r2, r3
: 1afffffc bne 3c <delay_loop>
: e1a0f00e mov pc, lr
4c: tstne r1, r1, lsl r1
: e0200240 eor r0, r0, r0, asr #
: e0200244 eor r0, r0, r4, asr #
: 000f4240 andeq r4, pc, r0, asr # Disassembly of section .ARM.attributes: <.ARM.attributes>:
: 00001a41 andeq r1, r0, r1, asr #
: cmnvs r5, r0, lsl #
: tsteq r0, r2, ror #
c: andeq r0, r0, r0, lsl r0
: ldrbmi r3, [r4, #-] ; 0x505
: stmdaeq r4, {r9, sl}
: Address 0x00000018 is out of bounds.

ARM汇编程序闪烁灯与其反汇编代码比较的更多相关文章

  1. ARM汇编程序结构

    ARM汇编程序结构 一个ARM程序可以被划分为多个代码段和数据段,在汇编的时候这些段会被形成一个可执行文件 .text ;正文段,包含程序的指令代码 .data ;数据段,包含固定的数据,如常量,字符 ...

  2. arduino--1s间隔闪烁灯

    初始使用Arduino,写了这么个小功能:1s间隔闪烁灯 void setup() { pinMode(,OUTPUT);//Set 13Pin as OUTPUT } void loop() { d ...

  3. ARM汇编程序基本知识

    ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...

  4. 51单片机和Arduino—闪烁灯实现

        技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程   概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做 ...

  5. ARM汇编程序中的伪指令

    转自http://blog.chinaunix.net/uid-13701930-id-336459.html 4.1 ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助 ...

  6. ARM Cortex-M底层技术(2)—启动代码详解

    杂谈 工作了一天,脑袋比较乱.一直想把底层的知识写成一个系列,希望可以坚持下去.为什么要写底层的东西呢?首先,工作用到了这部分内容,最近和内部Flash打交道比较多,自然而然会接触到一些底层的东西:第 ...

  7. linux下的arm汇编程序

    1.gnu 的编译环境搭建 解压编译工具,加入环境变量PATH 2.编译相关命令的使用 编译命令 arm-linux-gcc  -g -c -o led.o main.o led.c main.c / ...

  8. C++反汇编代码分析–函数调用

    转载:http://shitouer.cn/2010/06/method-called/ 代码如下:#include “stdlib.h” int sum(int a,int b,int m,int ...

  9. C++反汇编代码分析--函数调用

    推荐阅读: C++反汇编代码分析–函数调用 C++反汇编代码分析–循环结构 C++反汇编代码分析–偷调函数 走进内存,走进汇编指令来看C/C++指针 代码如下: #include "stdl ...

随机推荐

  1. 图的遍历——DFS(邻接矩阵)

    递归 + 标记 一个连通图只要DFS一次,即可打印所有的点. #include <iostream> #include <cstdio> #include <cstdli ...

  2. tweenjs缓动算法使用小实例

    这里的tweenjs不是依托于createjs的tewwnjs,而是一系列缓动算法集合.因为本身是算法,可以用在各个业务场景中,这也正是总结学习它的价值所在.tweenjs代码详情: /* * Twe ...

  3. ubuntu 安装xdebug

    Add XDebug to Ubuntu 14.04 Submitted by Wilbur on Tue, 06/17/2014 - 12:49pm It's pretty easy to add ...

  4. 使用source创建一个新项目(将本地项目文件和github远程库链接)

    1. 本地创建项目文件夹 2. 将本地的项目添加到source中(我使用的source版本为2.4.7.0) 3. github创建远程库  4. 关联本地项目文件和github库 确定添加就可以了. ...

  5. G# GUID

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...

  6. 新建maven工程问题001

    这周一直在研究SpringMVC+Mybatis,有些心得,记录一下. Ⅰ:建maven遇到的问题. 1.1 新建maven时选中[Create a simple project]这样,后面[Pack ...

  7. hadoop 使用Avro求最大值

    在上例中:hadoop MapReduce辅助排序解析,为了求每年的最大数据使用了mapreduce辅助排序的方法. 本例中介绍利用Avro这个序列化框架的mapreduce功能来实现求取最大值.Av ...

  8. 【题解】51nod 1686第K大区间

    成功的秘诀,在于克服自己看题解的冲动……[笑哭].自己A掉这题还是灰常开心的~ 以及爱死 two - pointer ! two - pointer 大法是真的好哇……这个题目有上一题的经验:求第\( ...

  9. 【刷题】HDU 4405 Aeroplane chess

    Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled fr ...

  10. 【BZOJ4066】简单题(KD-Tree)

    [BZOJ4066]简单题(KD-Tree) 题面 BZOJ 题解 如果这题不卡空间,并且不强制在线的话 显然可以用\(CDQ\)分治做 但是它又卡空间又强制在线,于是我们欢快的来用\(KD-Tree ...