嵌入式控制器(STM32)->栈指针累寄存器

Posted on 2024-08-02 17:53  牛man  阅读(6)  评论(0编辑  收藏  举报

全局变量和局部变量从存储角度理解

全局变量具有固定的地址,每次读写都是一个地址,而且它的存储区域从使用到使用结束一直存在

局部变量再RAM 中的地址不固定,采用先进后出的RAM 区域,称为栈区

寄存器分为通用寄存器(R0-R12)和特殊寄存器(R13-R15)

ARM 基本指令系统

数据传送,数据操作,跳转控制。指令格式中的{},表示其中为可选项,如LDRH [Rt,{Rn{,#mm}],表示有:“LDRH Rt,[Rn]”、"LDRH Rt, [Rn, #imm]"两种指令格式,指令中的“【】”表示内容作为地址。

数据传送指令

数据传送指令的功能就是将数据从一个地方复制到另一个地方。有两种情况,一是取存储器地址空间中的数据传送到寄存器中, 二是寄存器中的数据传送到另一个寄存器或者存储器地址空间中。

取指令:

存储器(ram 或者flash )由地址表征,把存储器中的内容LAOD 到cpu内部寄存器中的指令,LD 是load 的缩写

LDR.LDRH,LDRB等命令

存数指令:

将cpu 内部寄存器中的内容存储到存储器中的指令称为存数指令.ST:store 的缩写

STR/STRH,STRB,STM

寄存器之间的数据传送指令

MOV 指令用于CPU内部寄存器之间的数据传送

MOV /MOVS/MVN
栈操作指令:

push  regilist入栈,sp-4, reglist(R0-R7)

pop regilist出栈,sp+4,

ADR :是将PC 值加上一个偏移量得到的地址写进目标寄存器中

汇编伪指令:

可执行程序是以段作为单位来组织文件的,通常划分为.text, .data, .bss 段。其中.text 只读代码段是程序存放的地方,一般存储在flash 区域,.data 是可读写数据段

而.bss 是可读写且没有初始化的数据段,启动时会清0,存储在RAM 区域,链接文件中使用