indexbase 0
sys a[9] = {10,20,30,40,50,60,70,80,90,100}
sys reg
lea esi,a
mov eax,[esi]
print eax
mov eax,[esi+4]
print eax
mov eax,[esi+8]
print eax
lea edi,a
mov eax,[edi]
print eax
mov eax,[edi+4]
print eax
mov eax,[edi+8]
print eax
I have not tried this but maybe the register esi is being used by the print statement and therefor left in an undefined state.
indexbase 0
dword a[9] = {10,20,30,40,50,60,70,80,90,100}
addr esi,a
mov eax,[esi]
print eax
mov eax,[esi+4]
print eax
mov eax,[esi+8]
print eax
mov eax,[esi+12]
print eax
mov eax,[esi+16]
print eax
mov eax,[esi+20]
print eax
Internal o2 functions treat the ESI and EDI registers as volatile (as with EAX, ECX, EDX)