Где нег хранит обратный номер? - PullRequest
0 голосов
/ 06 апреля 2020

Я читаю книгу о сборке x86 на ассемблере FASM, и вводится следующее предложение:

neg вычитает целочисленный операнд со знаком из нуля. Эффект этой инструкции состоит в том, чтобы изменить знак операнда с положительного на отрицательный или с отрицательного на положительный.

Он вычитает операнд из 0, поэтому, если у меня 6, (0-6=-6) и если у меня есть -6 (0-(-6)=6)

Теперь, где он сохраняет обратное число? В данном операнде? Об этом больше не говорится в книге, поэтому мне интересно, какова ее цель, если мы не можем ее сохранить.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2020

Я думаю, что автор книги предположил, что было очевидно, что она где-то хранилась, и единственное логическое место - обратно в данный операнд, как IN C / DE C и NOT.

Как вы говорите, это не имело бы большого смысла, если бы оно нигде не хранилось.

И ваша книга, вероятно, не пытается быть справочным руководством по ISA; Intel и AMD публикуют sh те (бесплатно в формате PDF), и вы должны проконсультироваться с ними в любое время, когда вы не уверены в чем-то подобном.

См. { ссылка } для ссылок на документы.

4 голосов
/ 06 апреля 2020

Да, в данном операнде. Вы можете видеть, что в инструкции Intel x86 :

NEG

Заменяет значение операнда (операнда назначения) на дополнение к двум. (Эта операция эквивалентна вычитанию операнда из 0.) Операнд-адресат находится в регистре общего назначения или в ячейке памяти

1 голос
/ 06 апреля 2020

Да, место назначения совпадает.

Это также может быть ячейка памяти.

...