网站大量收购闲置独家精品文档,联系QQ:2885784924

嵌入式系统概论--课堂练习.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一、指令运算

1、利用若干指令,完成以下计算

1)、求R4R3+R2R1,和放在R6R5中

ADDSR5,R3,R1

ADCSR6,R4,R2

2)、求R4R3-1,差放在R6R5中

SUBSR5,R3,#1

SBCR6,R4,#0

3)、求R4R3+1,和放在R6R5中

ADDSR5,R3,#1

ADCR6,R4,#0

4)、求R4R3-R2R1,差放在R6R5中

SUBSR5,R3,R1

SBCR6,R4,R2

2、写出以下ARM指令

1).将R0+0x12地址处的数据读出,保存到R1中

LDRR1,[R0,#0x12]

2).将R1中数据保存到R0+0x12地址处

STRR1,[R0,#0x12]

3).将R0-0x12地址处的数据读出,保存到R1中

LDRR1,[R0,-#0x12]

4).将R1中的数据保存到R0-0x12地址处

R1,[R0,-#0x12]

5).将R0+R2地址处的数据读出,保存到R1中

LDRR1,[R0,R2]

6).将R1中数据保存到R0+R2地址处

STRR1,[R0,R2]

7).将R0-R2地址处的数据读出,保存到R1中

LDRR1,[R0,-R2]

8).将R1中的数据保存到R0-R2地址处

STRR1,[R0,-R2]

3、写一条ARM指令,完成操作r1=r2*3

ADDR1,R2,R2,LSL#1

4、初始值R1=23H,R2=0FH执行指令BICR0,R1,R2,LSL#1后,寄存器R0,R1的值分别是多少?

R0=21H,R1=23H

二、指令操作

1.ARM7TDMI(-S)有几种寻址方式?LDRR1,[R0,#0x08]属于哪种寻址方式?

1.寄存器寻址

2.立即寻址;

3.寄存器移位寻址;

4.寄存器间接寻址;

5.基址加偏址寻址;

6.多寄存器寻址;

7.堆栈寻址;

8.块复制寻址;

9.相对寻址;

LDRR1,[R0,#0x08]属于基址加偏址寻址。

2.ARM指令的条件码有多少个?默认条件码是什么?

16条,默认条件码是AL。

3.ARM指令中第二个操作数有哪几种形式?举例5个8位图立即数。

(1)立即数;(2)寄存器;(3)寄存器及移位常数;

0x3FC(0xFF2)、0、0xF0000000(0xF024)、200(0xC8)、0xF0000001(0x1F28)

4.CMP指令的操作是什么?写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。

CMP指令将寄存器Rn的值减去operand2的值,

根据操作的结果更新CPSR中的相应条件标志位,

以便后面的指令根据相应的条件标志来判断是否执行。

CMPR1,#0x30

SUBHIR1,R1,#0x30

5.调用子程序是用B还是用BL指令?请写出返回子程序的指令?

BL指令用于子程序调用。

MOVPC,LR

6.请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么?

LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。第二个数为地址表达式。

7.将R0最后4位数据保留,并影响标志位

ANDSR0,R0,#0x0F

8.将R0的1,3,5位置1

ORRR0,R0,#0x2A

END;文件结束

5、用STMFD/LDMFD,MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算Xn的值。

原理:

Xn=X*X*………*X,其中相乘的X个数为n个,先将X的值装入R0和R1中,使用R2作计数器,循环次数n-1次R0=R0*R1,运算结果保存在R0中:

编程如下:

;MAINROUTINE

X EQU 9

n EQU 8

AREA MyPro,CODE,READONLY

ENTRY

CODE32

START

LDR SP,=0x40003F00

LDR R0,=X

LDR R1,=n

BL POW

HALT B HALT

;POWSUBROUTINE

;INPUTR0,R1

;OUTPUT R0

POW

STMFD SP!,{R1-R12,LR}

MOVS R2,R1

MOVEQ R0,#1

BEQ POW_END

MOV R1,R0

SUB R2,R2,#1

PO

文档评论(0)

songyj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档