主要的汇编指令有哪些?

 我来答
太平洋科技
优质机构答主

2023-01-06 · 百度认证:广东太平洋互联网信息服务有限公司官方账号,优质数码...
太平洋科技
太平洋电脑网通过分析、评测生活及工作中各类消费品,让消费者客观了解产品性能及安全状况,帮助用户做出理性购买选择。同时科普各领域产品知识,解答用户选购及使用中所遇问题。
向TA提问
展开全部
LDR 和STR——用于字和无符号字节\x0d\x0a指令格式:\x0d\x0aLDR/STR{cond}{T} Rd,<地址>\x0d\x0aLDR/STR{cond}B{T} Rd,<地址> \x0d\x0a\x0d\x0aLDR{cond}{T} Rd,<地址> 加载指定地址的字数据到Rd中;\x0d\x0aSTR{cond}{T} Rd,<地址> 存储Rd中的字数据到指定的地址单元中;\x0d\x0aLDR{cond}B{T} Rd,<地址> 指令加载指定地址的字节数据到Rd的的最低字节中(Rd的高24位清零);\x0d\x0aSTR{cond}B{T} Rd, <地址> 指令存储Rd中的最低字节数据到指定的地址单元中。\x0d\x0a T为可选后缀,若有T,那么即使处理器是在特权模式下,存储系统也将访问看成处理器是在用户模式下,T 在用户模式下无效,不能与前索引偏移一起使用T。\x0d\x0a\x0d\x0a地址部分可用的形式有4种: \x0d\x0a\x0d\x0a零偏移(zero offset) [Rn] ,Rn的值作为传送数据的地址。如: \x0d\x0aLDR R0,[R1]; \x0d\x0a前索引偏移(pre-indexed offset) [Rn,Flexoffset]{!} 在数据传送之前,将偏移量Flexoffset加到Rn 中。其结果作为传送数据的存储器地址。若使用后缀“!”,则结果写回到Rn 中,且Rn 不允许是R15,如: \x0d\x0aLDRB R0,[R1,#8]\x0d\x0aLDR R0,[R1,#8]! \x0d\x0a程序相对偏移(program relative) label(label 必须是在当前指令的土4KB 范围内) 。 \x0d\x0a程序相对偏移是前索引形式的另一种版本。从PC 计算偏移量,并将PC 作为Rn 生成前索引指令,不能使用后缀“!”,如: \x0d\x0aLDR R0,place ;\x0d\x0aplace地址装入R0 \x0d\x0a后索引偏移(post-indexed offset) [Rn],Flexoffset。在数据传送后,将偏移量Flexoffset 加到Rn 中,结果写回到Rn,Rn 不允许是R15,如: \x0d\x0aLDR R0,[R1],R2,LSL#2 ;\x0d\x0a将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。\x0d\x0a偏移量Flexoffset可以是下两种形式之:\x0d\x0a1) 取值范围是-4095 到+4095 的整数的表达式,经常是数字常量,如:\x0d\x0aSTR R5,[R7],#--8 \x0d\x0a2) 一个寄存器再加上移位(移位由立即数指定),如:\x0d\x0a{-}Rm{,shift} \x0d\x0a其中: \x0d\x0a- :可选负号。若带符号“一”,则从Rn 中减去偏移量。否则,将偏移量加到Rn 中。\x0d\x0aRm :内含偏移量的寄存器。Rm 不允许是R15。 \x0d\x0aShift:Rm 的可选移位方法。可以是下列形式的任何一种: \x0d\x0aASR n :算术右移n 位(1<=n<=32) \x0d\x0aLSL n :逻辑左移n 位(1<=n<=31) \x0d\x0aLSR n :逻辑右移n 位(1<=n<=32) \x0d\x0aROR n :循环右移n 位(1<=n<=31) \x0d\x0aRRX :循环右移1 位,带扩展。\x0d\x0aAND—————逻辑”与”操作指令\x0d\x0a指令格式:\x0d\x0a\x0d\x0aAND{cond}{S} Rd,Rn,operand2 \x0d\x0aAND指令将操作数operand2 与Rn 的值按位逻辑”与”,结果存放到目的寄存器Rd 中。若设置S,则根据运算结果影响N、Z位,在计算第二操作数时,更新C位,不影响V位(指令ORR、EOR、BIC 对标志位的影响同AND 指令)。\x0d\x0a指令示例:\x0d\x0aANDS R1,R1,R2 ;R1=R1&R2,并根据运算的结果更新标志位\x0d\x0aAND R0,R0,#0x0F ;R0=R0&0x0F,取出R0最低4位数据。\x0d\x0a\x0d\x0aORR—————逻辑”或”操作指令\x0d\x0a指令格式:ORR{cond}{S} Rd,Rn,operand2 ORR指令将操作数operand2 与Rn 的值按位逻辑”或”,结果存放到目的寄存器Rd 中。指令示例: \x0d\x0aORRS R1,R1,R2 ;R1=R1|R2,并根据运算的结果更新标志位\x0d\x0aORR R0,R0,#0x0F ;R0=R0|0x0F,将R0最低4位置1,其余位不变。 \x0d\x0a\x0d\x0aBIC—————位清除指令\x0d\x0a指令格式:\x0d\x0aBIC{cond}{S} Rd,Rn,operand2 \x0d\x0aBIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。\x0d\x0a\x0d\x0aCMP—————比较指令 \x0d\x0a指令格式:\x0d\x0aCMP{cond} Rn,operand2 \x0d\x0aCMP指令用Rn的值减去操作数operand2 ,并将结果的状态(Rn 与operand2比较是大、小、相等)反映在CPSR中,以便后面的指令根据条件标志决定程序的走向。CMP指令与SUBS指令完成的操作一样,只是CMP指令只减,不存结果。 \x0d\x0a指令示例: \x0d\x0acmp R0,R1 ;比较R0,R1 \x0d\x0abeq stop ;R0=R1跳到stop\x0d\x0ablt less ;R0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式