Какое значение имеет EDX после логических инструкций NEG и AND? - PullRequest
0 голосов
/ 18 мая 2019

Я решаю один из вопросов на ассемблере и наткнулся на один с логическим аспектом.То, что заставляет меня задуматься, это то, что после изменения системы счисления с HEX на BIN и выполнения отрицания и операций AND я получил ответ, отличный от другого человека (с которым я не могу связаться).

MOV eax, 0f0f0f0f0h;
MOV edx, 87654321h;
NOT ax;
INC dx;
AND edx, eax;

Я быложидая, что результат будет таким: 80604020h, который является одним из ответов, но другой человек принял решение и ответил: 80600302h, который для меня не имеет смысла после выполнения математики.Я все еще новичок в сборке, поэтому я не могу знать, что не так, кто-то может объяснить, что не так с моим ответом, или это правильный ответ?

1 Ответ

2 голосов
/ 18 мая 2019

Давайте возьмем эту инструкцию за раз. NOT ax изменит EAX с

0F0F0F0F0

до

0F0F00F0F

, поскольку AX - это младшие 16 битов EAX. Тогда INC dx изменит EDX с

 87654321

до

 87654322

Инструкция AND edx,eax затем объединит их

 0F0F00F0F
& 87654322
= 80600302

Что делает ответ вашего друга правильным.

Если бы инструкция NOT была NOT EAX, то ответ был бы 07050302.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...