Тогда аргумент должен быть указателем. Аргументы передаются по значению, на их изменения после вызова вызывающая функция по стандарту не смотрит (ну разве что ты её тоже на ассемблере напишешь).
Блин, никак не мог уложить в голове почему по jnz есть переход когда zf=0 а по jz наоборот переход когда zf=1 если их везде расшифровывают как jump if not zero и jump if zero а на самом деле я думаю разработчики имели ввиду jnz- jump if not zero flag set т.е 0 и jz -jump if zero flag set т.е 1 тогда все логично получается