当前位置: 星创客 > 学习资源 > 学员笔记 > ARM体系结构和接口技术
ARM体系结构和接口技术 时间:2018-02-02     来源:星创客

A53是64位的 ,V8架构的 。 A53 S5P6818   uboot是不开源的  不是三星出的 授权给nexell

A9是32位的,是V7架构的。  A9EXYNOS-4412

 

ARM体系结构和接口技术

理论:3 天

接口技术:4天  裸机操作

7个实验  

3点内容:体系结构  1.5天汇编指令集  

接口技术:通过软件编程控制硬件

硬件基本原理必须看懂。

看英文硬件手册。

1、串口 IIC  RTC  

MAX232把串口电平转换成TTL电平 PC电平

三极管  NPN PNP

NPN 高电平导通  0.7v >  小电流控制大电流 只要压差大于0.7v就导通了

PNP  低电平导通  0.7v   

三级缓存  cash   主存储器内存ram 掉电丢失   辅助存储器硬盘 rom  掉电不丢失 cpu不能直接访问

寻址空间  2的32次方 是4G  ,1G给内核, 3G给用户空间   所以实际是3G 还有一G给其他用处sfp

地址总线 控制总线  数据总线

CPU只要初始化  就不需要在管了

Contex-R  实时响应  中断  在汽车电子  相机上用的多

SC200 SC系列芯片

CISC 指令的长度和周期不固定 。  

RISC 指令少了,硬件就少了。功耗就少了。  指令的长度和周期是固定的长度

V7架构都是32位的,都是单周期指令  

V8架构 

User是非特权模式,其他的是特权模式

FIQ IRQ UNDEF ABORT SVC 是异常模式

System是非异常模式

复位才会进入 svc模式  软中断(一条指令来实现)或者复位

在特定的模式在,执行特定的代码。实现特定的功能。

公有的只有1个,私有的有多个。

Cortex -A9  有40个

A11  40-3=37个

一种模式下 少用17个   多用18个 寄存器

每个寄存器是 32位的  是没有地址的。 但是 有个编号  例如 r0 是0000   r5 0101  就是机器码

每个模式下 都有对应的栈,   

51单片机是从main开始, 但是前面还有一个启动代码。

r13  是sp  指向栈顶

R14  lr 是返回函数的入口地址,(main中去执行func,lr就是保存func的返回地址,这样func运行完毕就回到main中,向下执行。)

Mov pc lr

r15  pc  就是程序计数器  存储了当前取址指令的地址

控制器就是获取PC中的值,取的pc中的地址,  pc自动+4 ,会取出pc中的地址

例如在用户模式下,来了一个中断, cpsr就一个, 现在需要修改cpsr,如果没有保存的话,返回就出错了;

所以在用户模式下,来了一个中断,就需要保存cpsr,用spsr来保存,这样在中断中修改了cpsr,也没有问题,在返回用户模式,只要恢复,就可以了

N:负数=1  可以判断 两个数的大小

Z: 运算结果为0  就是1 ,否则为0

C: 加法 : 如果产生进位   C=1   否0  什么是进位?(超过32位, 低32位向高32位进)

减法: 如果产生借位,  C=0   否1   什么是借位? (低32位向高32位借) 不够减了

V:  符号位 发生变化  发生变化  就是1   否0    进位或者借位 就符号位发生了变化

A53  用到64位  模式  是 m[4]  m[3:0]   m4=1 就是32位  m4=0 就是64位

三级流水线

PC取址流水线   ---》 译码   -----》  执行

取址  译码   执行  是三个独立的硬件   是单周期的 

一条指令需要3个周期。  取址 译码  执行   3个周期

如果多个指令,好几百条指令,一起执行, 就变成单周期的 

指令1   指令2  指令3  指令4  指令5 

Pc

译码 pc

执行 译码 pc

执行 译码 pc

执行 译码 pc

执行 译码

执行

平均是 1个指令一个周期

Mov

mov

mov

Bl func 取址 译码 不执行 只有在执行的时候跳转 pv在下面2个周期了

mov Pc-4 保存当前的地址 lr  等func执行完毕就返回从这向下执行

mov Bl func执行的时候 pc在这里

Pc会跳转到 func中执行,func执行完毕后在回来,重新向下执行,

这样其实就浪费了2个周期的指令。

第二天

地址 机器码 汇编代码

