Странные результаты с MOVZWL,% AX и отрицательными значениями

Хорошо, поэтому я имею дело со следующим фрагментом кода:

push   %ebp
mov    %esp,%ebp   
push   %ebx
mov    0x8(%ebp),%eax 
movzwl %ax,%edx

так что это ведет себя как Ожидается при работе с положительными ценностями. Значение, скопированное в% EDX, является трейлинг 16 битов% EAX (или% топора).

Однако, если вы поместите отрицательный номер, все начинает странно, и, похоже, не ведет себя как ожидалось.

Например, если значение% EAX составляет -67043552, то значение, скопированное в% EDX, составляет 65312.

Я довольно новичок в сборке, извините, если это очевидное неправильное толкование в моей части. Любая помощь была бы очень ценится.

5
задан Peter Cordes 16 June 2016 в 08:16
поделиться