public static void Switch(X86Assembler m) { m.Proc("foo"); m.Push(m.cs); m.Pop(m.ds); m.Mov(m.bl, m.MemB(Registers.si, 0)); m.Cmp(m.bl, 0x02); m.Ja("default"); m.Label("test"); m.Xor(m.bh, m.bh); m.Add(m.bx, m.bx); m.Jmp(m.MemW(Registers.bx, "jmptable")); m.Label("jmptable"); m.Dw("one"); m.Dw("two"); m.Dw("three"); m.Label("one"); m.Mov(m.ax, 1); m.Ret(); m.Label("two"); m.Mov(m.ax, 2); m.Ret(); m.Label("three"); m.Mov(m.ax, 3); m.Ret(); m.Label("default"); m.Mov(m.ax, 0); m.Ret(); }