把.bin文件反汇编成 汇编文件   .bin就是机器码   uboot就是包含调试信息的文件 uboot.bin就是二进制文件

Arm-linux-ld arm-linux-copy

 

<>是必须有的

{}是可有可无

 

Opcode 操作码  

<code> 条件码   默认什么都不加,就是无条件执行

s 就是状态位:  cpsr   加s就是影响  cpsr状态寄存器。  nzcv位  

 

Operand2  可以是一个寄存器,也可以是一个立即数  还有一个是经过移位的寄存器 左移 或者右移

 

汇编注释 :   汇编代码中的注释  @ 单行注释   多行注释  /**/

//数据操作指令

 

数据搬移指令   mov   mvn  mov操作立即数 用ldr就行了

Mov r0,#0x1    将0x1值放到 r0中去

没有第一个操作寄存器  只有第一个操作数

Mov r1,r0

将r0的结果放到r1里面去  有目标寄存器和第一个操作寄存器,和第一个操作数

Mov r0,#0xFFFF  @0xffff不是立即数,

 

例如:0xFF000000  能找到  0x000000FF     之后循环右移 8位变成了 0xFF000000  这样 0xFF00000就是立即数

4位 大16,需要/2 8位 大 255  8个1之内 

 

0xFF000000  存到低八位 0xFF    存到高4位  存的是移动的偶数个数/2 =8/2=4

 

立即数就是有效数, 

 

0x00001f80 可以展开  000111111000  7e   这样就变成了立即数

 

Mvn  r0,#0x1   r0=~0x1  取反之后给r0

Ldr    伪指令:  ldr   r0, =0xFFFF     =相当与赋值 多条指令来实现ldr的指令

周期比mov多一个

桶形移位器 ,移位操作指令

 

LSL  裸机左移, 无符号左移,

Mov r1,#0xff

Lsl r0,r1,#4      将r1中的值,左移4位,放到r0中。 高位移出,低位补0。

LSR  逻辑右移,无符号右移

Lsr r2,r0, #4 将r0中的值,右移4位,放到r2中。 低位移出,高位补0

 

ASR  算术右移     有符号的数

Asr  r3,r0,#4    将r0中的值,右移4位,放到r3中。 低位移出,高位补符号位

 

ROR  循环右移    

Ror   r4,r0,#4   

Mov  r5,r0 ,lsl #4    把r0左移4位 放到r5中去

 

错误   mov  r6,r0<<4   是不可以的

 

算术 运算指令    add  adc进位   sub   sbc借位   rsb  逆向    rsc带借位的逆向减法  mul乘法

普通 加法  add

Mov r1,#4

Add r0,r1,r2     add r0,r1,#3  === r2=r1+3=0x7

Add r2,r2,#3   r2=r2+3= 0x7+0x3=0xA  可以删掉一个

Add r2,#3  ==  add r2,r2,#3

 

Adc  带进位  一般是 64位 128位 96位

低32位就可以用add 

高32位 需要用到 adc

Mov r0,#FFFFFFE

Mov r1,#0x2

Mov r2,#0x3

Mov r3,#0x4

Adds r4,r0,r2     @r4=r0+r1=0x1  此时cpsr的c位是 1  //必须加上s位,否则不会影响cspr里的c标志位

Adc r5,r1,r3 @r5=r1+r3=0x7   2+4+进位=7  //不需要加s  如果是96位的话 需要加s

 

 

A-b   如果a是常数  就用逆向减法指令

 

 

 

Adds /adc    subs/sbc   rsbs/rsc  指令都是同时出现的

 

 

乘法指令  mul

Mul  r2, r0,r1    r2=r0*r1=0x6   //也可以合并去写  mul  r2,r1  

R1 不能是立即数   第二个操作数 也不能lsl 4  只能是一个寄存器  

 

 

逻辑运算指令  and 与  orr或   eor 异或 

Mov r1,0xff  

And r2,r1,#0xf   //目标寄存器   r2=r1& 0xF=0xF

 

或运算  orr

Orr  r3 ,r1,#0xF00  //r3=r1|0xff=oxfff

 

异或 eor

Eor  r4,r1 ,0xf0  // r4=0xf

 

 

位清除指令   bic     //用的比较多 给1 就清0

Mov r1,#0xff

Bic  r2,r1 ,#0xf    将0xff 的[3:0] 位清0

 

