汇编常用语法

  1. GNU汇编语句

    复制代码
    [lable:] instruction [@comment]

    lable 表示标号,表示地址位置,可选.

    instruction即指令,也就是汇编指令或伪指令。

    comment 就是注释内容。

  2. 用户使用.section 伪操作来定义一个段,汇编系统预定义了一些段名:

.text :代码段,只读的代码信息。

.data :初始化的数据段,初始化的全局变量和局部静态变量。

.bss :未初始化的数据段,未初始化的全局变量和局部静态变量,使用动态的变量来初始化。

.rodata :只读数据段,const修饰的static 变量都,以及一些字面量。

我们当然可以自己使用.section 来定义一个段,每个段以段名开始,以下一段名或者文件结尾结束,比如:

复制代码
.section .section_name @定义了一个testsection段。

3. 伪指令 :对会汇编过程进行控制的代码,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编陈旭提供汇编信息。相当于c语言关键字,**汇编代码种全大写的很可能是伪指令,**或者宏。

(1)伪指令只会存在汇编语言中,在其他代码中叫语句。

(2)伪指令,不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。

例如,.global,.byte, .section都是伪指令

  1. 汇编中的函数定义:
复制代码
函数名:
    函数体
    返回语句

5. 常见的指令:
处理器(cpu)内部数据传输指令:
指令 目的 描述
mov R0 R1 将R1复制到R0
MRS R0 CPSR 将特殊寄存器CPSR里面的数据复制到R0中
MSR CPSR R1 将R1里面的数据复制到特殊寄存器CPSR中

存储器访问指令:外设寄存器属于存储器的一种,

指令 描述
LDR Rd, [Rn, #offset] 从存储器Rn+offset的位置读取数据存放到Rd中。
STR Rd, [Rn, #offset] 将Rd中的数据写入到存储器中的Rn+offset位置。

压栈和出栈指令:

指令 描述
PUSH <req list> 将寄存器列表存入栈中。
POP <req list> 从栈中恢复寄存器列表。

跳转指令:

(1)直接跳转指令B,BL,BX等

(2)直接向PC寄存器里面写入数据。

算术运算指令:

ADD, ADC (带进位),SUB(减法),MUL(乘法),UDIV(无符号除法),SDIV(有符号除法)

逻辑运算指令:与或非异或。

相关推荐
tingshuo291713 小时前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
starlaky6 天前
Django入门笔记
笔记·django
勇气要爆发6 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发6 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
qianshanxue116 天前
计算机操作的一些笔记标题
笔记
土拨鼠烧电路6 天前
笔记11:数据中台:不是数据仓库,是业务能力复用的引擎
数据仓库·笔记
土拨鼠烧电路6 天前
笔记14:集成与架构:连接孤岛,构建敏捷响应能力
笔记·架构
烟花落o6 天前
栈和队列的知识点及代码
开发语言·数据结构·笔记·栈和队列·编程学习