LEA参数错误

时间:2016-10-09 16:02:33

标签: assembly x86 x86-16

我写了这些文字:

num1 dw 7
num1_ptr dw 0
num1_ptr_ptr dw 0
lea num1_ptr, num1
lea num1_ptr_ptr, num1_ptr
mov bx, num1_ptr_ptr
mov bx, [bx]
mov ax, [bx]
call printNum ;printNum is 100% working. it prints the number in ax.

问题是编译器说两个lea指令有错误的参数。有谁知道为什么?

1 个答案:

答案 0 :(得分:2)

唯一可能的lea形式是

lea r16, mem
lea r32, mem
lea r64, mem

尽管是CISC,x86的mem-to-mem指令列表有限,lea mem, mem不在该列表中。

只需初始化数据即可摆脱 lea-nonsense

num1           dw 7
num1_ptr       dw num1
num1_ptr_ptr   dw num1_ptr

另外,如果要打印num1,则缺少一个取消引用。