比较指令  cmp

Mov r1,#3

Cmp r1,#2   //没有目标寄存器     影响的 是cpsr的nzcv位  指令后面不需要加s条件。

比较大小用减法   用c来判断大小, 有c=1  就是没有借位,就是r1大 ,(=0才是有借位)

 

位测试指令  tst  测试某一位是否为1  //两个数与是0,z才会变1,用1去与,只有遇到0才会变1,所以

Mov r1, #0x10

Tst r1,#0x10

影响的是z   测试r1的第5位是否是1  是与运算,如果是1 ,那与出来就是1,不是0,表示r1的第5位为1,如果是0,与出来就是0,z位=1,表示第5位为0

是位与的

 

 

Teq 测试两个数是否相等

Mov  r1,#3

Teq  r1,#3    本质是 进行异或 运算     相同数为0    z=0

 

操作数必须为立即数   //都是看标志位的

Teq 异或,相同数异或为0, z=1

Tst  用1与0与, 与出来是0,z=1,表示不是1

Cmp 减法  用c来判断大小, c=1,表示没有借位,前面数大

 

 

逻辑:And 与 orr或  eor异或  //用另一个寄存器的来保存结果

移位:lsl lsr  asr ror

算术:add adc    sub sbc   rsb  rsc   mul//第二个操作数只能是寄存器

搬移:mov  mvn

立即数的本质是包含在指令当中的数,提升指令的效率

 

 

 

跳转指令 B  BL  //需不需要保存返回地址

Mov r0,#1

Mov r1,#2

B func    //不保存 跳转指令的下一条指令的地址到LR寄存器。

//本质: 修改pc值,  将pc的值跳转到func中

Add r2,r0,r1

B stop

 

Func:  //相当于c中的函数名

Mov r3, #3

Mov r4,#4

Add r5,r3,r4

 

Stop:

B stop

 

BL保存返回地址, 将下一条的指令地址保存到LR寄存器中

在函数内部  需要操作pc

Mov   pc,lr   这样就返回到之前运行的程序中(相对执行的指令 pc-8  lr-4  mov pv,lr 就是执行的指令下一条)

Bl 与mov pc,lr 一起用

 

32 28 27 24 23 0

31-28 code 24-27  b/bl

 

2的24次方 =16M   0-23映射的地址是24位的(是相对于pc的位置发生跳转)

但是pc的后2位是不用的,所以 可以给他用2的26次方 是64m ,起始就是套到pc上

但是可以上下跳  所以是  ±32M的地址

是相当于PC的位置发生跳转

 

Bl 是短跳转

Ldr pc ,=0xdddddd  实现长跳转指令

 

条件码的使用

 

条件码使用

Mov  r0 ,#3

Cmp r0,#2

Movhi r1,#0xf0

Movcc r2,#0x0f  //执行了一部分,条件发现不成立,就不执行后面的代码

 

.text

.global _start

 

_start:

 

mov r0,#9

mov r1,#15

 

loop:

cmp r0,r1

beq stop

subhi r0,r1

subcc r1,r0

b loop

 

stop:

b stop

.end

 

Load /store 指令

单寄存器操作指令  ldr 加载出来  str 存进去  loadregister   storeregister

Str r1,[r0]    【】表示把r0当作地址

Ldr r0,=0x20008000 给r0赋一个地址

Ldr r1,=0x13454553  

Str s1,[r0]   将r1中的值,存放到r0指向的地址空间中

Ldr r2,[r0]   将r0指向的地址空间中的值,读取出来,存放到r2中去

Debug 中

 绿色表示读  褐色表示写

Ldr是如何实现的  2 条指令周期

字节  和半字节内存操作指令   ldrb  /strb      ldrH  /  strh

索引方式

多寄存器操作指令   ldm   stm   mutli

StmIA  IA 表示对内存操作的方式   

4中方式  

 

Increment after    默认IA

Decvement before

 

先增加,地址先+4 ,在把值赋入+4的地址,  

先操作,地址+0, 把值赋值+0的地址中

前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号
返回

学员笔记

星创客 - 华清远见旗下高端IT培训品牌

当前位置: 星创客 > 学习资源 > 学员笔记 >

ARM体系结构和接口技术
来源: 星创客 作者: 星创客 时间:2018-02-02

A53是64位的 ,V8架构的 。 A53 S5P6818 uboot是不开源的 不是三星出的 授权给nexell A9是32位的,是V7架构的。 A9EXYNOS-4412 ARM体系结构和接口技术 理论:3 天 接口技术:4天 裸机操作 7个实验 3点内容:体系结构...

A53是64位的 ,V8架构的 。 A53 S5P6818   uboot是不开源的  不是三星出的 授权给nexell

A9是32位的,是V7架构的。  A9EXYNOS-4412

 

ARM体系结构和接口技术

理论:3 天

接口技术:4天  裸机操作

7个实验  

3点内容:体系结构  1.5天汇编指令集  

接口技术:通过软件编程控制硬件

硬件基本原理必须看懂。

看英文硬件手册。

1、串口 IIC  RTC  

MAX232把串口电平转换成TTL电平 PC电平

三极管  NPN PNP

NPN 高电平导通  0.7v >  小电流控制大电流 只要压差大于0.7v就导通了

PNP  低电平导通  0.7v   

三级缓存  cash   主存储器内存ram 掉电丢失   辅助存储器硬盘 rom  掉电不丢失 cpu不能直接访问

寻址空间  2的32次方 是4G  ,1G给内核, 3G给用户空间   所以实际是3G 还有一G给其他用处sfp

地址总线 控制总线  数据总线

CPU只要初始化  就不需要在管了

Contex-R  实时响应  中断  在汽车电子  相机上用的多

SC200 SC系列芯片

CISC 指令的长度和周期不固定 。  

RISC 指令少了,硬件就少了。功耗就少了。  指令的长度和周期是固定的长度

V7架构都是32位的,都是单周期指令  

V8架构 

User是非特权模式,其他的是特权模式

FIQ IRQ UNDEF ABORT SVC 是异常模式

System是非异常模式

复位才会进入 svc模式  软中断(一条指令来实现)或者复位

在特定的模式在,执行特定的代码。实现特定的功能。

公有的只有1个,私有的有多个。

Cortex -A9  有40个

A11  40-3=37个

一种模式下 少用17个   多用18个 寄存器

每个寄存器是 32位的  是没有地址的。 但是 有个编号  例如 r0 是0000   r5 0101  就是机器码

每个模式下 都有对应的栈,   

51单片机是从main开始, 但是前面还有一个启动代码。

r13  是sp  指向栈顶

R14  lr 是返回函数的入口地址,(main中去执行func,lr就是保存func的返回地址,这样func运行完毕就回到main中,向下执行。)

Mov pc lr

r15  pc  就是程序计数器  存储了当前取址指令的地址

控制器就是获取PC中的值,取的pc中的地址,  pc自动+4 ,会取出pc中的地址

例如在用户模式下,来了一个中断, cpsr就一个, 现在需要修改cpsr,如果没有保存的话,返回就出错了;

所以在用户模式下,来了一个中断,就需要保存cpsr,用spsr来保存,这样在中断中修改了cpsr,也没有问题,在返回用户模式,只要恢复,就可以了

N:负数=1  可以判断 两个数的大小

Z: 运算结果为0  就是1 ,否则为0

C: 加法 : 如果产生进位   C=1   否0  什么是进位?(超过32位, 低32位向高32位进)

减法: 如果产生借位,  C=0   否1   什么是借位? (低32位向高32位借) 不够减了

V:  符号位 发生变化  发生变化  就是1   否0    进位或者借位 就符号位发生了变化

A53  用到64位  模式  是 m[4]  m[3:0]   m4=1 就是32位  m4=0 就是64位

三级流水线

PC取址流水线   ---》 译码   -----》  执行

取址  译码   执行  是三个独立的硬件   是单周期的 

一条指令需要3个周期。  取址 译码  执行   3个周期

如果多个指令,好几百条指令,一起执行, 就变成单周期的 

指令1   指令2  指令3  指令4  指令5 

Pc

译码 pc

执行 译码 pc

执行 译码 pc

执行 译码 pc

执行 译码

执行

平均是 1个指令一个周期

Mov

mov

mov

Bl func 取址 译码 不执行 只有在执行的时候跳转 pv在下面2个周期了

mov Pc-4 保存当前的地址 lr  等func执行完毕就返回从这向下执行

mov Bl func执行的时候 pc在这里

Pc会跳转到 func中执行,func执行完毕后在回来,重新向下执行,

这样其实就浪费了2个周期的指令。

第二天

地址 机器码 汇编代码

把.bin文件反汇编成 汇编文件   .bin就是机器码   uboot就是包含调试信息的文件 uboot.bin就是二进制文件

Arm-linux-ld arm-linux-copy

 

<>是必须有的

{}是可有可无

 

Opcode 操作码  

<code> 条件码   默认什么都不加,就是无条件执行

s 就是状态位:  cpsr   加s就是影响  cpsr状态寄存器。  nzcv位  

 

Operand2  可以是一个寄存器,也可以是一个立即数  还有一个是经过移位的寄存器 左移 或者右移

 

汇编注释 :   汇编代码中的注释  @ 单行注释   多行注释  /**/

//数据操作指令

 

数据搬移指令   mov   mvn  mov操作立即数 用ldr就行了

Mov r0,#0x1    将0x1值放到 r0中去

没有第一个操作寄存器  只有第一个操作数

Mov r1,r0

将r0的结果放到r1里面去  有目标寄存器和第一个操作寄存器,和第一个操作数

Mov r0,#0xFFFF  @0xffff不是立即数,

 

例如:0xFF000000  能找到  0x000000FF     之后循环右移 8位变成了 0xFF000000  这样 0xFF00000就是立即数

4位 大16,需要/2 8位 大 255  8个1之内 

 

0xFF000000  存到低八位 0xFF    存到高4位  存的是移动的偶数个数/2 =8/2=4

 

立即数就是有效数, 

 

0x00001f80 可以展开  000111111000  7e   这样就变成了立即数

 

Mvn  r0,#0x1   r0=~0x1  取反之后给r0

Ldr    伪指令:  ldr   r0, =0xFFFF     =相当与赋值 多条指令来实现ldr的指令

周期比mov多一个

桶形移位器 ,移位操作指令

 

LSL  裸机左移, 无符号左移,

Mov r1,#0xff

Lsl r0,r1,#4      将r1中的值,左移4位,放到r0中。 高位移出,低位补0。

LSR  逻辑右移,无符号右移

Lsr r2,r0, #4 将r0中的值,右移4位,放到r2中。 低位移出,高位补0

 

ASR  算术右移     有符号的数

Asr  r3,r0,#4    将r0中的值,右移4位,放到r3中。 低位移出,高位补符号位

 

ROR  循环右移    

Ror   r4,r0,#4   

Mov  r5,r0 ,lsl #4    把r0左移4位 放到r5中去

 

错误   mov  r6,r0<<4   是不可以的

 

算术 运算指令    add  adc进位   sub   sbc借位   rsb  逆向    rsc带借位的逆向减法  mul乘法

普通 加法  add

Mov r1,#4

Add r0,r1,r2     add r0,r1,#3  === r2=r1+3=0x7

Add r2,r2,#3   r2=r2+3= 0x7+0x3=0xA  可以删掉一个

Add r2,#3  ==  add r2,r2,#3

 

Adc  带进位  一般是 64位 128位 96位

低32位就可以用add 

高32位 需要用到 adc

Mov r0,#FFFFFFE

Mov r1,#0x2

Mov r2,#0x3

Mov r3,#0x4

Adds r4,r0,r2     @r4=r0+r1=0x1  此时cpsr的c位是 1  //必须加上s位,否则不会影响cspr里的c标志位

Adc r5,r1,r3 @r5=r1+r3=0x7   2+4+进位=7  //不需要加s  如果是96位的话 需要加s

 

 

A-b   如果a是常数  就用逆向减法指令

 

 

 

Adds /adc    subs/sbc   rsbs/rsc  指令都是同时出现的

 

 

乘法指令  mul

Mul  r2, r0,r1    r2=r0*r1=0x6   //也可以合并去写  mul  r2,r1  

R1 不能是立即数   第二个操作数 也不能lsl 4  只能是一个寄存器  

 

 

逻辑运算指令  and 与  orr或   eor 异或 

Mov r1,0xff  

And r2,r1,#0xf   //目标寄存器   r2=r1& 0xF=0xF

 

或运算  orr

Orr  r3 ,r1,#0xF00  //r3=r1|0xff=oxfff

 

异或 eor

Eor  r4,r1 ,0xf0  // r4=0xf

 

 

