鉴于我有这个数组:FOO BYTE 1,2,3,4
而且,我想将一个数组传递给使用堆栈的过程。
我的问题是,如果我想传递非0的索引(例如我的数组中的2)我可以执行以下操作:push OFFSET foo [1] ...但这不起作用(编译错误) :推出OFFSET foo [eax],eax为1.
是否有任何寄存器在括号中工作,所以我不必使用常量?我希望索引根据用户输入进行更改,因为那时我不必使用一系列if / else语句。
答案 0 :(得分:0)
首先使用某种形式的加法计算地址,然后将该值放在堆栈上。一种可能的解决方案:
lea edx, [foo+eax]
push edx
答案 1 :(得分:0)
这个的语法是:
push offset foo+2
请注意,添加到偏移的立即数忽略了foo的数据类型(如果foo是DWORD则不重要,添加2总是加2,没有任何缩放效果)。