ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:452.50KB ,
资源ID:14567150      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14567150.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式程序复习Word文档格式.doc)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式程序复习Word文档格式.doc

1、传送CPSR的内容到R013MOV R2,R0 ;指令实现的功能是将寄存器R0的值传送到寄存器R2。14ADD R1,R1,#3 ;指令实现的功能是将R1+3的结果送R1是保存。15ADD R2,R1,R0 ; 指令实现的功能是将以R0中的内容为地址的单元中的值与R1相加,结果送R2保存。16LDR R1,R0+4 ; 指令实现的功能是将R0的内容加4后送R1。17LDR R1,R0+4!指令实现的功能是将R0的内容加4后送R1,然后R0的内容自增4个字节。18AND R0,R0,#3 ;该指令保持R0的0、1位,其余位清零。19B 0x1200 ;跳转到绝对地址0x1200处执行。20CMN

2、 R1,R2 ;指令实现的功能是将寄存器R1的值与寄存器R2的值相加,根据结果设置CPSR的标志位。1、 写一条 ARM 指令,完成操作r1 = r2 * 4MOV R1,R2,LSL #22. 写一条 ARM 指令,完成操作r1 = r2 * 3ADD R1,R2,R2,LSL #13. 初始值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=95. ADDR0

3、, R0, R0, LSL #2;执行结果R0=5*R0ADDR5, R3, R1, LSL #2;R5R3+R1*4SUB R1, R1, R2, LSR # 2 ;R1R1R24,因为R2右移2位相当于R2除以4。LSL # n ;逻辑左移n位(1n31),低端空位补0。LSR # n ;逻辑右移n位(1n32) ,高端空位补06 LDR R2,R3,#0x0C ;前变址, 传数前计算地址; 读取R30x0C地址上的存储单元的内容,放入R2。STR R1,R0,#4!; R04R1,R0=R04,符号“!”表明指令在完成数据传送后应该更新基址寄存器,否则不更新;属于回写前变址。LDR R0

4、,R1,#4 ;后变址: 先进行R1-R0操作然后R1+4-R1,操作完毕后,R1 = R1+4。不需要!号。7. 多寄存器寻址即是一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:LDMIA R1!,R2R7,R12;将R1指向的单元中的数据读出到R2R7、R12中(R1自动增加) LDMIAR0 !,R1,R2,R3,R4R1R0 R2R0+4 R3R0+8 R4R0+12STMIA R0!将寄存器R2R7、R12的值保存到R0指向的存储单元中, (R0自动增加),R1R7将R1R7的数据保存到存储器中。存储指针在保存第一个值之后增加,增

5、长方向为向上增长R0R1R0+4R2R0+8R3R0+12R4R0+16R5R0+20R6R0+24R7R0保持自动增值8. LDR R2,R3,#0x0C读取R30x0C地址上的一个字数据内容,放入R2。属前变址。参看教材第125页。R04R1,R0=R04,符号“!属回写前变址。LDR R1,R0,R3,LSL #1将R0R32地址上的存储单元的内容读出,存入R1。9 写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中。程序框架如下,补充代码完成上述功能。AREA total, CODE READONLYENTRYstartMOV r4, #0

6、ADR r0, myarray在此补充代码loopLDR r1, r0, #4ADDr4, r4, r1CMPr1, #0BNEloopstopB stopmyarrayDCD 0x11DCD0x22DCD 0x0END10并编写了如下的汇编程序:问:现执行上述程序,请列出R0,R1,R2的最终值,并告知整个程序的功能。R0=1R1=2R2=1功能:对R0和R1分别赋值0,1,在R1为5的条件下循环给R0赋值R0和R1之和,给R1加1,取得RESULT的地址赋值于R2,将R0的值保存在RESULT中11读如下程序test.s:test.c:请列出上述程序执行后R0,R1的值,并说明上述程序的作

7、用。R0=31R1=23test.c调用s_program函数,将54赋值R0,23赋值R1,两者相减后,赋值给R0,R0作为返回值赋值给num,然后输出num。12有如下C语言定义的函数myproint mypro(int a, int b)a=a*b;return (a);请补充完成调用上述函数的汇编程序,实现11与22相乘,并要求将结果保存在地址为0x40001000处:area test3, code, readonlyimport myproentrycode32start mov r0,#11 (1) mov r1,#22 (2) BL mypro (3) Ldr r3,=0x40

8、001000 (4) Str r0,r3 (5) END13程序段如下,实现下面流程图,试补充编写ARM汇编代码。程序段:MOV r2, #15MOV r3, #9补充代码B stop程序:Start: CMP r2,r3 SUBLT r3,r3,r2 SUBGT r2,r2,r3 BNE start14明指令STMIAr8!, r0-r7的操作功能。将R0-R7八个寄存器中的32位数据,存储到R8地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。15汇编程序调用C程序的方法为:首先在汇编程序中使用IMPORT伪指令事先声明将要调用的C语言函数;然后通过BL指令来调用C函

9、数。 (写出注释能把程序写出来,给出程序能将注释写出来)例如在一个C源文件中定义了如下求和函数:int prom(int x,int y) return(x&y);调用prom ()函数的汇编程序结构如下:IMPORT prom ;声明要调用的C函数MOV r0,1MOV r1,2BL prom ;调用C函数prom16 C程序调用汇编子程序的方法为:首先在汇编程序中使用EXPORT伪指令声明被调用的子程序,表示该子程序将在其他文件中被调用;然后在C程序中使用extern关键字声明要调用的汇编子程序为外部函数。例如在一个汇编源文件中定义了如下求和函数:EXPORT prom ;声明prom子程

10、序将被外部函数调用prom ;求与子程序prom AND r0,r0,r1 MOV pc,lr 在一个C程序的main()函数中对prom汇编子程序进行了调用:extern int prom (int x,int y); /声明prom为外部函数void main() int a=1,b=2,c; c= prom (a,b); /调用prom子程序综合编程1、教材第六章关于GPIO的应用,列举了一个I/O管脚控制4个LED发光二极管的例子,但我们实验箱所提供的LED发光二极管位于不同的引脚,它们分别使用 了S3C2410 的 GPC5,GPC6,GPC7,如下图,请修改原程序段以实现三个灯的交

11、替闪烁(注:未用引脚设置为input状态)。(写出注释能把程序写出来,给出程序能将注释写出来)博创经典版LED接线原理图相关寄存器定义:#define rGPCCON (*(volatile unsigned *)0x56000020) #define rGPCDAT (*(volatile unsigned *)0x56000024) #define rGPCUP (*(volatile unsigned *)0x56000028)端口初始化:void port_init(void) rGPCCON = 0x56aa; rGPCUP = 0xff; / GPF所有端口都不加上拉电阻所有LED交替亮灭:void led_on_off(void) int i; rGPCDAT=0; /所有LED全亮 for(i=0;i100000;i+); rGPCDAT=0xE0; /所有

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1