ARM架构与编程(基于STM32F103)第三章 ARM汇编指令

1、VisUAL汇编模拟器

        要学习简单的汇编指令可不能纸上谈兵,至少有一款趁手的工具提供给我们练习,这一款模拟器可以模仿ARM架构下的CPU,实际方便是挺方便,但是他仍然有缺点,首先是缺少外设,其次模拟器的ROM不可读不可写,在实际的CPU中是可以读ROM的

下载地址:https://salmanarif.bitbucket.io/visual/downloads.html

使用方法:https://salmanarif.bitbucket.io/visual/user_guide/index.html

2、内存访问指令

        站在CPU的角度,我们访问内存和地址的方式都是一样的,所以对于我们写程序的时候,读写内存和地址的指令也是一样的,访问内存的指令分读单个和读多个,LDR就是把地址中的值读取到CPU当中,而STR就是把CPU的值保存在某个地址中,还有STM和LDM指令就是访问多个内存地址

        光说不练假把式,我们打开VisUAL汇编模拟器来练习一下,0x00000000到0x0000FFFF是不可读不可写地址,0x00010000到0xFFFFFFFC是可读可写地址,内存设置为0x00020000

        因为这些数都不是立即值,所以我们得用伪指令来把这些数先存入R0和R1寄存器当中,然后我们读取内存地址0x20000到0x21000这一段地址,就能看见我们写入的数据,作为伪指令的一个简单的小练习,下面会对单个寄存器和多个寄存器操作的常规操作方法进行介绍

        以下是一些单独指令的常规用法,可以帮助我们精简代码,也可以帮助我们提升阅读水平

        我们了解了汇编操作单个寄存器的指令,接下来让我们了解一下基础的语法用法,LDM、STM可以和IA、IB、DA、DB等地址模式进行组合,例如STMIA就是每次传输了之后才去增加Rn的值,其他组合同理,但是有一点需要注意 低地址对应低寄存器 下图的几个指令会凸显这个特点

        右边是几个组合的简单用法,配合上图很轻松就能看懂这几个简单的指令,现在回看一下低地址对应低寄存器,我们会发现 STMIA 中低地址保存的是R1的值,而高地址中保存的是R3的值,在 STMDA 中同样也是低地址保存低寄存器的值,高地址保存高寄存器的值

3、数据处理指令

        这些是最基本的数据处理指令的用法,还有个或操作 ORR R1,R2,R3 也是一样的用法,没什么好讲的,能看懂指令知道怎么操作就够了,图里讲的很清楚了,可以自己练练

4、跳转指令

        我们之前讲了怎么读写内存,怎么去处理一些数据,那么根据这些指令我们就可以写出函数了,那么得调用这些函数呀,怎么去调用呢,首先我们分析C语言中调用函数的本质,是先跳转到函数内部执行函数,然后还得返回到原来的位置继续执行代码,对应的汇编指令就是跳转指令

        看一下跳转指令的基础指令,B和BL,BX和BLX是跳转指令的变种,下面有基本语法的使用方法

        以下是几个简单的练习指令,以B指令为例,比如说我们写一个Delay函数,给R0赋值1000,然后使R0=R0-1,判断R0是否等于0,如果不等于0返回Loop循环,等于0了我们就执行下面的Mov指令跳回了,我们这里输入B Delay就算是调用这个函数了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值