打印
[程序源码]

GNU汇编基本语法

[复制链接]
1750|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一路向北lm|  楼主 | 2020-4-30 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GNU汇编指令格式如下:
  
label instruction  @comment
  
label: 即标号,表示地址位置,这样就可以通过这个标号得到指令的地址。
Instruction:即指令,可以是汇编指令和伪指令。

@符号,表示注释,comment就是注释内容。

使用特权

评论回复

相关帖子

沙发
一路向北lm|  楼主 | 2020-4-30 13:29 | 只看该作者
汇编程序的默认入口地址是_start,下面代码就是使用_start作为入口标号
.global _start

_start:
     ldr r0 = 0x12  @r0 = 0x12

使用特权

评论回复
板凳
一路向北lm|  楼主 | 2020-4-30 13:29 | 只看该作者
上面代码中的.global是伪操作,表示_start是一个全局标号,类似C语言里面的一个全局变量,常见的伪操作如下:
.byte   定义单字节数据:比如.byte  0x12
.short  定义双字节数据:比如.short  0x1234
.long   定义一个四字节数据:比如.long 0x12345678
.equ   赋值语句,格式为:.equ变量名,表达式,比如:.equ num ,0x12,表示 num=0x12
.align  数据字节对齐,比如:.align4表示4字节对齐
.end   表示源文件结束
.global  定义一个全局字符,格式为.global  symbol ,比如: .global  _start

使用特权

评论回复
地板
一路向北lm|  楼主 | 2020-4-30 13:30 | 只看该作者
常用汇编指令:

  
指令
  
目的
描述
  
MOV
  
R0
R1
R1里面的数据复制到R0
  
MRS
  
R0
CPSR
将特殊寄存器CPSR里面的数据复制到R0
  
MSR
  
CPSR
R1
R1里面的数据复制到特殊寄存器CPSR
  
LDR
  
LDR R0=0x0209C004
  
LDR R1,[R0]
LDR主要用于从存储加载数据到寄存器
  
STR
  
LDR R0=0x0209C004
  
LDR R1=0x00000001
  
STR R1,[R0]
STR将数据写到存储器中
  
PUSH
  
将寄存器列表存入栈中
  
POP
  
从栈中恢复寄存器列表
  
  
跳转
  
指令
  
B<label>
跳转到label
BX<Rm>
间接跳转,跳转到存放于Rm中的地址处
BL<label>
跳转到label处,并将返回地址保存到LR
BLX<Rm>
结合BLBX的特点,跳转到存放于Rm中的地址处,并将返回地址保存到LR


使用特权

评论回复
5
zwsam| | 2024-3-29 09:04 | 只看该作者
good

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

275

主题

3784

帖子

76

粉丝