Что делает этот ассемблерный код? (ТЕСТ, исключающее ИЛИ, JNZ)
1.
TEST EAX,EAX
JNZ SHORT program.00407190
2.
XOR EAX,EAX
JNZ SHORT program.00407190
Пожалуйста, поправьте меня, если я ошибаюсь. Спасибо! :)
Из моего понимания пока:
JNZ
это прыжок, если не равен нулю, он будет прыгать или нет в зависимости от того,ZF
установлен в 1 или нет. Если это 1, он не будет прыгать. Иначе оно будет прыгать.
Из моего понимания кода № 1,TEST EAX,EAX
проверим, равен ли он нулю или нет. Если оно не равно нулю (ZF
0), он перейдет на адрес 00407190.
Для кода № 2XOR EAX,EAX
установит регистр EAX в 0. Устанавливает ли он какие-либо флаги? Если нет, то какJNZ
инструкция определить прыгать или нет?
Наконец, почему люди хотят проверить, еслиEAX
0 или нет? Пожалуйста, помогите мне в более простом и подробном объяснении, я все еще начинающий.