首页 > 其他分享 >嵌入式控制器(STM32)->栈指针累寄存器

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

时间:2024-08-02 17:55:42浏览次数:14  
标签:传送 嵌入式 STM32 地址 指令 寄存器 LDRH 数据

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

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

局部变量再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 区域,链接文件中使用

 

标签:传送,嵌入式,STM32,地址,指令,寄存器,LDRH,数据
From: https://www.cnblogs.com/lzqd/p/18339305

相关文章

  • STM32简介及学习方向
    目录1.STM32简介2.STM32与ARM的关系3.STM32F103C8T6介绍3.1STM分类3.2STM命名规则3.3项目开发介绍3.4STM32F103C8T6芯片3.4.1芯片外观3.4.2 引脚图 3.4.3引脚对应功能表 3.4.4 STM32F103系列芯片的系统架构 3.4.5 STM32F103系列芯片总线矩阵(不含......
  • 从零开始学嵌入式技术之C语言09:数组
    一:数组的概念(1)概念        数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个标识符命名,并通过编号(索引,亦称为下标或角标)的方式对这些数据进行统一管理。    数组名:本质上是一个标识符常量,命名需要符合标识符规范。元素:同一个数组中的元素必须是相......
  • STM32学习三GPIO操作
    点灯:二极管利用的是两边的电压差点亮,如图外接有3.3v电压,所以只需要引脚给低电平即可驱动。当外接地时,需要芯片给出高电平驱动,在推挽输出的模式下输入输出都有很强的驱动能里。但一般都是led外接高电压,因为很多芯片都采用高电平弱驱动,低电平强驱动的规则。1.芯片数据手册......
  • 【STM32】GPIO口以及EXTI外部中断
    个人主页~有关结构体的知识在这~有关枚举的知识在这~GPIO口以及EXTI外部中断GPIO一、简介二、基本结构三、输入输出模式1、输入模式(1)上拉输入(2)下拉输入(3)浮空输入(4)模拟输入2、输出模式(1)推挽输出(2)开漏输出(3)复用推挽输出(4)复用开漏输出EXIT外部中断一、中断系统二、......
  • 嵌入式软件--C语言高级 DAY 8 函数
    函数是C语言尤为重要的知识点,再嵌入式的学习过程中,对51和32的单片机的学习是重中之重。一、函数的基本概念1.介绍函数是一种可重复使用的代码块,用于执行特定的任务或操作。函数允许我们将代码逻辑组织成独立的单元,从而提高了代码的可读性、可维护性和重用性。一个C程序可......
  • 嵌入式开发C语言学习day26-华清作业8.1
    思维导图作业//使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源#include<myhead.h>#defineMAX1024structBuf{charfile1[20];charfile2[20];intsize;};//进程1拷贝前半内容void*copy......
  • 使用keil进行stm32的开发
    下载keil首先打开https://www.keil.com/download/product/点击MDK-Arm表单里面的信息乱写一通,然后点击submit,就会出现下载链接。下载MDK安装keil一路下一步修改安装路径,用户信息等可以随意填写。激活keil右键桌面上的keil图标,以管理员权限运行,然后点击左上角的file->l......
  • 重头开始嵌入式第八天(字符串,二维数组)
    今天继续介绍字符数组以下是一些常见的C语言字符串处理函数的介绍、函数本体、返回值、用法及实现示例: 以下是 puts 和 gets 函数的介绍、函数本体、返回值、用法及实现示例:字符处理函数puts() 函数-函数意思:将字符串输出到标准输出(通常是屏幕)并换行-函数......
  • 重头开始嵌入式第九天(函数)
    今天继续学习字符串viodbzero(void*s,size_tn)功能:将s开始的n个字节,清除为0二维字符数组:一维字符串的数组接下来进入今天的正题,函数。函数 在C语言中,函数是一段用于完成特定任务的独立代码块。下面我们来详细地阐述其特点和基本要素: 函数声明:函数声明明确了......
  • STM32的内存映射机制详解
    目录前言一、基本概念二、内存映射的组成三、典型布局四、常用映射前言刚开始学习STM32的同学可能只知道按案例配置RAM、Flash的起始地址和容量,但是这个地址是怎么来的,可能并不清楚,接下来让我来给大家介绍一下STM32的内存映射机制。STM32的内存映射机制是一种将不同......