不区分大小写
    数据搬移指令:
    MOV R1,#1 @R1=1
    MOV PC,#0 @回到了第一条指令
    MOV PC,#7 @将7变成4的整数倍
    MOV R2,R1 @R2 = R1

    MVN R0,#0xFF @R0 = ~0xFF ==0xFFFFFF00

    立即数:包含在指令当中的数,属于指令的一部分
    优点:取址的时候就可以将其读到CPU,不用单独去内存读取,速度快
    缺点:不能是任意的32位的数字,有局限性
    MOV R0,#12345678 @数据太大了
    MOV R0,#12 @是立即数

    伪指令:
    MOV R0,#0xFFFFFFFF == MVN R0,#0x00000000

    数据运算指令的格式:
    操作码 目标寄存器 第一操作寄存器 第二操作数
    操作码:表示执行哪种操作
    目标寄存器:用于存储运算的结果
    第一操作寄存器:存储第一个参与运算的数据(只能寄存器)
    第二操作数:第二个参与运算的数据(可以是寄存器也可以是立即数)

    加法指令:
    ADD R1,R2,R3 @R1=R2+R3
    ADD R1,R2,#3 @R1=R2+3
    减法指令:
    SUB R1,R2,R3 @R1=R2-R3
    SUB R1,R2,#3 @R1=R2-3
    逆向减法指令:
    RSB R1,R2,#3 @R1=3-R2
    乘法指令:(不能使用立即数)
    MUL R1,R2,R3 @R1=R2*R3

    按位与指令:
    AND R1,R2,R3 @R1=R2&R3
    按位或指令:
    ORR R1,R2,R3 @R1=R2 | R3
    按位异或指令:
    EOR R1,R2,R3 @R1=R2^R3

    左移指令:
    LSL R1,R2,R3 R1=R2<右移指令:
    LSR R1,R2,R3 R1=R2>>R3

    位清零指令:
    (第二操作数中的哪一位为1,就将第一操作寄存器中哪一位清零,然后将结果放到目标寄存器)
    BIC R1,R2,#0xF(R2本身不变)

    数据运算指令的格式扩展:
    MOV R1,R2,LSL #1 @R1=(R2<<1)

    数据运算指令对条件位(N、Z、C、V)的影响
    (默认情况下数据运算不会对条件位产生影响,当在指令后加后缀’s’后可以影响)
    MOV R1,#3
    SUB R2,R1,#5

    两个64位的数据做加法运算:(会出现进借位问题)
    第一个数的低32放在R1
    第一个数的高32放在R2
    第二个数的低32放在R3
    第二个数的高32放在R4
    运算结果的低32放在R5
    运算结果的高32放在R6

    带进位的加法指令
    ADDS R5,R1,R3
    ADC R6,R2,R4 @R6=R2+R4+’C’

    带借位的减法指令
    SUBS R5,51,53
    SBC R6,R2,R4 @R6=R2-R4-‘!C’

    ADD不关心之前是否有进位,也不关心加了后是否有进位
    ADDS不关心之前是否有进位,但关心加了后是否有进位
    ADC只关心之前是否有进位,不关心加了后是否有进位
    ADCS关心之前是否有进位,关心加了后是否有进位



    **