Я изучаю сборку X86. Мне было интересно, как вы выступаете называть подпрограммой условно. Насколько я понимаю, прыжки на метку не работает, потому что адрес возврата не сохраняется и поэтому он не знает, где вернуться.
cmp bx, 0
jz zero ; how do I do this correctly ?
; do something else and exit
zero:
; do something
ret