ARM嵌入式系统结构与编程习题答案 清华大学出版社 最详细版

内容发布更新时间 : 2025/6/19 22:50:11星期一 下面是文章的全部内容请认真阅读。

11

LDRSB指令的二进制编码格式:

LDRB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用零扩展。

LDRSB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用符号位扩展。

4.分析下列每条语句的功能,并确定程序段所实现的操作。 CMP R0,,0 MOVEQ R1,,0 MOVGT R1,,1

答:CMP R0,,0 ;比较R0与0的大小

MOVEQ R1,,0 ;若R0==0,则R1=0 MOVGT R1,,1 ;若R0>0,则R1=1

5.请使用多种方法实现将字数据0xFFFFFFFF送入寄存器R0 答:1)MVN R0,#0 2)MOV R0,#1

RSB R0,R0,#0

6.写一条ARM指令,分别完成下列操作: (1)R0=16 (2)R0=R1/16 (3)R1=R2*3 (4)R0=-R0 答:

(1)R0=16 MOV R0,#16 (2)R0=R1/16 MOV R0,R1,LSR #4 (3)R1=R2*3 MOV R3,#3 MUL R1,R2,R3 (4)R0=-R0 RSB R0,R0,#0

7.编写一个ARM汇编程序,累加一个队列中的所有元素,碰到0时停止。结果放入R4。 答:假设队列为地址从R0开始递增的字队列: LOOP

LDR R1, [R0,#4]! MOVS R2, R1 BEQ END

11

12

ADD R4,R4,R2 B LOOP

END

8.写出实现下列操作的ARM指令:

当Z=1时,将存储器地址为R1的字数据读入寄存器R0. 当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0 将存储器地址为R1-4的字数据读入寄存器R0。

将存储器地址为R1+R6的字数据读入寄存器R0,并将新地址R1+R6写入R1。 答:1)LDREQ R0, [R1] 2)LDREQ R0, [R1,R2] 3)LDR R0, [R1,#-4] 4)LDR R0, [R1,R6]!

9.写出下列ARM指令所实现的操作: LDR R2,[R3,#-4]! LDR R0,[R0],R2 LDR R1,[R3,R2,LSL #2]! LDRSB R0,[R2,#-2]! STRB R1,[R2,,0xA0] LDMIA R0,{R1,R2,R8}

STMDB R0!,{R1-R5,R10,R11} 答:LDR R2,[R3,#-4]! ;R2<-[R3-4], R3=R3-4

LDR R0,[R0],R2 ;R0<-[R0], R0=R0+R2 LDR R1,[R3,R2,LSL #2]! ;R1<-[R3+R2*4], R3=R3+R2*4 LDRSB R0,[R2,#-2]!

;R0低8位<-[R2-2]字节数据,,R0高24位符号扩展,R2=R2-2 STRB R1,[R2,#0xA0] R1低8位->【R2+0xA0】 LDMIA R0,{R1,R2,R8}

从地址R0开始的内存中依次读取字数据,送入寄存器R1,R2,R8 STMDB R0!,{R1-R5,R10,R11}

将寄存器R11,R10,R5-R1的字数据,依次写入地址R0中,每次写入前R0=R0-4

10.SWP指令的优势是什么?

答:SWP指令支持原子操作,它能在一条指令中完成存储器和寄存器之间的数据交换。

11. 如何用带PSR操作的批量字数据加载指

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi