концепт такой, в сегменте данных число + строка для вывода, мы загоняем в строку текстовый вид числа, если отрицательное - добавляем минус потом выводим само число number dw 127 num_str db 6 dup(' '), 10, 13, '$' ; тут 6 - количество позиций под число ...... lea di, num_str+5 ; разрядность системы исчисления, у нас - десятичная :) mov bx, 10 mov ax, number cmp ax, 0 jge plus ; еси отрицательное - сделаем положительным neg ax plus: xor dx, dx div bx add dl, 30h mov [di], dl dec di cmp ax, 0 ; у нас еще есть что-то в ax, это еще одна цифра! надо опять загнать ее в строку jnz plus ; ничо нету, проверим, отрицательное ли число? cmp number, 0 jge m1 ; отрицательное - добавим минус вперед mov byte ptr [di], '-' ; выводим строчку m1: mov ah, 9 lea dx, num_str int 21h