Отрицательные числа хранятся в дополнительном обратном коде. Чтобы получить противоположное по знаку число, надо инвертировать все биты исходного числа, затем прибавить единицу. Пусть, например, мы имеем число 17 (00010001b). Инвертировав его, получим 11101110b. Прибавив единицу, получим 11101111b. Это и есть число -17. Переход от отрицательных к положительным числам осуществляется также (инверсия, затем прибавление единицы). То есть команда neg по результату действия аналогична последовательному выполнению not, затем inc, если не учитывать изменение флагов. Работая с числами со знаком, следует иметь ввиду, что однобайтовые числа могут быть от -128 до 127, двухбайтовые от -32768 до 32767, четырёхбайтовые (типа longint) от -2147483648 до 2147483647