嵌入式ARM设计编程(一) 简单数据搬移

article/2025/11/5 16:12:16

文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。

一、实验目的

熟悉实验开发环境,掌握简单ARM汇编指令的使用方法。

二、实验环境

硬件:PC机

软件:ADS1.2 集成开发环境

三、实验内容

熟悉开发环境并使用LDR/STR,MOV等指令访问寄存器或存储单元;

使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

四、实验要求

(1)按照2.3节介绍的方法, 在ADS下创建一个工程asmlab1,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过AXD查看寄存器和memory和寄存器中数据变化。

(2)在指令后面加上适当注释,说明指令功能。

(3)指出程序执行完成后各相关寄存器及存储器单元的具体内容。

五、实验完成情况

1、实验源代码(含注释):

AREA Init,CODE,READONLY  ;伪指令AREA定义名为Init,属性为只读或的代码片段ENTRY  ;伪指令ENTRY声明程序入口CODE32 ;声明以下代码为 32 位 ARM 指令
x EQU 45
y EQU 64 ;定义两个变量 x,y
stack_top EQU 0x1000 ;定义堆栈地址 0x1000
start MOV SP, #stack_top  ;设置栈顶地址MOV R0, #x  ;把x的值赋给R0STR R0, [SP]  ;R0中的内容入栈
MOV R0, #y  ;把y的值赋给R0
LDR R1, [SP]  ; 数据出栈,放入R1,即R1中放x的值ADD R0, R0, R1  ;R0=R0+R1STR R0, [SP,#4] ;先执行SP+4(ARM为32位指令集),再将R0内容复制到SP指向的寄存器B .
END  ;程序结束

2、实验过程(含结果截图及相应文字解释):

根据代码可知,

1.首先执行start MOV SP, #stack_top 通过该语句设置了栈顶地址为0x1000。

2.然后执行MOV R0, #x,把x的值赋值给了R0寄存器,此时R0寄存器的值变成45,由于是十六进制存储的,因此显示为2D。

3.然后执行STR R0, [SP],将R0的值入栈,由于前面已经设置了栈顶地址为0x1000,因此可以查看到内存地址0x100处的数据变成了2D。

4.然后执行MOV R0, #y,把y的值赋值给了R0寄存器,此时R0寄存器的值变成64,由于是十六进制存储的,因此显示为40。

5.然后执行LDR R1, [SP],该数据出栈,将数据赋值给R1,此时R1中保存的值为2D。

6.然后执行ADD R0, R0, R1,其含义相当于R0=R0+R1,因此R0寄存器的值为2D+40 = 6D。

7.最后执行STR R0, [SP, #4],先执行SP+4,将指针进行偏移,再将R0的值复制到此时SP指向的地址0x1004,该数据赋值为6D。

最后程序执行完成后各相关寄存器及存储器单元的具体内容如下:

寄存器:

  • R0内容为0x6D,
  • R1内容为0x2D,
  • SP内容为0x1000,

存储器单元:

  • 0x1000内容为0x2D,
  • 0x1004内容为0x6D。

练习题

编写程序实现对一段数据的最大值最小值搜索,最大值存于max变量之中,最小值存于min变量之中。

提示: 数据的定义采用伪指令:DCD来实现,如:

DataBuf DCD 11,-2,35,47,96,63,128,-23

搜索最大值和最小值可以利用两个寄存器R1,R2来存放。用到的比较指令为CMP,用到的条件标识符小于为LT,大于为GT。

基本思路为:利用R0做基地址,将R1,R2分别存入第一个单元的内容,利用R3做循环计数器,利用R4遍历读取第2至最后一个数据,如果R1的数据小于新读入的R4数据则将R4的内容存入R1, 如果R2的内容大于R4的内容则将R4的内容存入R2。遍历完成之后,R1将存放最大数据,R2将存放最小数据。

 AREA comp,CODE,READONLY ;定义CODE片段comp 只读ENTRY           ;进入程序CODE32          ;以下为32位的ARM程序
START         LDR R0, = DAT      ;加载数据段中DAT的数据的地址到R0LDR R1, [R0]       ;加载R0的内容到R1LDR R2, [R0]       ;加载R0的内容到R1MOV R3,#1        ;设置循环变量R3并初始化为1
LOOPADD R0,R0,#4       ;每次循环R0+4LDR R4,[R0]      ;R4存入R0的数据CMP R1,R4        ;比较R1,R4MOVLT R1,R4      ;如果R1<R4 就把R4存入R1CMP R2,R4        ;比较R2,R4MOVGT R2,R4      ;如果R2>R4 就把R4存入R2ADD R3,R3,#1       ;每次循环R3值加一CMP R3,#8        ;判断R3与8BLT LOOP         ;如果R3 < 8则跳转到LOOP执行B .           ;退出AREA D,DATA,READONLY  ;定义一个数据段D,读写
DAT DCD 11,-2,35,47,96,63,128,-23END

实验结果如下:

程序的基本思路是将DataBuf的首地址装载到R0中,再通过首地址将第一个数据装载到R1和R2中,设定R3为循环变量,并且初始化为1。然后进入循环,通过循环比较,将比较过程中得到的最大值放在R1中,最小值放在R2中,每一次循环R3中的值加1,当R3=8时,比较循环结束。


http://chatgpt.dhexx.cn/article/3SsNUghC.shtml

相关文章

ARM汇编语言编程入门实践

文章目录 一、keil的安装二、安装stm32 pack三、keil 的简单设置四、基于STM32汇编程序的编写4.1 新建工程4.2 新建test.s文件4.3 编译程序4.4 分析HEX文件 五、总结六、参考资料 一、keil的安装 双击打开mdk_510.exe应用程序文件&#xff0c;点击Next>>。勾选I agree……

ARM体系结构与编程模型总结

ARM体系结构与编程模型 ARM体系结构 一、ARM处理器简介及RISC特点 ARM处理器简介 ARM&#xff08;Advanced RISC Machines&#xff09;是一个32位RISC&#xff08;精简指令集&#xff09;处理器架构&#xff0c;ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多…

数学建模-层次分析法(评价模型)

层次分析法概述 层次分析法的步骤和方法 1. 建立层次结构模型 2. 构造判断(成对比较)矩阵 3. 层次单排序及其一致性检验 4. 层次总排序及其一致性检验 总结 应用层次分析法的注意事项 举例 层次分析法代码实现 disp(输入判断矩阵C) Cinput(C); %输入矩阵 [n,n] size(C);%…

数学建模-层次分析模型

层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次…

数学建模-层次分析法

个人主页&#xff1a; 个人主页 系列专栏&#xff1a; 数学建模 目录 前言 一、引入 二、层析分析法 1.思想介绍 2.判断矩阵 3.一致矩阵 4.一致性检验 5.一致性检验步骤&#xff08;两张图片告诉你&#xff09; 6.计算权重 一致矩阵计算权重&#xff1a; 判断矩阵计…

数学建模--层次分析法

层次分析法的求解步骤 1.建立层次结构模型 模型分为三层。分别为最高层&#xff08;决策问题最终要解决什么&#xff0c;即决策的目的&#xff09;、中间层&#xff08;考虑的因素&#xff0c;决策的准则。比如买衣服要考虑价格、尺寸、款式等因素&#xff09;和最低层&#…

层次分析法模型(数学建模学习)

本系列参考清风老师的数学建模课程 层次分析法模型 一、模型介绍 &#xff08;一&#xff09;模型引入 对于方案选择类问题&#xff0c;评价类问题采用层次分析法&#xff08;The ayalytic hierarchy process / AHP&#xff09;模型进行评分&#xff0c;之后评分高的就是最佳…

数据库常用数据模型1(层次模型)

1 数据模型分为两类&#xff1a;一类是概念模型&#xff08;信息模型&#xff09;&#xff0c;第二类是逻辑模型&#xff08;数据建模&#xff09;和物理模型&#xff08;对数据最底层的抽象&#xff09;。 2 常用的逻辑模型&#xff1a;层次模型、网状模型、关系模型、面向对…

计算机网络层次模型

计算机网络层次模型 OSI 7层协议 物理层&#xff1a;在局部局域网上传送数据帧&#xff08;Data Frame&#xff09;&#xff0c;它负责管理电脑通信设备和网络媒体之间的互通。数据链路层&#xff1a;在两个网络实体之间提供数据链路连接的创建、维持和释放管理。构成数据链路…

批判马斯洛需求层次模型

再次批判马斯洛需求层次模型&#xff0c;有啥缺陷&#xff1f; 趣讲大白话&#xff1a;文化不同&#xff0c;心理不同 【趣讲信息科技182期】 **************************** 每个民族的文化心理结构都不一样 常常低估文化对人的影响 有一门心理学分支&#xff0c;文化心理学 专…

网络层次模型及各层对应协议

一、OSI七层模型 OSI七层协议模型主要是&#xff1a;应用层&#xff08;Application&#xff09;、表示层&#xff08;Presentation&#xff09;、会话层&#xff08;Session&#xff09;、传输层&#xff08;Transport&#xff09;、网络层&#xff08;Network&#xff09;、数…

层次分析法模型

层次分析法 文章目录 层次分析法概述层次分析法简介层次分析法典型应用层次分析法基本原理 层次分析法的步骤和方法建立层次结构模型构造判断矩&#xff08;成对比较&#xff09;阵层次单排序及其一致性检验一致性检验正互反阵最大特征根和特征向量的简化计算 层次总排序及其一…

层次分析法模型讲解

一、解决评价类问题 二、资料来源 三、例题 1.准备 2.权重表格 3.分而治之解决权重弊端 4.层次分析法 根据判断矩阵求权重&#xff0c;下面对各个指标进行填写判断矩阵&#xff1a; bug分析&#xff1a; 如果小明填写的不是5而是1&#xff0c;这里发现&#xff1a;苏杭>北戴…

数学建模之层次分析法模型

目录 问题 问题实例 问题分析 建立层次分析法模型 分析权重的方法 ​编辑 填表指标的权重​编辑 一致性检验 一致性检验的引入 一致性检验的步骤 计算判断矩阵 归一化处理 算术平均法求权重 几何平均法求权重 特征值法求权重&#xff08;常用&#xff09; 汇总结果…

逻辑数据模型之层次数据模型、网状数据模型和关系数据模型

上一篇文章简单介绍了概念数据模型、逻辑数据模型、物理数据模型的基本概念、特性以及三者所对应的数据库的开发阶段。现在针对逻辑数据模型中所用到的三种数据模型---层次数据模型、网状数据模型以及关系数据模型做一个相信的介绍与对比分析。 一、层次数据模型 定义&#xff…

三种数据模型---层次模型、网状模型以及关系模型

一、层次数据模型 定义&#xff1a;层次数据模型是用树状<层次>结构来组织数据的数据模型。 其实层次数据模型就是的图形表示就是一个倒立生长的树&#xff0c;由基本数据结构中的树&#xff08;或者二叉树&#xff09;的定义可知&#xff0c;每棵树都有且仅有一个根节点…

【数学模型】层次分析

Hello大家好&#xff0c;今年数学建模国赛将于9月中旬举行&#xff0c;是时候提前做一些准备了。 本次模型非常简单&#xff0c;只是介绍比较得详细&#xff0c;我下次注意&#xff0c;争取限制下字数。 文末准备了 层次分析-python 模型的实现&#xff0c;简单懂得模型原理便…

数据库中的常用的数据模型 层次模型 网状模型 关系模型

层次数据模型 定义&#xff1a;层次数据模型是用树状<层次>结构来组织数据的数据模型。 满足下面两个条件的基本层次联系的集合为层次模型     1. 有且只有一个结点没有双亲结点&#xff0c;这个结点称为根结点     2. 根以外的其它结点有且只有一个双亲结点 其…

1.2 《数据库系统概论》之数据模型(概念模型、逻辑模型--物理模型、层次模型、网状模型、关系模型、面向对象模型、对象关系模型)

文章目录 0.思维导图1.数据模型的概念2.两大类数据模型客观对象的抽象过程---两步抽象 3.数据模型的组成要素(1)数据结构(2)数据操作(3)数据的完整性约束条件 4.概念模型(1)用途与基本要求(2) 信息世界中的基本概念(3)两个实体型之间的联系① 一对一联系&#xff08;1:1&#x…

层次、网状、关系模型

层次、网状、关系模型都是逻辑上的&#xff0c;它们都是以一定的方式存储在数据库系统中&#xff0c;这是数据库管理系统的功能&#xff0c;是数据库管系统中的物理存储模型。 格式化模型 层次模型和网状模型统称为格式化模型。格式化模型中数据结构的基本单位是基本层次联系&…