/*
*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. New Year and Old Property :dfs

    题目描述: Limak is a little polar bear. He has recently learnt about the binary system. He noticed that ...

  2. [Install] TeamViewer

    安装TeamViwer 1. $ sudo apt-get -f install 2. 使用gdebi安装TeamViwer. 所以先安装gdebi package. $ sudo apt-get i ...

  3. UESTC 1717 Journey(DFS+LCA)(Sichuan State Programming Contest 2012)

    Description Bob has traveled to byteland, he find the N cities in byteland formed a tree structure, ...

  4. 实用的ES6特性

    1. 函数参数默认值 不使用ES6 为函数的参数设置默认值: function foo(height, color) { var height = height || 50; var color = ...

  5. Bad Cowtractors(最大生成树)

      Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= ...

  6. 团队Beta阶段事后分析

    团队Beta阶段事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决用户的休闲娱乐问题,为用户提供好玩的模拟经营类的游戏,游戏主题 ...

  7. Hadoop之block研究

        本文翻译原链接:https://hadoopabcd.wordpress.com/2015/03/17/hdfs-file-blocks-distribution-in-datanodes/ ...

  8. 软件工程课堂作业(三)——Right-BICEP软件单元测试

    一.测试方法:Right-BICEP Right-结果是否正确?B-是否所有的边界条件都是正确的?I-能查一下反向关联吗?C-能用其他手段交叉检查一下结果吗?E-你是否可以强制错误条件发生?P-是否满 ...

  9. 【week6】约跑App视频链接

    约跑视频链接发布在优酷,链接如下: http://v.youku.com/v_show/id_XMTc3NTcyNTcyNA==.html 秒拍视频连接: http://www.miaopai.com ...

  10. 【Linux】- rm命令

    Linux rm命令用于删除一个文件或者目录. 语法 rm [options] name... 参数: -i 删除前逐一询问确认. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认. -r 将目 ...