首页 > 编程知识 正文

linux怎么编译汇编(汇编程序常用指令表)

时间:2023-05-05 23:39:44 阅读:65772 作者:4016

相对跳转指令: b、bl

除了bl转移外,还将返回值(bl的下一个指令的地址)保存在lr寄存器中

数据传输指令: mov地址读出虚拟指令: ldr

自由体操

mov r1,r2 //r1=r2

mov r1,#4096 //r1=4096

ldr

ldr r1,=4097 //r1=4097

存储器访问指令: ldr、str、ldm、stm

ldr指令将数据从存储器读取到寄存器,str指令将寄存器的值存储在存储器中,这些数据都是32位

将ldr r、[r2,#4] //地址r2 4的存储单元数据读出到r1

将ldr r、[r2] //地址为r2存储单元数据读出到r1

将ldr r、[r2]、#4 //地址为r2的存储单元数据读取到r1中,设为r2=r2 4

将r1的数据保存在str r、[r2,#4] //地址r2 4的存储单元中

将str r、[r2] //的数据保存到地址r2的存储器单元中

在str r、[r2]、#4 //地址r2的存储单元中保存r1的数据,设为r2=r2 4

ldm和stm是可以用一条指令读写多个数据的批量存储器访问命令,命令格式如下。

ldm {cond} {! } {^}

stm {cond} {! } {^}

{cond} :指令执行条件

:地址变化模式,包括4种模式

()后验增量方式

(ib )预增量方式

da :事后递减方式

数据库:预递减方式

{! ()将内存保存到地址。 如果在后面加上感叹号,则在执行指令后,rn的值将更新,等于下一个存储器单元的地址

:针对ldm,显示了从对应的存储器中取出数据并写入这些寄存器的寄存器列表; 在stm的情况下,将这些寄存器

的值被写入相应的存储器块

{^} :中有pc寄存器时,表示执行指令后,spsr寄存器的值自动复制到cpsr寄存器——中

这经常用于从中断函数返回; 中没有pc寄存器时,{^}表示正在操作用户模式的寄存器,而不是当前的

特权模式寄存器

加减指令: add、sub

添加

add r1、r2、#1 //r1=r2 1

子子

sub r1、r2、#1 //r1=r2 - 1

对程序状态寄存器的访问指令:msr、mrs

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。