2025年ARM常用汇编指令

ARM常用汇编指令目录 一 汇编基本语法 1 汇编指令的最典型书写模式 二 常用汇编指令 1 push 压栈指令 2 pop 出栈指令 3 sub 指令 4 add 指令 5 movs 数据传输指令 6 str 指令 7 ldr 指令 8 bl 指令 9 MOVW 指令 10 MOVT 指令 三 代码分析 1 代码段 1 一

大家好,我是讯享网,很高兴认识大家。

目录

一、汇编基本语法

1、汇编指令的最典型书写模式

二、常用汇编指令

1、push压栈指令

2、pop出栈指令

3、sub指令

4、add指令

5、movs数据传输指令

6、str指令

7、ldr指令

8、bl指令

9、MOVW指令

10、MOVT指令

三、代码分析

1、代码段1


一、汇编基本语法

1、汇编指令的最典型书写模式

操作数:一般跟在操作码后面,一个操作码后可以跟多个操作数。

注释:;是注释符号 类似C语言的 “//” 和 “/*” 。

二、常用汇编指令

1、push压栈指令

把若干寄存器的值压入堆栈中。

示例:

push    {r7};将寄存器R7的值压入栈中。


讯享网

push    {r7, lr};将寄存器R7和LR的值压入栈中。

2、pop出栈指令

从堆栈中弹出若干的寄存器的值。

示例:

pop     {r7}; 将栈顶的值弹出到R7寄存器中。

pop     {r7, pc};将栈顶的两个值弹出到R7和PC寄存器中。

3、sub指令

减法指令。有以下多种用法:

SUB Rd, Rn              ;同C语言 Rd -= Rn; //Rd减去Rn并将结果保存到Rd。
SUB Rd, Rn, #imm3 ;同C语言 Rd = Rn-imm3; //Rn减去立即数imm3并将结果保存到Rd。
SUB Rd, #imm8        ;同C语言 Rd -= imm8; //Rd减去立即数imm8并将结果保存到Rd。
SUB Rd, Rn, Rm       ;同C语言 Rd = Rn-Rm; //Rn减去Rm并将结果保存到Rd。

示例:

sub     sp, sp, #16; sp寄存器中的值减去立即数16,将结果赋值到sp寄存器中。表示栈向下生长。

4、add指令

加法指令。有以下多种用法:

ADD Rd, Rn, Rm ;同C语言 Rd = Rn+Rm;Rn加上Rm并将结果保存到Rd。
ADD Rd, Rm        ;同C语言 Rd += Rm;Rd加上Rm并将结果保存到Rd。
ADD Rd, #imm     ;同C语言 Rd += imm;Rd加上立即数imm并将结果保存到Rd。

示例:

add     r7, sp, #0;  sp寄存器的值加零,将结果保存到寄存器R7。

5、movs数据传输指令

movs r0, #10;将立即数10保存到寄存器R0。

6、str指令

把一个寄存器按字存储到存储器中。把CPU内部寄存器的数据写出到外部RAM等存储器。

STR R0,[R1,#12] ;将R0中的字数据写入以R1+12为地址的存储器中。

7、ldr指令

从存储器读取数据到寄存器中。从RAM等存储器读取数据到CPU的寄存器中。

ldr     r2, [r7, #12]; 从以R1+12为地址的存储器中读取数据到R2寄存器。

8、bl指令

转移并连接。用于呼叫一个子程序,返回地址被存储在 LR 中。对应C语言的函数调用。

BL Putc;调用值程序Putc,Putc为子程序的入口地址。

9、MOVW指令

将16位立即数传送到寄存器的低半字[15:0]中,并将高半字[31:16]清零。

10、MOVT指令

将16位立即数传送到寄存器的高半字[31:16]中。

三、代码分析

1、代码段1

 int a = 0; int b = 1; int c = a + b;

讯享网

小讯
上一篇 2025-02-16 17:36
下一篇 2025-03-12 19:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70237.html