as语法和嵌入汇编

本文介绍了as汇编语言的宏、汇编命令、符号和标签,以及AT&T和Intel两种语法格式的区别。此外,还详细讲解了嵌入式汇编的语法,包括输入寄存器、输出寄存器的使用,以及x86处理器的寄存器限制。通过示例展示了如何在C程序中使用嵌入汇编,强调了在嵌入式汇编中引用寄存器的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

as语法:

——————宏

像C语言一样,as也支持宏。但是,汇编程序中所包含的头文件不能包含C语言中的函数,数据结构等内容,而只能定义常量,汇编指令等汇编器认识的内容

宏的存在说明as在编译时存在预处理这一步骤,但是需要注意,如果所写的汇编代码中包含宏指令的话,则一定要将源文件的后缀名使用大写的S,否则as会报告说它不认识#这条指令。


——————汇编命令

汇编命令都是以“.”开头的,用于指示as如何处理我们所写的汇编代码。比如.globl命令使得跟在其后的符号在文件之外可见,或则从C语言的及哦啊杜来看,类似于定义全局函数。.align命令时告诉as后面的代码的存放地址必须满足4字节边界对齐要求。

as支持大量的汇编命令,这些命令都可以从官方手册《Using as》中找到。在这些汇编命令中有几个值得在此一提。第一批包括.text和.data命令,它们指示将其后的内容放入指定段;第二批是.lcomm和.comm,它们指示将其后的内容放入程序的.bss段中。


——————符号和标签

符号或许是程序中非常核心的概念,我们通过符号去表达变量和命令函数。

as的符号可以由字母,“.”和“_”组成,对于有的处理器还可以使用“$”

符号后面如果加上一个“:”就成了标签,标签中的符号(即去掉:)其实代表程序运行时再内存中的一个具体地址。从这一点来看,符号是有值的。标签与C语言中的函数是对等的。(其中的符号对应于C语言中的函数名)。


——————汇编指令

不同的处理器具有不同的指令集。不论是AT&T语法还是Intel语法,as都支持。可以通过.att_syntax和.intel_syntax汇编命令来切换指令格式

——————————————————————————————————————————————————

差异点                                                            AT&T语法格式                                                                 Intel语法格式

寄存器操作数的表达                            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值