网址:http://blog.csdn.net/lwj103862095/article/details/8073571

  

memsetup:
    @ 设置存储控制器以便使用SDRAM等外设

mov r1,     #MEM_CTL_BASE   @ 存储控制器的13个寄存器的开始地址
    adrl    r2, mem_cfg_val              @ 这13个值的起始存储地址
    add r3,     r1, #52                       @ 13*4 = 54
1:  
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    cmp r1,     r3                 @ 判断是否设置完所有13个寄存器
    bne 1b                          @ 若没有写成,继续
    mov pc,     lr                 @ 返回

bne 1b什么意思呢?一开始老是在找1b的标号处,找了些许时间也没有发现哪里有这个标号。

后来查找相关资料发现,原来0~9的数字为局部标签。局部标签可以重复使用,语法为:

xf:往前跳的意思,就是还未执行的程序,x代表0~9的某个标签,f代表forward的意思。

xb:往后跳的意思,回到原来已经执行过的语句,x达标0~9的某个标签,b代表backward的意思。

上面bne 1b 的意思是,如果r1!=r3 即r1的地址的不等于r3的地址,也就是还没设置完

这13个寄存器,就要重新跳到
1:  
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    ......

处执行;直到r1=r3,即设置好这13个寄存器。才会结束这个局部循环。

——————————————————————————————————————

eg:

1: ;A
cmp r0, #0
beq 1f ;    @  r0==0那么向前跳转到B处执行
bne 1b ;   @ 否则向后跳转到A处执行
1: ;B

——————————————————————————————————————

有趣的是:

1:b 1b   @无限循环的意思,与while(1)等效

转载于:https://www.cnblogs.com/qiuheng/p/5741256.html

(转)汇编bne的问题相关推荐

  1. 汇编 bne 1b和bne 1f浅析

    以前看过的汇编代码只有b,bl和bne label等,从未见过bne 1b,今天在看韦东山老师的<Linux完全开发手册>第六章有如下代码: 1: ldr r4,[r2],#4 str r ...

  2. 汇编bne的问题 汇编中的标号1: 以及bne 1b解释

    下面一段程序摘自<嵌入式Linux应用开发完全手册>page-95 memsetup:     @ 设置存储控制器以便使用SDRAM等外设 mov r1,     #MEM_CTL_BAS ...

  3. ARM汇编 beq和bne

    1. 前阵子看cpu从sleep模式唤醒时,对tst bne和tst beq有些模糊.先记录: 摘抄如下: TST     R0, #0X8 BNE    SuspendUp :BNE指令是" ...

  4. bne 1b 汇编含义

    bne 1b 汇编含义 汇编指令中 bne label 这条指令有以下两种特别的写法:bne 1b, bne 1f. bne 1b 指的是 backward,倒退寻找标号为 1 的地方并跳转. 同样也 ...

  5. ARM汇编 beq和bne %BXX前XXb, %FXX后XXf

    %BXX前XXb, %FXX后XXf 1. 前阵子看cpu从sleep模式唤醒时,对tst bne和tst beq有些模糊.先记录: 摘抄如下: TST     R0, #0X8 BNE    Sus ...

  6. arm汇编语言中bne 1b的意思

    bne - branch if nemachines: base syntax: bne $soffset8 format: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...

  7. 经常使用ARM汇编指令

    一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...

  8. 嵌入式 ARM 汇编编程例题(二维数组按规律求和,求两数 gcd / lcm,求数组 min / max,字符串复制,排序)

    文章目录 0x00. 整数加减乘除 0x01. 一维数组按某种规律求和 0x01.1 求 1~100 之和 0x01.2. 求一维数组的和 0x01.2. 求一维数组的所有奇数的和 0x02. 二维数 ...

  9. Linux内核源码分析--内核启动之(2)Image内核启动(汇编部分)(Linux-3.0 ARMv7) 【转】...

    转自:http://blog.chinaunix.net/uid-25909619-id-4938389.html 在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin ...

最新文章

  1. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
  2. java常用容器(集合)的总结
  3. 字段对应数组_字段不同的多个工作薄汇总? 还要固定字段位置 !难不倒我!...
  4. cannot open layout editor - how to fix error message
  5. 知乎: 如何评价阿里开源的企业级 Node.js 框架 egg? #18
  6. [算法导论]哈希表 @ Python
  7. c语言计算机二级知识点总结,计算机二级考试C语言知识点总结
  8. 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程(转载)
  9. 从ToC到ToB,疫情给我们的影响是什么?
  10. cass坡度土方计算案例_CASS土方量计算总结
  11. android文件浏览器,安卓最强大的文件浏览器:ES文件浏览器
  12. 怎么给视频打马赛克?视频剪辑时快速添加马赛克的方法
  13. SpringBoot 与 Kotlin 完美交融
  14. 弱网条件下基于阻抗小扰动稳定性分析,小信号模型,阻抗扫描(电容电流反馈有源阻尼),单逆变器SRF-PLL
  15. 设计模式之禅【访问者模式】
  16. 应用容器化之Kubernetes实践
  17. 根据收入计算纳税和税后所得
  18. 嵌入式系统开发的基础知识
  19. 从《雪白血红》说起(1)
  20. k8s滚动更新(六)--技术流ken

热门文章

  1. vtt或srt字幕挂载
  2. 服务器和交换机物理连接_二层、三层及四层交换机的区别 | 小知识
  3. Linux中常用的英文总结
  4. 递归回溯生成和解决数独问题c/c++
  5. 数学建模-数学规划模型
  6. ubuntu--ogv格式转mp4格式
  7. 大淘客的index.php,index.php · zenozhengs/大淘客CMS底部菜单修改版 - Gitee.com
  8. 巴比特 | 元宇宙每日必读:多路径试水却并未摸清元宇宙的轮廓,互联网大厂对元宇宙的布局仍处于“盲人摸象”的阶段?...
  9. 自写自用的移动小程序故障管理扫码报修系统
  10. PyCenterNetDetector is not in the models registry