1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM基础语法By:陈殷齐ARM工作模式:ARM寄存器:CPSR寄存器:基本指令格式:opcode{cond}{s} Rd,Rn,{oprand2}Opcode:助记符Cond:条件码S:影响标志位Oprand2:第二操作数,必须为常数表达式或#immed_8r(通过循环右移偶数位可得的8位数)寻址方式:寄存器寻址:数据存放在寄存器中MOV R1,R2;(将R2的数据存放到R1中)SUB R1,R2,R3;(将R2-R3装入R1中)立即数寻址:数据包含在指令中MOV R0,#0XFF;(将OXFF装入R0中)SUB R0,R1,#1;(R1-1装入R0中)寄存器移位寻址:MOV R0,R2,LSL,#3;(将R2左移3位装入R0中)寄存器间接寻址:寄存器给出操作数地址码(基址)LDR R2,[R1];(将R1所存地址中的操作数装入R2)基址加偏址(前变址模式/不改基址的寄存器值):基址加偏址:LDR R1,[R3,#0X0C];(R3+OX0C的地址里操作数加载到R1)偏置为寄存器:LDR R1,[R2,R3];(R3+R2的地址里操作数加载到R1)加上位移操作:LDR R1,[R2,R3,LSL,#2];(R3左移2位加上R2的地址加载到R1)后索引方式(改变基址值)LDR R0,[R1],#4;(R1地址的操作数装入R1之后,R1=R1加4)自动变址:LDR R0,[R1,#2]! (R1+2后的地址值里的操作数装入R0,R1=R1+2)LDR R0,[R1];将R1所存地址里的操作数装载到R0。STR R0,[R1];将R0所存操作数加载到R1地址里的单元。[]不能省略。多寄存器操作:寄存器和内存交换指令:运算指令:跳转指令:(分支指令)BX 由寄存器的最后一位决定使用Thumb还是ARM指令。(1为Thumb)例 BX R1,into+1;跳转到into并切换为Thumb指令Label为标号,或地址。(start,0psr指CPSR,SPSR.SWI在用户模式时跳转来切换到特权模式。进入管理模式后再中断向量表找到immed_24地址所指向的中断程序。用户模式下只可读控制域和状态域,用MSR也不可以修改。(既不能改变状态域来切换模式,特权模式下可以)用户模式下可对标志位进行修改。T位所有模式都不可修改,只有用BX可修改。伪指令:ADR:将基于PC或寄存器的相对偏移的地址值读取到寄存器。LDR:将数值直接装入。NOP:空指令。伪操作符:填充伪操作符:APTCS协议:在汇编中调用C语言:在C语言中调用汇编程序:.global Factorial内嵌汇编:

文档评论(0)

有一二三 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档