; Meaningless program that makes a few hops and then exits

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE IO.H        ; header file for input/output

              .DATA
jump_table	dword	label_one,
                    label_two,
                    label_three
prompt1 BYTE    "one", 0
prompt2 BYTE    "two", 0
prompt3 BYTE    "three", 0

.CODE
_start:
            mov ebx, sizeof( dword ) * 2
            jmp jump_table[ ebx ]       ; table offset must be index or base register
            ;
label_one:
            output  prompt1
            jmp quit_program            ; unconditional relative jump
            ;
label_two:
            output  prompt2
            jmp quit_program            ; unconditional relative jump
            ;
label_three:
            output  prompt3
            jmp quit_program            ; unconditional relative jump
            ;

quit_program:
            INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code