嵌入式考试程序题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

stop
B stop
arithfunc
CMP r0, #num
MOVHS pc, lr
ADR r3, JumpTable
LDR pc, [r3,r0,LSL#2]
JumpTable
DCD (.WORD) DoA ;注意:使用 ADS 开发工具用伪指令 DCD
DCD (.WORD) DoS ;
使用 GNU 开发工具用伪指令.WORD
7、将内存中从 0x30000FFF 开始的 100 个字数据相加,其结果存于 R3、R2 中。 答:
LDR R0,=0X30000FFF MOV R2,#0 LDR R4,=0X3000118F LOOP LDR R1,[R0],#4 ADDS R2,R2,R1 ADC R3,R3,#0 CMP R0,R4 BNE LOOP
为 R4 右移两位相当于 R4 除以 4,所以综上所述:R2=R3-R4/4=4-4/4=4,R3 保持
不变 R3=4。
3、有如下程序段,画出程序流程图,并回答执行程序以后 R0 的值是多少。
num EQU 2
start
MOV r0, #1
Mபைடு நூலகம்V r1, #6
MOV r2, #3
BL
arithfunc
程序段: MOV r0, #15 MOV r1, #9
start ;补充代码
stop B stop END
答: 补写程序如下:
CMP r0,r1 SUBLT r1,r1,r0 SUBGT r0,r0,r1 BNE start
5、将存储器中 0x30000000 开始的 200 字节的数据,传送到地址从 0x10000000 开始的某接口电路的存储区域。
DoA
ADD r0, r1, r2
MOV pc, lr
DoS
SUB r0, r1, r2
MOV pc,lr
END
答:
R0 为 0 执行 DoA,R0 为 1 执行 DoS。
流程图如下:
开始
R0=0?

r0=r1-r2

r0=r1+r2
结束
运行结果:R0=5。 4、有程序段如下,实现下面流程图,试补充编写 ARM 汇编代码。
嵌入式考试程序题
一、 指令和程序测试题
1、写一条 ARM 指令,完成操作 r1 = r2 * 4
答:
MOV R1,R2,LSL #2
2、初始值 R2=5,R3=4,R4=3,执行指令 SUBS R2, R3,R4,LSR #2 后,寄
存器 R2,R3 的值分别是多少?
答:
SUBS R2, R3,R4,LSR #2 中 SUB 为减法指令、LSR 为右移指令符,LSR #2
答:
START LDR R0=0X30000000 LDR R1=0X10000000 MOV R4,#0 LKM LDRB R2,[R0],#1 STRB R2,[R1],#1 ADD R4,R4,#1 CMP R4,#200 BLNE LKM END 6、编写一简单 ARM 汇编程序段,实现 1+2+…+1000 的累加运算。 答: MOV R0,#0 MOV R1,#0 LKM ADD R0,R0,#1 ADD R1,R1,R0 CMP R0,#1000 BLNE LKM
8、编写一程序,查找存储器从 0x30000000 开始的 100 个字中为 0 的数目,将其结果存到 0x30000012 中。
答: LDR R0,=0X30000000 MOV R1,#0 MOV R2,#0 LDR R3,=0X30000012 LDR R4,=0X30000190
LOOP LDR R5,[R0],#4 CMP R5,R1 ADDEQ R2,R2,#1 CMP R0,R4 BNE LOOP STR R2,[R3]
9、R0 和 R1 中有两个 32 位无符号数,若 R0>R1,则 R0=R0-R1;若 R0<R1,则 R1=R1 -R0;若 R0=R1,则 R1、R0 保持不变。 答:
CMP R0,R1 SUBHS R0,R0,R1 SUBCC R1,R1,R0
相关文档
最新文档