位清除指令   bic     //用的比较多 给1 就清0

Mov r1,#0xff

Bic  r2,r1 ,#0xf    将0xff 的[3:0] 位清0

 

比较指令  cmp

Mov r1,#3

Cmp r1,#2   //没有目标寄存器     影响的 是cpsr的nzcv位  指令后面不需要加s条件。

比较大小用减法   用c来判断大小, 有c=1  就是没有借位,就是r1大 ,(=0才是有借位)

 

位测试指令  tst  测试某一位是否为1  //两个数与是0,z才会变1,用1去与,只有遇到0才会变1,所以

Mov r1, #0x10

Tst r1,#0x10

影响的是z   测试r1的第5位是否是1  是与运算,如果是1 ,那与出来就是1,不是0,表示r1的第5位为1,如果是0,与出来就是0,z位=1,表示第5位为0

是位与的

 

 

Teq 测试两个数是否相等

Mov  r1,#3

Teq  r1,#3    本质是 进行异或 运算     相同数为0    z=0

 

操作数必须为立即数   //都是看标志位的

Teq 异或,相同数异或为0, z=1

Tst  用1与0与, 与出来是0,z=1,表示不是1

Cmp 减法  用c来判断大小, c=1,表示没有借位,前面数大

 

 

逻辑:And 与 orr或  eor异或  //用另一个寄存器的来保存结果

移位:lsl lsr  asr ror

算术:add adc    sub sbc   rsb  rsc   mul//第二个操作数只能是寄存器

搬移:mov  mvn

立即数的本质是包含在指令当中的数,提升指令的效率

 

 

 

跳转指令 B  BL  //需不需要保存返回地址

Mov r0,#1

Mov r1,#2

B func    //不保存 跳转指令的下一条指令的地址到LR寄存器。

//本质: 修改pc值,  将pc的值跳转到func中

Add r2,r0,r1

B stop

 

Func:  //相当于c中的函数名

Mov r3, #3

Mov r4,#4

Add r5,r3,r4

 

Stop:

B stop

 

BL保存返回地址, 将下一条的指令地址保存到LR寄存器中

在函数内部  需要操作pc

Mov   pc,lr   这样就返回到之前运行的程序中(相对执行的指令 pc-8  lr-4  mov pv,lr 就是执行的指令下一条)

Bl 与mov pc,lr 一起用

 

32 28 27 24 23 0

31-28 code 24-27  b/bl

 

2的24次方 =16M   0-23映射的地址是24位的(是相对于pc的位置发生跳转)

但是pc的后2位是不用的,所以 可以给他用2的26次方 是64m ,起始就是套到pc上

但是可以上下跳  所以是  ±32M的地址

是相当于PC的位置发生跳转

 

Bl 是短跳转

Ldr pc ,=0xdddddd  实现长跳转指令

 

条件码的使用

 

条件码使用

Mov  r0 ,#3

Cmp r0,#2

Movhi r1,#0xf0

Movcc r2,#0x0f  //执行了一部分,条件发现不成立,就不执行后面的代码

 

.text

.global _start

 

_start:

 

mov r0,#9

mov r1,#15

 

loop:

cmp r0,r1

beq stop

subhi r0,r1

subcc r1,r0

b loop

 

stop:

b stop

.end

 

Load /store 指令

单寄存器操作指令  ldr 加载出来  str 存进去  loadregister   storeregister

Str r1,[r0]    【】表示把r0当作地址

Ldr r0,=0x20008000 给r0赋一个地址

Ldr r1,=0x13454553  

Str s1,[r0]   将r1中的值,存放到r0指向的地址空间中

Ldr r2,[r0]   将r0指向的地址空间中的值,读取出来,存放到r2中去

Debug 中

 绿色表示读  褐色表示写

Ldr是如何实现的  2 条指令周期

字节  和半字节内存操作指令   ldrb  /strb      ldrH  /  strh

索引方式

多寄存器操作指令   ldm   stm   mutli

StmIA  IA 表示对内存操作的方式   

4中方式  

 

Increment after    默认IA

Decvement before

 

先增加,地址先+4 ,在把值赋入+4的地址,  

先操作,地址+0, 把值赋值+0的地址中

相关推荐

全国咨询热线:400-611-6270

?2004-2018华清远见教育科技集团 版权所有 京ICP备16055225号 京公海网安备11010802025203号