小白学习嵌入式第二回合

(一)汇编语言
1.简介
2.指令
3.优缺点
(二)使用Keil 5编写汇编程序
1.新建汇编工程
2.新建汇编文件
3.调试汇编程序
4.hex文件简介
汇编语言
1.简介
汇编语言(Assembly Language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
2.指令
传送指令
包括通用数据传送指令MOV、条件传送指令CMOVcc、堆栈操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交换指令XCHG/XLAT/BSWAP、地址或段描述符选择子传送指令LEA/LDS/LES/LFS/LGS/LSS等。
逻辑运算
用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。
移位指令
用于将寄存器或内存操作数移动指定的次数,包括逻辑左移指令SHL、逻辑右移指令SHR、算术左移指令SAL、算术右移指令SAR、循环左移指令ROL、循环右移指令ROR等。
位操作
包括位测试指令BT、位测试并置位指令BTS、位测试并复位指令BTR、位测试并取反指令BTC、位向前扫描指令BSF、位向后扫描指令BSR等。
控制转移
包括无条件转移指令JMP、条件转移指令JCC/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。
串操作
用于对数据串进行操作,包括串传送指令MOVS、串比较指令CMPS、串扫描指令SCANS、串加载指令LODS、串保存指令STOS,这些指令可以有选择地使用REP/REPE/REPZ/REPNE和REPNZ的前缀以连续操作。
输入输出
用于同外围设备交换数据,包括端口输入指令IN/INS、端口输出指令OUT/OUTS。
3.优缺点
优点
可以轻松的读取存储器状态以及硬件I/O接口情况
编写的代码因为少了很多编译的环节,可以能够准确的被执行
作为一种低级语言,可扩展性很高
缺点
程序非常单调,特殊指令字符很少,造成了代码的冗长以及编写的困难
仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易;就算完成了一个程序,后期维护时候也需要耗费大量的时间,因为机器的特殊性造成了代码兼容性差的缺陷。
选择Project->New uVision Project…
给新建的工程命名并保存到到相应的位置,我这里命名为test



新建汇编文件
在Source Group 1选项下右键选择Add New Item to Group Source Group 1…

选择Asm File(.s),输入新建的汇编文件的名字

编写汇编程序
AREA MYDATA, DATA

AREA MYCODE, CODE
ENTRY
EXPORT __main

__main
MOV R0, #10
MOV R1, #11
MOV R2, #12
MOV R3, #13
;LDR R0, =func01

BL   func01
;LDR R1, =func02
BL  func02BL    func03
LDR LR, =func01
LDR PC, =func03
B .

func01
MOV R5, #05
BX LR

func02
MOV R6, #06
BX LR

func03
MOV R7, #07
MOV R8, #08
BX LR

END

.调试汇编程序

配置Debug选项



进入调试界面如下:




通过上面的图片我们可以看到R5、R6、R7、R8的值从全零变为相应的值(R5变为0x00000005,R6变为0x00000006,R7变为0x00000007,R8变为```0x00000008 ``)
hex文件简介
生成hex文件
工程选项中选择Output,然后勾选Create HEX File,再重新编译一下工程即可生成Hex文件


总结
Hex文件分析
第一个字节 0x02表示本行数据的长度;
第二、三个字节 0x00 0x00表示本行数据的起始地址;
第四个字节 0x00表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
后面是数据字节
最后一个字节 0xD0为校验和。

数据类型如下:
00: Data Rrecord 用来记录数据,HEX文件的大部分记录都是数据记录
01: End of File Record 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
02: Extended Segment Address Record 用来标识扩展段地址的记录
03: Start Segment Address Record 开始段地址记录
04: Extended Linear Address Record 用来标识扩展线性地址的记录
05: Start Linear Address Record 开始线性地址记录

2021-10-01相关推荐

  1. 【财经期刊FM-Radio|2021年01月19日】

    title: [财经期刊FM-Radio|2021年01月19日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 美股美债休市,欧股走出逾一周低谷,雪铁龙并购后新公司登陆欧股首日涨超 ...

  2. 【财经期刊FM-Radio|2021年01月23日】

    title: [财经期刊FM-Radio|2021年01月23日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 纳指惊险收涨,道指两连跌,中概电子烟第一股翻倍,比特币大反弹. 美国 ...

  3. 【财经期刊FM-Radio|2021年01月20日】

    title: [财经期刊FM-Radio|2021年01月20日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 纳指涨超1.5%,中概大涨,腾讯音乐涨21%,金银油回涨,以太币新高 ...

  4. Neovim开发环境搭建(2021.07.01)

    Neovim开发环境搭建(2021.07.01) 一.搭建环境 Ubuntu 21.04 Neovim 0.4.4 二.Neovim安装 # 下载 neovim,如遇网络问题可以采用 https:// ...

  5. 纬创科技面试 2021.10.09 19:00

    纬创科技面试 面试时间:2021.10.09 19:00 面试方式:两个面试官 腾讯视频面试 面试总结:总体面试比较简单,但是问题较多,也很全面.总体上还是比较满意的 问题 基本情况: 介绍之前的项目 ...

  6. 电动力学每日一题 2021/10/23 载流板产生的电磁场

    电动力学每日一题 2021/10/23 载流板产生的电磁场 载流板的辐射 载流板的辐射 先验证电荷守恒: ∂ρ∂t=−∇⋅J=−∂∂zJz=0\frac{\partial \rho}{\partial ...

  7. 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场

    电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场 无限长均匀电流 无限长圆柱面均匀电流密度 无限长均匀电流 假设z轴上有一根非常细的电线,携带均匀电流I0I_0I ...

  8. 电动力学每日一题 2021/10/14

    电动力学每日一题 2021/10/14 (a) Define r∣∣=xx^+yy^\textbf r_{||}=x\hat x+y\hat yr∣∣​=xx^+yy^​, r∣∣=x2+y2r_{| ...

  9. 电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场

    电动力学每日一题 2021/10/13 用Fourier变换法计算静止电荷产生的电场 静止点电荷 具有均匀线密度的静止电荷产生的电场 具有均匀面密度的静止电荷产生的电场 用Fourier变换法计算电场 ...

  10. 电动力学每日一题 2021/10/12

    电动力学每日一题 2021/10/12 (a) To make the EM field trapped inside a perfectly electric conducting cavity, ...

最新文章

  1. 又一理论横空出现或将颠覆世界
  2. 关于Tomcat无法启动的问题(Server Tomcat v7.0 Server at localhost failed to start.)
  3. 又~发现两篇好文章~~
  4. Linux下Tomcat安装和配置
  5. mysql caching_Spring Caching抽象和Google Guava Cache
  6. 看完这个故事,你就知道程序员为什么选公司就要去上升期的
  7. sql server 内存_SQL Server内存性能指标–第6部分–其他内存指标
  8. jsp mysql demo_ntko: ntko办公插件使用案例demo使用java+jsp+mysql实现
  9. android arial字体,Arial字体大小
  10. Latex错误:xxx PDF objects out of 1000 (max. 8388607) ……
  11. ue4账号注册不了_UE4入门(一)软件安装教程
  12. 关于代码家(干货集中营)共享知识点汇总系列——休息娱乐
  13. KUKA库卡机器人零点失效维修案例
  14. 关键点检测---CPN, Cascaded Pyramid Network for Multi-Person Pose Estimation
  15. CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
  16. 8.(高级)CSS形状之:菱形图片
  17. iOS 火星坐标系 与 地球坐标系
  18. 免费AWS EC2实例
  19. CGAN(conditional GANs)
  20. 开发一个 Linux 调试器(四):Elves 和 dwarves

热门文章

  1. xshell免费版安装
  2. python爬取大学生就业分析专科和本科的信息https://edu.jobui.com/major/(上)JSON的存储
  3. 基于Qt 5.7.0的适合Window XP系统的应用开发
  4. DOS重装win7系统
  5. 计算机运维方向要考什么证,IT运维项目经理考的证
  6. (2018)All-optical machine learning using diffractive deep neural networks
  7. Python基础三、2、list列表练习题 引用随机数
  8. JavaScript 是如何工作的:模块的构建以及对应的打包工具
  9. MC指令java,我的世界Java版指令有哪些-我的世界Java版常用指令分享-沧浪手游
  10. unity应用实例——从头撸一个全新的FPS游戏(5)