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 ;后变址: