最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

嵌入式程序复习

IT圈 admin 63浏览 0评论

2024年3月30日发(作者:祭语海)

一、写出下列各条指令的执行含义。

1.ADD R0,R0,#1 ;指令实现的功能是将R0+1的结果送R0是保存。

2.ADD R0,R1,[R2] ; 指令实现的功能是将以R2中的内容为地址的单元

中的值和R1相加,结果送R0保存。

3.LDR R0,[R1+4] ; 指令实现的功能是将R1的内容加4后送R0。

4.LDR R0,[R1+4]! ;指令实现的功能是将R1的内容加4后送R0,然后

R1的内容自增4个字节。

5.B Lable ;程序无条件跳转到标号Lable处执行。

MOV R1,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R1。

7.CMP R1,R0 ; 指令实现的功能是寄存器R1的值和寄存器R0的值相减,根

据结果设置CPSR的标志位。

8.CMN R1,R0 ;指令实现的功能是将寄存器R1的值和寄存器R0的值相加,

根据结果设置CPSR的标志位。

9.ORR R0,R0,#3 ;该指令设置R0的0、1位,其余位保持不变。

10.MRS R0,SPSR ;传送SPSR的内容到R0。

11.CMP R1,R2 ; 指令实现的功能是寄存器R1的值和寄存器R2的值相减,

根据结果设置CPSR的标志位。

12.MRS R0,CPSR ;传送CPSR的内容到R0

13.MOV R2,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R2。

14.ADD R1,R1,#3 ;指令实现的功能是将R1+3的结果送R1是保存。

15.ADD R2,R1,[R0] ; 指令实现的功能是将以R0中的内容为地址的单元

中的值和R1相加,结果送R2保存。

16.LDR R1,[R0+4] ; 指令实现的功能是将R0的内容加4后送R1。

17.LDR R1,[R0+4]! ;指令实现的功能是将R0的内容加4后送R1,然后

R0的内容自增4个字节。

18.AND R0,R0,#3 ;该指令保持R0的0、1位,其余位清零。

1 / 17

19.B 0x1200 ;跳转到绝对地址0x1200处执行。

20.CMN R1,R2 ;指令实现的功能是将寄存器R1的值和寄存器R2的值相加,

根据结果设置CPSR的标志位。

1、写一条 ARM 指令,完成操作r1 = r2 * 4

MOV R1,R2,LSL #2

2. 写一条 ARM 指令,完成操作r1 = r2 * 3

ADD R1,R2,R2,LSL #1

3. 初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #1后,寄存器

R0,R1的值分别是多少?

R0=21H,R1=23H

4. 初始值R2=5,R3=9,R4=3,执行指令SUBS R2, R3,R4,LSR #2后,寄

存器R2,R3的值分别是多少?

R2=9,R3=9

5. ADD R0, R0, R0, LSL #2 ;执行结果R0=5*R0

ADD R5, R3, R1, LSL #2 ;R5←R3+R1*4

SUB R1, R1, R2, LSR # 2 ;R1=R1-R2÷4,因为R2右移2位相当于R2除以4。

LSL # n ;逻辑左移n位(1≤n≤31),低端空位补0。

LSR # n ;逻辑右移n位(1≤n≤32) ,高端空位补0

6. LDR R2,[R3,#0x0C] ;前变址, 传数前计算地址

; 读取R3+0x0C地址上的存储单元的内容,放入R2。

STR R1,[R0,#-4]!

; [R0-4]←[R1],R0=R0-4,符号“!”表明指令在完成数据传送后应该更新基址寄存器,否则

不更新;属于回写前变址。

LDR R0,[R1],#4 ;后变址:

2024年3月30日发(作者:祭语海)

一、写出下列各条指令的执行含义。

1.ADD R0,R0,#1 ;指令实现的功能是将R0+1的结果送R0是保存。

2.ADD R0,R1,[R2] ; 指令实现的功能是将以R2中的内容为地址的单元

中的值和R1相加,结果送R0保存。

3.LDR R0,[R1+4] ; 指令实现的功能是将R1的内容加4后送R0。

4.LDR R0,[R1+4]! ;指令实现的功能是将R1的内容加4后送R0,然后

R1的内容自增4个字节。

5.B Lable ;程序无条件跳转到标号Lable处执行。

MOV R1,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R1。

7.CMP R1,R0 ; 指令实现的功能是寄存器R1的值和寄存器R0的值相减,根

据结果设置CPSR的标志位。

8.CMN R1,R0 ;指令实现的功能是将寄存器R1的值和寄存器R0的值相加,

根据结果设置CPSR的标志位。

9.ORR R0,R0,#3 ;该指令设置R0的0、1位,其余位保持不变。

10.MRS R0,SPSR ;传送SPSR的内容到R0。

11.CMP R1,R2 ; 指令实现的功能是寄存器R1的值和寄存器R2的值相减,

根据结果设置CPSR的标志位。

12.MRS R0,CPSR ;传送CPSR的内容到R0

13.MOV R2,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R2。

14.ADD R1,R1,#3 ;指令实现的功能是将R1+3的结果送R1是保存。

15.ADD R2,R1,[R0] ; 指令实现的功能是将以R0中的内容为地址的单元

中的值和R1相加,结果送R2保存。

16.LDR R1,[R0+4] ; 指令实现的功能是将R0的内容加4后送R1。

17.LDR R1,[R0+4]! ;指令实现的功能是将R0的内容加4后送R1,然后

R0的内容自增4个字节。

18.AND R0,R0,#3 ;该指令保持R0的0、1位,其余位清零。

1 / 17

19.B 0x1200 ;跳转到绝对地址0x1200处执行。

20.CMN R1,R2 ;指令实现的功能是将寄存器R1的值和寄存器R2的值相加,

根据结果设置CPSR的标志位。

1、写一条 ARM 指令,完成操作r1 = r2 * 4

MOV R1,R2,LSL #2

2. 写一条 ARM 指令,完成操作r1 = r2 * 3

ADD R1,R2,R2,LSL #1

3. 初始值R1=23H,R2=0FH执行指令BIC R0, R1,R2,LSL #1后,寄存器

R0,R1的值分别是多少?

R0=21H,R1=23H

4. 初始值R2=5,R3=9,R4=3,执行指令SUBS R2, R3,R4,LSR #2后,寄

存器R2,R3的值分别是多少?

R2=9,R3=9

5. ADD R0, R0, R0, LSL #2 ;执行结果R0=5*R0

ADD R5, R3, R1, LSL #2 ;R5←R3+R1*4

SUB R1, R1, R2, LSR # 2 ;R1=R1-R2÷4,因为R2右移2位相当于R2除以4。

LSL # n ;逻辑左移n位(1≤n≤31),低端空位补0。

LSR # n ;逻辑右移n位(1≤n≤32) ,高端空位补0

6. LDR R2,[R3,#0x0C] ;前变址, 传数前计算地址

; 读取R3+0x0C地址上的存储单元的内容,放入R2。

STR R1,[R0,#-4]!

; [R0-4]←[R1],R0=R0-4,符号“!”表明指令在完成数据传送后应该更新基址寄存器,否则

不更新;属于回写前变址。

LDR R0,[R1],#4 ;后变址:

发布评论

评论列表 (0)

  1. 暂无评论