AT&T汇编

参考资料:内联汇编资料

语法构成

AT&T汇编语言是由两部分构成:操作码和操作数

在AT&T中,寄存器前面要加上"%", 而在立即数前面需要加上"$", 在AT&T中,十六进制立即数前面需要加上"0x",

立即数 

立即数是一个常量,可以写成十六进制(H),十进制(D),八进制(O),二进制(B)

例如:addl 0xFFH, %eax

立即数只能作为源操作数,不能放在目的操作数位置

寄存器操作数 

 寄存器操作数指操作数放在寄存器中,用来存放参加运算的数据或存放运算结果。

其中的寄存器包括段寄存器,控制寄存器,通用寄存器

段寄存器 (DS,SS,ES)

段寄存器是存放段地址的,要将段地址送入,必须以通用寄存器为中间桥梁,即通过通用寄存器将数据传送到DS,SS,ES段寄存器中

eg:将段地址:20000H送数据段寄存器中

movl 0x20000,%eax
movl %eax,DS

 通过通用寄存器传送,不能直接将立即数传送到段寄存器中。为代码段CS不准用户干预,是由系统分配的

控制寄存器

控制寄存器包括:指令指针寄存器IP,EIP和标志寄存器FLAGS,控制寄存器也不能直接传送操作数

通用寄存器 

通用寄存器可以装操作数 

内存操作数 

内存操作数是指操作数存放在内存中,其操作是往内存中写数或从内存中取操作数,CPU与内存打交道是通过内存地址完成的

eg:

movl 0x20000,%eax
movl %eax,(0x20000)

 注意:

1.对于单操作数指令:操作数只能是寄存器操作数和内存操作数

2.对于双操作数指令:源操作数可以是寄存器操作数,内存操作数和立即数,目的操作数可     以是寄存器操作数和内存操作数。源操作数,目的操纵数,不能同时为内存操作数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值