Hi Peter,
Thanks for the new rand function.
Oxygen does not support this operand expression [m+esi+8].
This is because variable addresses are not translated into absolute constants.
Local variables are referenced to the EBP register for example: [ebp-32] and static/global variables use the EBX register, starting with [ebx+4096].
So I suggest doing this:
lea edx,m
movzx eax,[edx+edi+5]
If you want to print register values in the middle of an asm sequence then stack the registers first. Print uses several registers so you need to save the register content to a variable before printing.
pushad
mov a,eax
print a
popad
the ebx and ebp registers must be preserved whenever basic is used
Charles