单片机
返回首页

arm学习笔记二(arm寻址方式)

2024-10-17 来源:cnblogs

工作状态
arm状态 32位指令
thumb状态 16位指令

存储器的格式
最大寻址空间为4gb
大端格式:字数据的高字节存储在低地址中,低字节存放在高地址中
小端格式:与大端格式相反

axd查看寄存器
=================================================================
arm寻址方式(貌似计算机原理中学过)
处理器根据指令中给出的地址信息来寻找物理地址的方式

立即寻址
立即数寻址
示例代码如下:
add r0,r0,#1; r0<--r0+1
add r0,r0,#0x3f; r0<--r0+0x3f    以十六进制表示的立即数要加0x或&

寄存器寻址
利用寄存器中的数值作为操作数
示例代码如下:(将r1和r2中的内容相加,结果存放在寄存器r0中)
add r0,r1,r2; r0<--r1+r2

寄存器间接寻址
以寄存器中的值作为操作数的地址,操作数存放在存储器中
示例代码如下:
add r0,r1,[r2]; r0<--r1+[r2]
ldr r0,[r1]; r0<--[r1]

基址变址寻址
将寄存器的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址
示例代码如下:
ldr r0,[r1,#4];  r0<--[r1+4]
ldr r0,[r1,#4]!; r0<--[r1+4],r1<--r1+4
ldr r0,[r1],#4; r0<--[r1],r1<--r1+4
ldr r0,[r1,r2]; r0<--[r1+r2]

多寄存器寻址
一条指令可以完成多个寄存器值的传送,最多16个通用寄存器
示例代码如下:
ldmia r0,{r1,r2,r3,r4}; r1<--[r0]
                      ; r2<--[r0+4]
     ; r3<--[r0+8]
     ; r4<--[r0+12]
ia表示每次在执行完加载、存储操作后,r0按字长度增加,可将连续存储单元的值
传送到r1-r4

相对寻址
  以程序计数器pc的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到的操作数的有效地址
示例代码如下:
bl next; 跳转到子程序next的执行处
next 
mov pc,lr; 从子程序返回

堆栈寻址
按先进先出的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置
递增堆栈
递减堆栈
满堆栈
空堆栈

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章