ARM汇编语言编程入门实践

article/2025/11/5 16:09:26

文章目录

  • 一、keil的安装
  • 二、安装stm32 pack
  • 三、keil 的简单设置
  • 四、基于STM32汇编程序的编写
    • 4.1 新建工程
    • 4.2 新建test.s文件
    • 4.3 编译程序
    • 4.4 分析HEX文件
  • 五、总结
  • 六、参考资料

一、keil的安装

  1. 双击打开mdk_510.exe应用程序文件,点击Next>>。在这里插入图片描述
  2. 勾选I agree…后,点击Next>>。
    在这里插入图片描述
  3. 选择安装路径,并点击Next>>。
    在这里插入图片描述
  4. 随意输入Name和E-mail,再点击Next>>。
    在这里插入图片描述
  5. 点击安装
    在这里插入图片描述
  6. 点击Finish。
    在这里插入图片描述
  7. 点击OK后,鼠标会变成转圈圈的,因为正在进行在线安装各种pack,但会安装失败,不用着急,右上角关掉窗口,下面开始手动安装pack包。
    在这里插入图片描述

二、安装stm32 pack

  1. 在刚解压缩的文件中,双击打开ARM.CMSIS.3.20.4包,出现安装界面后点击Next>>,开始安装。
    在这里插入图片描述
  2. 点击Finish。
    在这里插入图片描述
  3. 在刚解压缩的文件中,双击打开Keil.STM32F1xx_DFP.1.0.4包,出现安装界面后点击Next>>,开始安装。
    在这里插入图片描述
  4. 安装结束后点击Finish。
    在这里插入图片描述
  5. 当双击2.2.0的STM32 pack时,会出现安装失败,是因为2.2.0版本的pack只支持更高版本的keil软件,如若想安装上这个pack,可以去下载最新的keil,这里我们只做学习用,1.0.4版本的足够了。
    在这里插入图片描述

三、keil 的简单设置

下载好了 keil 后,我们需要进行一些简单的设置

  1. 首先点击Edit→Configuration…,或者直接点工具栏的扳手图标,进入设置界面。
    在这里插入图片描述

  2. 设置编码形式为Chinese GB2312(Simplified),如果不设置,你从其它地方粘贴过来的代码含有中文的话,就会出现乱码,然后设置Tab size为4。
    在这里插入图片描述

  3. 进入Color & Fonts,选中C/C++ Editor files,选中中间窗口内的元素后,可以在右侧修改样式,比如设置字体、大小、颜色、背景,Sample是设置后预览效果。
    在这里插入图片描述

四、基于STM32汇编程序的编写

现在安装好了 keil 和 stm32 包,就来开始一个 stm32 的简单程序的编译。

4.1 新建工程

  1. 打开Keil uVision5,并新建一个工程。
    在这里插入图片描述在这里插入图片描述
  2. 在左侧的窗口内选择STM32芯片,这里我们选择STM32F103RB,并保存。
    在这里插入图片描述
  3. 勾选相应的选项,并点击OK,这样工程创建完毕。
    在这里插入图片描述

4.2 新建test.s文件

  1. 右键Source Group,选择Add New Item ...
    在这里插入图片描述

  2. 添加test.s文件
    在这里插入图片描述

  3. 然后将下列代码复制粘贴到test.s内。

AREA MYDATA, DATAAREA MYCODE, CODEENTRYEXPORT __main__mainMOV R0, #10MOV R1, #11MOV R2, #12MOV R3, #13;LDR R0, =func01BL	func01;LDR R1, =func02BL	func02BL 	func03LDR LR, =func01LDR PC, =func03B .func01MOV R5, #05BX LRfunc02MOV R6, #06BX LRfunc03MOV R7, #07MOV R8, #08	BX LR
  1. 仿真器设置
    在这里插入图片描述
    在这里插入图片描述

4.3 编译程序

点击左上角编译按钮,开始编译程序,此时0错误,0警告,表示编译成功。
在这里插入图片描述
在这里插入图片描述可以看到寄存器R5、R6、R7、R8的值和程序设置的一样。

4.4 分析HEX文件

  • .hex文件是什么:

它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex

:020000040800F2
:100000000006002031010008390100083B0100080A
:100010003D0100083F010008410100080000000008
:100020000000000000000000000000004301000884
:1000300045010008000000004701000849010008D0
:100040004B0100084B0100084B0100084B01000860
:100050004B0100084B0100084B0100084B01000850
:100060004B0100084B0100084B0100084B01000840
:100070004B0100084B0100084B0100084B01000830
:100080004B0100084B0100084B0100084B01000820
:100090004B0100084B0100084B0100084B01000810
:1000A0004B0100084B0100084B0100084B01000800
:1000B0004B0100084B0100084B0100084B010008F0
:1000C0004B0100084B0100084B0100084B010008E0
:1000D0004B0100084B0100084B0100084B010008D0
:1000E0004B0100084B0100084B0100084B010008C0
:1000F0004B0100084B0100084B0100084B010008B0
:100100004B0100084B0100084B0100084B0100089F
:100110004B0100084B0100084B0100084B0100088F
:100120004B0100084B0100084B0100084B0100087F
:100130000948804709480047FEE7FEE7FEE7FEE77B
:10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
:10015000054A064B7047000041020008990200085A
:100160000000002000060020000200200002002005
:10017000704770477047000080B500F001F880BDFF
:1001800082B041F204000021C4F20200019100910A
:1001900050F8041C41F4803140F8041C50F8041C51
:1001A00001F400310091019901310191009919B9CF
:1001B0000199B1F5A06FF1D150F8041C890354BF27
:1001C0000021012100910099012936D142F200015C
:1001D000C4F202010A6842F010020A600A6822F0C2
:1001E00003020A600A6842F002020A6001680160C4
:1001F00001680160016841F480610160016821F4D7
:100200007C110160016841F4E811016050F8041CA0
:1002100041F0807140F8041C50F8041C8901FBD5A2
:10022000016821F003010160016841F002010160F1
:10023000016801F00C010829FAD102B070470000F2
:1002400080B541F20000C4F202000168002241F0D2
:10025000010101604168CFF6FF0211404160016871
:100260004FF6FF72CFF6F66211400160016821F48B
:1002700080210160416821F4FE0141604FF41F01BB
:100280008160FFF779FF4EF60850CEF200004FF084
:100290000061016080BD00004FF00A004FF00B01CB
:1002A0004FF00C024FF00D0300F009F800F00AF8CF
:1002B00000F00BF8DFF81CE0DFF81CF0FEE74FF071
:1002C000050570474FF0060670474FF007074FF0DF
:0C02D00008087047BF020008CB020008BD
:040000050800029954
:00000001FF

该文件为16进制的一串字符。hex文件的第一排字符称之为扩展线性地址记录,也称为32位地址记录HEX386记录。
在第一行数据020000040800F2中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为:

1.第一个字节 0x02 表示本行数据的长度;
2.第二三字节 0x00 0x00 表示本行数据的起始地址;
3.第四字节 0x04 表示数据类型;
4.然后是数据 0x08 0x00;
5.最后一个字节 0xf2 为检验和。

五、总结

通过本次实验,了解了HEX的文件的内容,以及熟悉了对烧录代码到STM32的流程,受益匪浅。

六、参考资料

搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写
ARM汇编基础之基于MDK创建纯汇编语言的STM32工程


http://chatgpt.dhexx.cn/article/RZpBQcL3.shtml

相关文章

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

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

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

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

数学建模-层次分析模型

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

数学建模-层次分析法

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

数学建模--层次分析法

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

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

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

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

1 数据模型分为两类:一类是概念模型(信息模型),第二类是逻辑模型(数据建模)和物理模型(对数据最底层的抽象)。 2 常用的逻辑模型:层次模型、网状模型、关系模型、面向对…

计算机网络层次模型

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

批判马斯洛需求层次模型

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

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

一、OSI七层模型 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数…

层次分析法模型

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

层次分析法模型讲解

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

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

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

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

上一篇文章简单介绍了概念数据模型、逻辑数据模型、物理数据模型的基本概念、特性以及三者所对应的数据库的开发阶段。现在针对逻辑数据模型中所用到的三种数据模型---层次数据模型、网状数据模型以及关系数据模型做一个相信的介绍与对比分析。 一、层次数据模型 定义&#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;是数据库管系统中的物理存储模型。 格式化模型 层次模型和网状模型统称为格式化模型。格式化模型中数据结构的基本单位是基本层次联系&…

层次分析模型

离散模型&#xff1a;代数方程与差方程、整数规划、图论、对策论、网络论 层次模型&#xff08;AHP&#xff09;是一种定性与定量相结合的、系统化、层次化的分析方法。 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是一个互相关联、相互…