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寄存器值


inc 加1指令

dec 减1指令