- 1、本文档共51页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM体系结构与编程---第二章教程
第2章 ARM指令分类及寻址方式;第2章 目录;第2章 目录;ARM指令的分类;2.1 ARM指令的一般格式;2.1 ARM指令的一般格式; ARM指令的基本书写格式如下:;操作码;2.1 ARM指令的一般格式;2.1 ARM指令的一般格式;对应的错误汇编代码:
CMP R0,#10
ADDNE R0,R0,R1
CMPEQ R1,#20
ADDNE R0,R0,R1 ;2.1 ARM指令的一般格式;2.2 ARM处理器寻址方式; ARM指令的基本书写格式如下:;2.2 ARM处理器寻址方式;先介绍 :#immediate——立即数
MOV R0,#0;R0=0在数据处理指令中,规定这个立即数必须是一个8bit的常数通过循环右移偶数位得到。;合法的立即数(参见教材25页图) ;判断合法立即数的方法;练习;0x8000 0010 0x108 循环右移4位得到0x8000 0010
0001 0000 1000
取0x42循环右移30位可以得到0x108
0100 0010
那么,0x42循环右移34位可以得到0x8000 0010
也就是0x42循环右移两位就可得到0x8000 0010。
0x8000 0010 为合法立即数
0x2000 0010 0x102 循环右移4位得到0x2000 0010
0001 0000 0010
取0x81循环右移31位可以得到0x102,移位为奇数,则0x102非法。
那么0x2000 0010 为非法。;立即数(2);ARM汇编编译器按照下面的规则来生成立即数编码:
当立即数数值在0—0xff范围内时,令immediate=immed_8, rotate_imm=0
其它情况下,汇编编译器选择rotate_imm数值最小的编码方法。;装载32 bit常数; 操作数的值存放在寄存器中,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:
MOV R1,R2 ;将R2的值存入R1
SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 ;
可以采取的移位操作如下:
LSL:逻辑左移(Logical Shift Left)
LSR:逻辑右移(Logical Shift Right)
ASR:算术右移(Arithmetic Shift Right)
ROR:循环右移(ROtate Right)
RRX:扩展为1的循环右移(Rotate Right eXtended by 1 place )
;LSL逻辑左移:右侧用0填充,最后移出位入C;2.2 ARM处理器寻址方式;2.2 ARM处理器寻址方式;Load指令用于从存储器(包括内存和外存)中读取数据加载到寄存器中; Store指令用于将寄存器的数据保存到存储器。
各种类型的Load/Store指令中寻找的地址由两部分组成:
1〉基址寄存器:一般使用通用寄存器
2〉地址偏移量:立即数、寄存器、寄存器及一个移位常数。
需要的地址=基址寄存器+地址偏移量
; 寄存器移位寻址是ARM指令集特有的寻址方式。; 变址寻址就是将基址寄存器中的地址与指令中给出的偏移量相加/减,形成有效地址。变址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器(与通用寄存器R0-R12不同)访问等。;LDR 指令的语法格式如下:(访问的数据的地址 )
LDR{cond}{B}{T} Rd,address_mode;T后缀,在特权模式下对存储器的访问,将被存储器看成是用户模式(即非特权)的访问,操作的寄存器也是用户模式下的。(destination目的地)(书上34页*,35页*);偏移量方法
LDR R0,[R1,R2,LSL #2];R0←[R1+R2*4],R1不变
事先更新基址(前索引)(前变址)
操作之前,先改变基址寄存器。
LDR R0,[R1,R2,LSL #2]!
;R0←[R1+R2*4] ,更新R1为R1+R2*4
事后更新基址(后索引)(后变址)
操作之后,再改变基址寄存器。
LDR R0,[R1] ,R2,LSL #2;R0←[R1],更新R1为R1+R2*4;Pre or Post Indexed store寻址;I=0,立即数偏移
I=1,寄存器偏移
P=1,偏移量/前索引
P=0,后索引
U=1,加偏移
U=0,减偏移
W=1,后缀有! 回写基址寄存器
W=0,后缀无!不回写基址寄存器;2.2 ARM处理器寻址方式;2.2 ARM处理器寻址方式;批量L
您可能关注的文档
- ANSA基本操作教程.ppt
- 5册书法教案.doc
- ANSYS中单元类型的选择教程.doc
- ansys教程完整教程.ppt
- Android-手机操作系统课件1121教程.ppt
- 5、先进模范人物的涌现ppt..ppt
- Ansys基础培训1-5-几何建模-建模方法和技巧_50教程.ppt
- ANSYS网格划分(强烈推荐)教程.ppt
- 5号楼竣工验收总结 - -.doc
- AOP的实现机制教程.doc
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
文档评论(0)