Данная конструкция работает в точности так же (так же неправильно) как switch в Си, в котором в case-ах ошибочно отсутствуют директивы break - выполнение идет через все кейсы, расположенные ниже.
Как сделать аналог break в данном случае, уже сказано (jmp на новую метку в самом конце).
Программа на языке ассемблера выполняется буквально сверху вниз, без каких-либо отклонений. Любое ветвление (в данном случае - обход ненужного кода) должно быть заданно явно инструкциями управления выполнением (jmp, jxx, call. ret, int).