CALL and RET shouldn't be too difficult to implement. you'd have to make a call stack.
also - is there any reason you're restricting yourself to x86-style opcodes and registers if it's not real assembly? i mean, if i were you, i'd use something like r0-r15 for registers.. one of the problems with x86 assembly is the sheer lack of general-purpose registers, and it doesn't really make much sense to limit yourself, especially in a scripting language, when you need speed and can't afford to be shifting registers around all the time.
just my 2 cents :)
also - is there any reason you're restricting yourself to x86-style opcodes and registers if it's not real assembly? i mean, if i were you, i'd use something like r0-r15 for registers.. one of the problems with x86 assembly is the sheer lack of general-purpose registers, and it doesn't really make much sense to limit yourself, especially in a scripting language, when you need speed and can't afford to be shifting registers around all the time.
just my 2 cents :)