Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 偏移量的操作数无效_Arrays_Assembly_X86_Masm - Fatal编程技术网

Arrays 偏移量的操作数无效

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

假设我有这个数组:FOO字节1,2,3,4

我想用堆栈将数组传递给一个过程

我的问题是,如果我想传递的索引不是0(例如数组中的2),我可以执行以下操作:push OFFSET foo[1]。。。但这不起作用(编译错误):在eax为1的情况下推送偏移量foo[eax]


括号中是否有寄存器工作,所以我不必使用常量?我希望索引根据用户输入进行更改,因为这样我就不必使用一系列if/else语句

首先使用某种形式的加法计算地址,然后将该值放在堆栈上。一种可能的解决办法:

lea edx, [foo+eax]
push edx

其语法为:

        push    offset foo+2
请注意,添加到偏移量的立即数忽略了foo的数据类型(如果foo是DWORD,添加2总是添加2,没有任何缩放效果,这无关紧要)