汇编之伪操作

文章目录

段定义伪操作

z80 复制代码
.text		告诉编译器后续内容放入代码段
.data	 告诉编译器后续内容放入数据段
.bss	 告诉编译器后续内容放入BSS段

指令集类型标识伪操作

z80 复制代码
.arm
.code 32  后续指令汇编为32bit的机器指令
.thumb
.code 16 	后续指令汇编为16bit的机器指令

数据定义伪操作

z80 复制代码
.byte 20 	分配一字节空间存储数字20
.short 0x11ff 	分配两字节空间存储0x11ff
.word 0x22222222 	分配4字节空间存储0x22222222 效果等同于.int
.space 1024 	分配1024字节内存空间 初始化为0
.string "abcdef" 	分配7个字节空间存储"abcdef" + \0, 等价于.asciz
.ascii "abcdef" 	分配6个字节空间存储"abcdef"

符号声明伪操作

z80 复制代码
.global _start 将一个符号声明为全局的,这样其它模块可以引用该符号 等价与.globl
.extern _start 将一个符号声明为外部定义的

汇编控制伪操作

  • 等价于c中的#if 0
z80 复制代码
.if 0
  add r0, r1,r2
.else
  sub r0, r1, r2
.endif

常量定义伪操作

z80 复制代码
.equ MAX, 100

宏定义伪操作

z80 复制代码
@.macro 宏名称,参数1, 参数2
.macro swap, x, y
eor \x, \x,\y
eor \y, \x,\y
eor \x, \x,\y
.endm @宏定义结束

mov r0, #100
mov r1, #200
swap r0, r1 @使用宏

标号的声明

z80 复制代码
.global 将一个符号声明为全局的
.extern 将一个符号声明为外部的
  • 练习:汇编编程实现strcmp的逻辑
z80 复制代码
.text
.global _start
_start:
  ldr r0, =str1
  ldr r1, =str2
loop:
  ldrb r2, [r0], #1
  ldrb r3, [r1], #1
  cmp r2, #0
  beq cmp_end
  cmp r2, r3
  beq loop
cmp_end:
  sub r0, r2, r3
  b .

str1:
  .string "abcf"
str2:
  .string "abcd"

.end
相关推荐
斑马1392 天前
ARM学习笔记(二)——ARM汇编基础
汇编·arm开发·arm
wechatbot8882 天前
【极客互动】企业微信Spring Boot 调度 SearchContact开发自动添加外部联系人网关
汇编·微信·自动化·企业微信·rpa
星栖与芯3 天前
LiteOS-M 切换汇编逐行图解(5):HalPendSV 任务切换的现场搬运(五阶段逐行)
汇编·stm32·嵌入式硬件·harmonyos
星栖与芯3 天前
LiteOS-M 切换汇编逐行图解(4):中断三件套与 HalTaskSchedule 触发
汇编·stm32·单片机·嵌入式硬件·harmonyos
xx~t4 天前
嵌入式——ARM——汇编2
linux·汇编·arm开发·嵌入式硬件·启动代码
祖力554 天前
ARM汇编LED实验
汇编·arm·imx6ull
索端阳5 天前
ARM Day02 学习总结:ARM汇编基础核心知识点梳理
汇编·学习·arm
xx~t5 天前
嵌入式——ARM——汇编1
linux·汇编·arm开发·嵌入式硬件·arm
索端阳6 天前
初识 ARM Cortex-A7,嵌入式底层入门总结
汇编·嵌入式硬件
ThornArmor7 天前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机