Arrays 偏移量的操作数无效
假设我有这个数组:FOO字节1,2,3,4 我想用堆栈将数组传递给一个过程 我的问题是,如果我想传递的索引不是0(例如数组中的2),我可以执行以下操作:push OFFSET foo[1]。。。但这不起作用(编译错误):在eax为1的情况下推送偏移量foo[eax]Arrays 偏移量的操作数无效,arrays,assembly,x86,masm,Arrays,Assembly,X86,Masm,假设我有这个数组:FOO字节1,2,3,4 我想用堆栈将数组传递给一个过程 我的问题是,如果我想传递的索引不是0(例如数组中的2),我可以执行以下操作:push OFFSET foo[1]。。。但这不起作用(编译错误):在eax为1的情况下推送偏移量foo[eax] 括号中是否有寄存器工作,所以我不必使用常量?我希望索引根据用户输入进行更改,因为这样我就不必使用一系列if/else语句 首先使用某种形式的加法计算地址,然后将该值放在堆栈上。一种可能的解决办法: lea edx, [foo+eax
括号中是否有寄存器工作,所以我不必使用常量?我希望索引根据用户输入进行更改,因为这样我就不必使用一系列if/else语句 首先使用某种形式的加法计算地址,然后将该值放在堆栈上。一种可能的解决办法:
lea edx, [foo+eax]
push edx
其语法为:
push offset foo+2
请注意,添加到偏移量的立即数忽略了foo的数据类型(如果foo是DWORD,添加2总是添加2,没有任何缩放效果,这无关紧要)