您的位置 首页 电源

ARM数据处理指令

ARM的数据处理指令只访问寄存器,是ARM指令集中唯一可以修改数据值的指令。所有的操作数都是32位,结果也是32位,被放到寄存器中。寄存器传…

ARM数据处理指令只拜访寄存器,是ARM指令会集仅有能够修正数据值的指令。一切的操作数都是32位,成果也是32位,被放到寄存器中。

寄存器传送指令
移位指令
算术运算指令
逻辑运算指令
比较指令
乘法指令

1. 把握寄存器传送指令、算术运算指令,并了解标志位S的效果。
试验一:
依据提示信息完结程序并运转验证。(exp5_1_1.s)
AREA lab1,CODE,READONLY
ENTRY
START
MOV R0,#0x3F
MOV R1,#0x2C
MOV R2,#0x10
MOV R3,#0x5
;(1)核算R4=R0+R1
;(2)核算R5=R0-R1并更新标志位
;(3)核算R6=R1-R0并更新标志位
;(4)核算R7=R2+8*R3
STOP
B STOP
END

考虑题:
a) 在程序中履行
SUBS R4,R0,R1
SUBS R4,R1,R0
后,程序状况寄存器CPSR的标志位各有何改变?为什么?
b) 在程序中履行
SUB R4,R0,R1
SUB R4,R1,R0
后,程序状况寄存器CPSR的标志位各有何改变?为什么?


试验二:
编写ARM汇编程序。有两个128位数,榜首个数0x00000004000000c3000000b2000000a1由高到低存放在寄存器R7~R4中,第二个数0x00000008000000c7000000b6000000a5由高到低存放在寄存器R11~R8中,完结榜首个数和第二个数的相减,运算成果由高到低存放到寄存器R3~R0中。(exp5_1_5.s)

2. 把握乘法指令
试验六:依据提示信息完结程序并运转验证。(exp5_1_6.s)
AREA lab3,CODE,READONLY
ENTRY
START
MOV R0,#0x3F
MOV R1,#0x3D
MOV R2,#0xFF000000
MOV R3,#0x3FC0

;32位无符号乘法核算R0*R1,R4存成果
;32位无符号乘加核算R0*R1+R0,R5存成果
;32 位无符号乘法核算R2*R3,R6存成果
;64位无符号乘法核算R2*R3,R7存低32位,R8存高32位
STOP
B STOP
END

考虑题:
在上述程序中,履行句子
MUL R6,R2,R3
UMULL R7,R8,R2,R3
SMULL R9,R10,R2,R3
后,解析个寄存器的值。


3. 把握比较测验指令,懂得运用ARM指令的条件域来标示指令履行的条件。
试验三:
依据提示信息完结程序并运转验证。(exp)
AREA lab1,CODE,READONLY
ENTRY
START
MOV R0,#0xFF
;回转R0的0,1位,其他位坚持不变,存到R1中
;保存寄存器R0的0,1位,其他位清零,存到R1中
;比较寄存器R0和R1的值是否持平,并依据成果修正CPSR的标志位
MOV R0,#0xFB
;测验寄存器R0中的第2位是否为1,并依据成果修正CPSR的标志位(若是,跳转到START)
END

试验四:
编写简略的汇编语言程序,功用是核算1+2+3+。。。。+n的值,并把累加的成果存储到寄存器中。 (exp3_1_1)

4. 把握逻辑运算指令
试验五:
将0x3FC0的第4~11位用0xDD替换,变成0x3DD0。依据提示信息完结程序并运转验证。 (exp)
AREA lab2,CODE,READONLY
ENTRY
START
MOV R1,#0x3FC0
MOV R2,#0xFF0
MOV R3,#0xDD
;铲除R1=0x3FC0中对应的位,使其成为0x3000
;经过移位,将0x3DD0与要替换的位域对齐
;将对应方位写入意图操作数R1
STOP
B STOP
END

考虑:
在上述程序中,假如将0x3FC0替换为0xCFC0,应该怎么修正程序?

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/262743.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部