IA-32 Assembly Language Reference Manual

时间:2021-12-11 03:14:57

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指令