lea & movzx & 取值
lea
lea指令用来取得一个内容的内存地址,跟mov类似,但lea只取地址而不碰值 用法:
section .data data: dq "abcdefgh"
section .text.start: lea rsi, data
取得data的内存地址,在x86_64此处使用mov更佳
取值
section .data data: dw "ab"
section .text.start: mov si, WORD [data]
[]是取值,可以加上指定的大小,并且mov需要两边相同长度
将data的地址取一个WORD大小的值放入相同大小的si寄存器
有个例外是[]在lea当作括号使用而不取值,在lea可以做[data + rcx * 8]
的操作
movzx
将来源以零填充到与目标相同长度再做mov
```asmsection .data data: dw "ab"
section .text.start: movzx esi, WORD [data]
将0x6261填充成0x00006261再移动到esi,此作法优于前者仅使用si