美文网首页
3-伪指令_FIQ_IRQ_乘法

3-伪指令_FIQ_IRQ_乘法

作者: ibo | 来源:发表于2017-02-03 15:34 被阅读0次
伪指令:编译器识别的指令。
  • ldr伪指令 ldr r0,=0x12345678

  • ldr指令 ldr r0,[r0]

  • mov r0,r1,asr #4

start:
cmp r0,r1
beq stop
subgt r0,r0,r1
sublt r1,r1,r0
b start
stop:
乘法指令:mul r0,r1,r2 r0 = r1*r2
  • mla 乘加
  • mull 64位乘法
  • mlal 乘加
ldr str
  • 加上B byte 8位
  • 加上H halfword 16位
  • 加上S 带符号的
ldr r0,=0x40008000
ldr r1,[r0]
mov r1,#0x10
str r1,[r0]
ldm stm
  • 可以传送多个寄存器到/从内存中
  • {r0,r1,r4}
  • {r0-r4}

IA 先操作,后增加

IB 先增加,后操作

DA 先操作,后递减

DB 先递减,后操作

r0,r1
mov r2,r0
mov r0,r1
mov r1,r2
swi 可以切换到SVC模式

立即数寻址
寄存器寻址
寄存器移位寻址
寄存器间接寻址 ldr r0,[r1]
基址变址寻址 ldr r0,[r1,#4]
多寄存器寻址 ldm
相对寻址 相对于PC找到对应的位置
堆栈寻址 stmfd

.if
.else
.endif

.macro   宏#define
.endm

.align 4 对齐

.include 包含头文件
bf 向前跳转
bb 向后跳转
ATPCS 规定了函数之间参数传递的规则
4个以内的传参通过r0-r3
以上的参数通过压栈实现
stmfd 满减栈的方式传递参数
asm volatile
("汇编\n\t"
:"输出的单位"(寄存器、变量)
:"输入"(寄存器、变量)
:"memory");
// = 表示只写,缺省表示只读,a 表示读写

* FIQ为什么比IRQ快

  • 1.优先级比较高
  • 2.拥有独立的寄存器
  • 3.位于中断向量表的末尾,可以直接运行中断处理函数
IIC 半双工 8bit 有应答 一个主机对应一个从机
  • 时序:
    • 开始数据传送:SCL 高电平 SDA 下降沿
    • 结束: SCL 高电平 SDA 上升沿
SPI 全双工 可以一个一个位的发送/接受数据

相关文章

  • 3-伪指令_FIQ_IRQ_乘法

    伪指令:编译器识别的指令。 ldr伪指令 ldr r0,=0x12345678 ldr指令 ldr r0,[r0...

  • 17 ARM汇编伪指令

    伪指令的意义 伪指令不是指令,伪指令和指令的根本区别是经过编译后不会生成机器码 伪指令的意义在于知道编译过程 伪指...

  • <<汇编语言>>第4~6章笔记

    伪指令 伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译操作 segment和ends segmen...

  • 8086伪指令

    8086伪指令 *db(define byte)自定义字节 *dw(define word)自定义字 Call和R...

  • 内部数据类型及数据定义伪指令

    内部数据类型 数据定义伪指令

  • Java 面试系列:Java 中的运算符和流程控制 + 面试题

    算术运算符 Java 中的算术运算符,包括以下几种: 算术运算符名称举例+加法1+2=3-减法2-1=1*乘法2*...

  • ARM汇编之加载地址到寄存器

    有这几种方式可以加载地址到寄存器: 使用ADR汇编指令 使用ADRL伪指令 使用MOV32伪指令 使用LDR Rd...

  • 2018-11-02

    [TOC] L4 第一个程序 源程序包含的内容 伪指令 伪指令由编译器来执行,没有实际的意义。 segment与 ...

  • X86 Assemble指令--offset

    offset的作用 offset是一条伪指令,在编译的过程中,编译器会将该伪指令进行计算,并且替换成标号/变量的地...

  • 汇编六

    8086伪指令 db (define byte) 字节 dw (define word) 字 示例代码: 除了...

网友评论

      本文标题:3-伪指令_FIQ_IRQ_乘法

      本文链接:https://www.haomeiwen.com/subject/lrydittx.html