Given I have this array: FOO BYTE 1,2,3,4

And, I want to pass an an array to a procedure using the stack. 

My question is if I want to pass at index that is not 0 (for example the 2 in my array) I can do the following: push OFFSET foo[1]... but this does not work (compile error): push OFFSET foo[eax] with eax being 1. 

Does any register work in the brackets, so I don't have to use a constant? I want the index to change based on user input, because then I would not have to use a series of if/else statements.