segment .data switch: dq main.case0 dq main.case1 dq main.case2 dq main.case3 i: dq 2 segment .text global main extern scanf, scanf extern printf main: push rbp mov rbp, rsp sub rsp, 16 mov rax, [i] lea rdx, [switch] jmp [rdx+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