嵌入式-----汇编语言

一.ARM汇编语言程序格式

        ARM汇编语言是以段(section)为单位来组织源文件的。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。

        段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个ARM源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。

        在汇编文件中,我们需要先定义一个段,在段中添加我们实现的汇编程序语句。

        nop执行,但是nop没有实际含义,类似于占个位。

        b 类似于goto,也就是goto翻译为汇编语言后,就是b。

        ;在汇编里面,注释用“  ;”,并且每次只能注释一行

二.ARM汇编语言中常用的伪操作

        这些伪操作类似于c语言中的include等

三.指令格式中符号说明

        

        凡是被大括号括起来的东西都是可以被省略的 。

        opcode : 操作码,像如mov,add这类的。

        cond:可选的条件,在执行这个语句的时候,符合某种条件再去执行,一般用在if里面。

        S:改变状态码的标识,如借位标识,可以选择要不或者不要。要想改变cpsr,就要加s。

        Rd:目标寄存器

        Rn:存放第一操作数的寄存器,有时候也可以省略。

四.ARM指令集合

        1.六大类

                数据处理指令,如add。

        先从内存把指令加载到cpu中,就要用Load和Stord,一个从里面读,一个是往里面写。

        跳转指令 b

        cpsr要有专门的指令去存取。

        协助处理,用来管理MMu的。

(1).数据处理指令又可以分为

        

        RSB:反向的减法,本来是前面减后面,现在是后面减前面。

        ADC:带C的都是带进位借位的加法。

                        

                因为0x 1 ffff ffff超过了32位i,所以用俩个寄存器来存一个数值。

              在计算0xffff ffff 加 3 的时候会产生进位,所以要用进位标识码,进位标识码只是一种状态不是在这个里面保存了一个1,有进位,那么我们就要用adc来计算而不是用add。

        ORR:或

        EOR :异或

        BIC:位清零,就是把后面数字的为1 的位清零,然后保存在前面的寄存器中。

                        mov r0, #0xff

                        bic r1, r0, #1          ;结果位0xfe 就是把最后一位为1的位的1清零

                        bic r1, r0, #2          ;结果位0xfd 就是把最倒数第二位为1的位的1清零

              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值