Just for fun, and inspired by Steve's GW-BASIC thread, I made two new macros mimicking BASIC's ON someval GOTO 100, 200, 300 command (ecx is the index):
.code
p0:
deb 4, "P0", eax
retn
p1:
deb 4, "P1", eax
retn
...
g0:
deb 4, "G0", eax
jmp @back
g1:
deb 4, "G1", eax
jmp @back
...
For_ ecx=0 To 2
lea eax, [ecx+100] ; pass a value in eax
OnIndexCall ecx, p0, p1, p2
Next
For_ ecx=0 To 2
lea eax, [ecx+1000] ; pass a value in eax
OnIndexGoto ecx, g0, g1, g2
@back:
Next
Output:
P0 eax 100
P1 eax 101
P2 eax 102
G0 eax 1000
G1 eax 1001
G2 eax 1002
Source attached. ON ... GOTO ... is not the most beautiful command, but it can actually be handy.