ARM的数据操作指令
实验目的
熟悉使用ADS开发环境。
通过实验掌握ARM数据操作指令的使用方法。
实验设备
硬件:PC机。
软件:ADS集成开发环境,Windows 2000/XP/2003。
实验原理
ARM指令集——ARM数据处理指令
数据处理指令大致可分为3类:
数据传送指令;(MOV,MVN)
算术逻辑运算指令;(ADD,SUB,RSB,ADC,BIC)
比较指令(CMD,CMN,TST,TEQ)。
数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。
实验内容
数据传送指令
1. 选择合适的传送指令,传送下例立即数到寄存器R3.(MOV;MVN)
2. 黄色底的是本人写的成功代码,绿色底是ADS编译器翻译的代码
0x00110000 MOV R3, #0X00110000 MOV R3, #0X110000
0x00001040 MOV R3, #0X00001040 MOV R3, #0X1040
0xffffff00 MVN R3, #0X000000FF MVN R3, #0XFF
0x00001880 MOV R3, #0X00001880 MOV R3, #0X1880
0xff77ffff MVN R3, #0X00880000 MVN R3, #0X880000
0xffffefbf MVN R3, #0X00001040 MVN R3, #0X1040
3. ADS编译器会根据传送的立即数有效的“1”之前的N个零给忽略掉;
4. ADS编译器会根据传送的值较大立即数,首先将其转换成合法的8位立即数,再转
换成功后把指令同时变成MVN
算术运算
1. 写出一个64位加法,64位减法实例.(数据自设)
2. 写出几个逆向减法实例.
逻辑运算
1. R1=0x78120023 高4位清零.
答案:
MOV R0,#0X78000000
ADD R0,R0,#0X120000
ADD R0,R0,#0X23
BIC R0,R0,#0XF0000000
2. 寄存器R8=0x1234ffcc的12位到20位置1.
答案:
MOV R8,#0X12000000
ADD R8,R8,#0X340000
ADD R8,R8,#0Xff00
ADD R8,R8,#0XCC
MOV R7,#0X00100000
ADD R7,R7,#0XFF000
ORR R8,R8,R7
3. 寄存器R3=0x6c005600,取出16-17位的值.
答案:
MOV R3,#0X6C000000
ADD R3,R3,#0X5600
AND R3,R3,#0X30000
比较运算
1. 写出一个64位比较实例.(数据自设)
2.所有比较指令写出两个实例.(数据自设,查看CPSR中标识位如何改变.)
因篇幅问题不能全部显示,请点此查看更多更全内容