Какое значение в 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? Это потому, что это отрицательно?