我写了这些文字:
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指令有错误的参数。有谁知道为什么?
答案 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
,则缺少一个取消引用。