Какое значение в EAX после выполнения каждой инструкции?

Я пытаюсь отследить регистр EAX через каждый фрагмент кода в программе MASM32. Мне нужна помощь с объяснением, почему это так. Вот что у меня есть:

.DATA
 alfa BYTE 96h

.CODE
 start:

 MOV EAX,0  ; move 0 to eax 
 MOV AL,alfa ; move 96h to AL, this says the value of eax is now positive 150
 MOVZX EAX,alfa ; still says EAX is 96h and value is  positive 150
 MOVSX EAX,alfa  ; says value is negative 106 and eax register is FFFFFF96

 call DumpRegs
 call WriteInt
exit
END start

я используюDumpRegs отображать регистры иWriteInt напечатать значение EAX. У меня есть несколько вопросов:

когдаMOV AL, alfa, он движетсяalfa в регистр EAX, не является ли AL 8-битным регистром? почему он это делает? ПочемуWriteInt скажете что значение +150?ЧтоMOVZX а такжеMOVSX делать?Что значитMOVZX EAX, alfa делать? Ни одно из значений не изменилось?MOVSX EAX, alfaпочему это -106 и EAX регистр FFFFFF96? Это потому, что это отрицательно?

Ответы на вопрос(1)

Ваш ответ на вопрос