Вот совсем по честному без использование выделяемой памяти(по сути массива) - компилятор стековые переменные укладывает рядом.
int cur = 0;
int max = 0;
push 0x0008 ; пушаем адрес строки "%d"
push 0x0000 ; пушаем адрес cur
call scanf ; вызываем сканф
mov eax,max ; запихиваем max в еax
sub eax,[0x0000]; вычитаем из него cur
and eax,2147483648 ; вычисляем бит знака
not eax ; делаем инверсию
mul 4 ; высчитываем смещение для этого числа
mov [0x0000],eax ; перемещаем cur в нужную ячейку памяти
...
push 0x0008
push 0x0004
call printf
(0) Дружище, я такие задачки с ходу решал на спектруме. Имея только руководство пользователя и голову. Учился тогда, в 8 классе.
Самому-то не стыдно такое спрашивать?