还几个星期就考试啦~~~~~~~
求高手帮做模拟题,回答得特别好的朋友,一定加分,百分百结贴.
三、 程序设计题(共52分)
1. 简述以下汇编程序的功能,程序中两个sp寄存器是相同的物理寄存器吗?为什么?(5分)
mrs r0,cpsr mrs r0,cpsr
bic r0,r0,#0x1f bic r0,r0,#0x1f
orr r1,r0,#0x1b|0xc0 orr r1,r0,#0x17|0xc0
msr cpsr_cxsf,r1 msr cpsr_cxsf,r1
ldr sp,=UndefStack ldr sp,=AbortStack
2. 如下程序有什么作用?为什么可以实现该作用?(5分)
HandleUndef:
b HandleUndef
HandleSWI:
b HandleSWI
HandlePrefetchAbort:
b HandlePrefetchAbort
HandleDataAbort:
b HandleDataAbort
HandleNotUsed:
b HandleNotUsed
HandleIRQ:
b HandleIRQ
HandleFIQ:
b HandleFIQ
3. 解释下面程序段的含义。(8分)
mov r1, #0 (1)
ldr r2, =SDRAM_BASE (2)
mov r3, #4*1024 (3)
1: ldr r4, [r1],#4 (4)
str r4, [r2],#4 (5)
cmp r1, r3 (6)
bne 1 (7)
mov pc, lr (8)
5. 试述ucos中OSRdyGrp、OSRdyTbl和OSUnMapTbl的功能,并利用它们编写ucos选择最高优先级进程的程序。试构造OSUnMapTbl数组。(12分)
6. 将以下C语言编写的程序用ARM汇编语言重写。(14分)
int func (int a,int b,intc, int,d,int e,int f)
{
return a+b+c+d+e+f;
}
int caller(void)
{
return func (1,2,3,4,5,6);
}
再次感谢。
------解决方案--------------------------------------------------------
1\不是同一個物理寄存器,是不同模式下的SP
------解决方案--------------------------------------------------------
2. 跳转到相应地址处理异常.
------解决方案--------------------------------------------------------
2、各段相当于while(1)吧,因为都是跳到当前地址,与汇编中的b .相同
------解决方案--------------------------------------------------------
5 可以参考邵贝贝的UCOSII中文手册..
------解决方案--------------------------------------------------------
mov r1, #0 ;R1赋值 0
ldr r2, =SDRAM_BASE ;R2 装入 内存基址
mov r3, #4*1024 ;R3 装入 循环次数
1: ldr r4, [r1],#4 ;这个是寄存器变址寻址,先将[R1]的值赋给R4,然后 R1+4
str r4, [r2],#4 (5) ;将R4值赋给 [R2],然后R2+4,同样也是寄存器变值寻址
cmp r1, r3 (6) ;比较R1 R3,
bne 1 (7) ;小于R3则跳转到标号 1
mov pc, lr (8) ;程序返回
总结:这段小程序的作用,应该是将 SDRAM_BASE 至 SDRAM_BASE+4*1024 的内存清零
------解决方案--------------------------------------------------------
顶一个