IA-32 Assembly Language Reference Manual
Load Full Pointer (lds,les, lfs, lgs, and lss)
lds{wl} mem[32|48], reg[16|32]les{wl} mem[32|48], reg[16|32]lfs{wl} mem[32|48], reg[16|32]lgs{wl} mem[32|48], reg[16|32]lss{wl} mem[32|48], reg[16|32]
Operation
mem[32|48] -> reg[16|32]
Description
Reads a full pointer from memory and stores it in the specified segment register (DS, ES, FS, GS or SS) with a 16- or 32-bit offset value.
Example
Load a 16-bit pointer from memory location 0x44444444 into the DX register:
ldsw 0x44444444, %dx
Load a 32-bit pointer from memory location 0x33333333 into the EDX register:
ldsl 0x33333333, %edx
MOV指令
注意:GNU汇编器使用 AT&T 样式的语法,所以其中的源和目的操作数和 Intel 文档中给出的顺序是相反的。
GNU汇编器为 mov 指令添加了一个维度,在其中必须声明要传送的数据元素的长度,通过吧一个附加字符添加到 MOV 助记符来声明这个长度。因此,指令就变成了如下:
基本格式:
movx source, destination
source 和 destinatino 的值可以是内存地址,存储在内存中的数据值,指令语句中定义的数据值,或者是寄存器。
其中 x 可以是下面的字符:
1,l用于32位的长字值
2,w用于16位的字值
3,b用于8位的字节值
实例:
movl %eax, %ebx #把32位的EAX寄存器值传送给32为的EBX寄存器值
movw %ax, %bx #把32位的EAX寄存器值传送给32为的EBX寄存器值
movb %al, %lx #把32位的EAX寄存器值传送给32为的EBX寄存器值