- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM指令汇编语言
ARM指令汇编语言
ARM指令集和汇编语言程序
姓名:何瑞平
学号:201120928
专业:电路与系统
本章主要介绍以下内容:
一、ARM寻址方式
包含9种:
立即数寻址
寄存器寻址
寄存器移位寻址
寄存器间接寻址
基址变址寻址
相对寻址
多寄存器寻址
块拷贝寻址
堆栈寻址
寻址空间 :51系列是16位地址总线,寻址空间为:215 。ARM系列为32位地址总线,寻址空间为:231
1.1立即数寻址
在立即数寻址中,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。
例:
ADD R0,R1,#5; R0=R1+5
MOV R0,#0x55; R0=0x55
其中:操作数5,0x55就是立即数,立即数在指令中要以“#”为前缀,后面跟实际数值。 十进制立即数表达举例:#0005、#01234;
十六进制立即数表达举例:#0x0005、#0x0FFFF;
1.2寄存器寻址
在寄存器寻址方式下,寄存器的值即为操作数,寄存器本身就是操作数地址。在51系列单片机中,可寻址的寄存器是当前工作寄存器R0~R7,A、B和DPTR。 在ARM系列的任一个模式,都有R0~R14、PC、CPSR。
例:
ADD R0,R1,R2 ; R0=R1+R2
MOV R0,R1
; R0=R1
1.3寄存器移位寻址
寄存器移位寻址是ARM特有的寻址方式,其操作数由寄存器的数值做相应移位而得到。 移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。
例:
ADD R0,R1,R2,ROR #5
;R0=R1+R2循环右移5位
MOV R0,R1,LSL R3
;R0=R1逻辑左移R3位
移位操作在ARM指令集中不作为单独的指令使用,ARM指令集共有5种位移操作。
1.4 ARM指令集的5种位移操作
1.4.1 LSL(Logical Shift Lef)逻辑左移 :
向左移位,左侧移出的位丢失;右端空出位补0;
31
注:最后一个左移出的位存放于状态寄存器CPSR的C位中。移出n位相当于乘以2的n次幂。
指令格式:Rx,LSL lt;op1gt;
举例:
R4,LSL#06 表明把R4的值逻辑左移6位,空位补0,把最后移出的位赋给程序状态寄存器CPSR的C位。
1.4.2 LSR(Logical Shift Right)逻辑右移 :
向右移位,右侧移出的位丢失;左端空出位补0;
310
注:最后一个右移出的位存放于状态寄存器CPSR的C位中。移出n位相当于除以2的n次幂。
指令格式:Rx,LSR lt;op1gt;
举例:
R5,LSR#02 表明把R5中的数据右移2位,空位补0,把最后移出的位赋给程序状态寄存器的c位。
1.4.3 ASR(Arithmetic Shift Right)算术右移 :
向右移位,移出的位丢失,最左端保持不变。
310
注:最后一个右移出的位存放于状态寄存器CPSR的C位中。这种移位对有符号数据使用时可保持符号位不变。
指令格式:Rx,ASR lt;op1gt;
举例:
R4,ASR#04 表明R4内数据向右移4位,符号位不变,最后移出的位也送入状态位C中。
1.4.4 ROR(Rotate Right)循环右移 :
向右移位,右端移出的位填充在左端空位处。
31
注:最后一个右移出的位同时存放于状态寄存器CPSR的C位中。
指令格式:Rx,ROR lt;op1gt;
举例:
R4,ROR#03 表明把R4内的数据向右移3位,移出的位填充到左端空位处,把最后一个右移出的位同时存放于状态寄存器的C位中。
1.4.5 RRX(Rotate Right extended By 1 Place)
带扩展的循环右移:
向右只移一位,左侧空位由状态寄存器C位填充,右侧移出的位移进位状态位C中
这种移位多用于多位数计算中。
指令格式:Rx,RRX
举例:
R2,RRX 表明R2内的数据向右移一位,把右侧移出的位送入
原创力文档


文档评论(0)