1、
前阵子看cpu从sleep模式唤醒时,对tst bne和tst beq有些模糊。先记录:
摘抄如下:

TST     R0, #0X8
BNE    SuspendUp ;BNE指令是“不相等(或不为0)跳转指令”:

LDR   R1,#0x00000000

先进行and运算,如果R0的第四位不为1,则结果为零,则设置zero=1(继续下面的LDR指令);

否则,zero=0(跳到SuspendUp处执行)。

还有:

有点模糊,在此记下。

tst r0,#02

bne sleep

ldr  r1,#0

解释:位比较,先进行and运算,如果r0第2位不为1,则与的结果为0,设置标志位zero=1,继续下面的ldr指令。反之,zero=0,跳转到sleep执行。

bne指令: 非零则跳转

个人总结:tst 和bne连用: 先是用tst进行位与运算,然后将位与的结果与0比较,如果不为0,则跳到bne紧跟着的标记(如bne sleep,则跳到sleep处)。

tst 和beq连用: 先是用tst进行位与运算,然后将位与的结果与0比较,如果为0,则跳到beq紧跟着的标记(如bne AAAA,则跳到AAAA处)。

2、

昨天在看arm汇编,其中有这样的一段语句

0

ldr    r3, [r0], #4

str    r3, [r1], #4

cmp r2, r0

bne %B0

bne:不等于则调转

但%B0 ,网上搜了一遍,还是未果。从最后的汇编语言来看,%B 代表,往前搜索 lable为0的行,换句话说,就是指本条语句前,lable为0的地址。整条语句的意思就是,如果不相等则跳转到lable为0的行。

同样,有了bne %B0,也就有了bne %F1,这是向后搜索lable为1的行。参考代码:

; check if EIN0 button is pressed

ldr       r0,=GPFCON

ldr    r1,=0x0

str    r1,[r0]

ldr    r0,=GPFUP

ldr    r1,=0xff

str    r1,[r0]

ldr    r1,=GPFDAT

ldr    r0,[r1]

bic      r0,r0,#(0x1e<<1) ; bit clear

tst    r0,#0x1

bne %F1

(省略一些语句)

;Clear SDRAM End

1

;Initialize stacks

bl      InitStacks

%B, %F可以这样理解: B表示before,向前。F表示after,向后

ARM汇编 beq和bne相关推荐

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

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

  2. 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 ...

  3. 经常使用ARM汇编指令

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

  4. arm汇编解析—qnnpack卷积实现

    目录 前言 基础直通车 arm基础知识 arm指令释义 qnn汇编代码解析 前言 最近在移植QNNPACK神经网络加速库,涉及到对卷积arm汇编的修改,这边做个记录,对汇编部分的内容进行注释,顺便学习 ...

  5. bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...

    本帖最后由 wglzp123456 于 2019-6-15 19:21 编辑 //ARM汇编代码 0894        B570           PUSH      {R4-R6,LR} 089 ...

  6. linux 嵌入式汇编 adc,嵌入式Linux ARM汇编(四)——ARM汇编程序设计

    嵌入式Linux ARM汇编(四)--ARM汇编程序设计 汇编程序有顺序.循环.分支.子程序四种结构形式. 一.顺序结构 程序实例: AREA Buf,DATA,READWRITE;定义数据段Buf ...

  7. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结

    1 前言 最近博主在学习Android逆向的时候,参照吾爱破解论坛的<教我兄弟学Android逆向系列课程>学习的时候,学到第8章<教我兄弟学Android逆向08 IDA爆破签名验 ...

  8. ARM汇编指令以及伪指令

    文章目录 ARM寄存器 ARM指令的一般编码格式 ARM指令的条件域 ARM寻址方式 数据处理指令的操作数寻址方式 立即数寻址方式 寄存器寻址方式 寄存器移位寻址方式 字或无符号字节的Load/Sto ...

  9. linux 汇编 preserve8,ARM汇编伪指令

    分类: LINUX 2009-10-21 16:39:09 ARM 汇编程序的由机器指令,伪指令和宏指令组成.伪指令不像机器指令那样在处理器运行期间由机器执行,而是汇编程序对源程序汇编期间由汇编程序处 ...

最新文章

  1. 怎样找到适合自己的UI设计培训班
  2. Ext.js Tree
  3. 【mongoDB实战】mongo对某个键添加索引
  4. OpenCASCADE:调试工具和提示
  5. Framework Design Studio 发布了
  6. 超详细图解!【MySQL进阶篇】SQL优化-索引-存储引擎
  7. 1-4flink概述
  8. A Simple Math Problem 矩阵打水题
  9. java 动态加载jni_JNI静态注册与动态注册详解
  10. python学习笔记(七):面向对象编程、类
  11. 西门子smart200 圆弧插补 整合画图程序 2轴3轴
  12. mac safari java插件_如果提示您信任或更新 Mac 上 Safari 浏览器中的插件
  13. 文华财经期货K线多周期画线技术,多重短线技术共振通道线指标公式——多周期主图自动画线
  14. 心灵捕手——走进内心世界
  15. Google地图查地址、经纬度
  16. 论文阅读:RGCF: Refined Graph Convolution Collaborative Filering with Concise and Expressive Embedding
  17. C++ primer Plus(第六版)中文版第九章第3题
  18. mysql mongo关联查询语句_MySQL与Mongo简单的查询实例代码 筋斗云网络
  19. 得出一个月有多少工作日
  20. Vue2到Vue3实战必备技能(一)

热门文章

  1. Spring框架中bean的生命周期
  2. 搜索重复代码_通过MappedByteBuffer搜索大文件
  3. 非常全面的Android Bitmap知识点梳理
  4. Java中的synchronized与volatile关键字
  5. windoes硬盘备份(数据迁移)的方法
  6. java url特殊字符处理_简单实例处理url特殊符号处理(2种方法)
  7. python处理json数据 乱码报错_python操作mysql中文显示乱码的解决方法
  8. Docker容器的文件系统管理
  9. oracle 入参含多个值,oracle几个检查点参数的含义与区别
  10. js能订阅mq吗_高颜值宠物营养品订阅盒!除了好看,真的能补充营养吗?