segment .data switch: dq main.case0 dq main.case1 dq main.case2 dq main.case3 i: dq 2 segment .text global main ; let the linker know about main main: push rbp mov rbp, rsp sub rsp, 32 mov rax, [i] jmp [switch+rax*8] .case0: mov rbx, 100 jmp .end .case1: mov rbx, 101 jmp .end .case2: mov rbx, 102 jmp .end .case3: mov rbx, 103 jmp .end .end: xor eax, eax leave ret